00001 /****************************************************************************** 00002 * 00003 * \file mi32/sml.h 00004 * \brief SML -- Spatial Manipulation Language 00005 * 00006 * SML is used in TNTmips for both a scripting language and for database 00007 * query operations. 00008 * 00009 * \if NODOC 00010 * $Log: sml.h_v $ 00011 * Revision 1.503 2006/02/08 21:04:53 dwilliss 00012 * fixed to compile with g++ 4.0 00013 * 00014 * Revision 1.502 2005/12/09 21:08:29 drb 00015 * Added SMLENCODINGDATA class as partial implementation of SMLEDITOR class 00016 * to use for passing encoding data around 00017 * 00018 * Revision 1.501 2005/10/26 17:39:39 drb 00019 * Added m_SequenceNum and method to SMLELEMDATA 00020 * 00021 * Revision 1.500 2005/08/02 17:38:39 mju 00022 * Add classname_unit. 00023 * 00024 * Revision 1.499 2005/06/30 19:28:23 dwilliss 00025 * added a qflag 00026 * 00027 * Revision 1.498 2005/06/27 15:27:45 dwilliss 00028 * added a static member to autoclass 00029 * 00030 * Revision 1.497 2005/06/17 14:07:21 dwilliss 00031 * QTYPE_MISTRING 00032 * 00033 * Revision 1.496 2005/06/17 13:58:59 dwilliss 00034 * added a comment 00035 * 00036 * Revision 1.495 2005/06/10 17:46:54 dwilliss 00037 * Added new style for const reff 00038 * 00039 * Revision 1.494 2005/06/09 19:49:52 dwilliss 00040 * Added a couple prototypes 00041 * 00042 * Revision 1.493 2005/05/16 17:31:21 dwilliss 00043 * deprecated a couple methods 00044 * 00045 * Revision 1.492 2005/04/18 17:53:29 mju 00046 * Add classname_contrast. 00047 * 00048 * Revision 1.491 2005/04/01 20:53:37 dwilliss 00049 * added a private method to rasterobj 00050 * 00051 * Revision 1.490 2005/04/01 20:04:16 dwilliss 00052 * Added a member to SMLOBJECT 00053 * 00054 * Revision 1.489 2005/03/31 16:57:21 fileserver!dwilliss 00055 * Rename one of our types to MIUNICODE because it conflicted with a Microsoft #define 00056 * 00057 * Revision 1.488 2005/03/25 18:42:56 dwilliss 00058 * *** empty log message *** 00059 * 00060 * Revision 1.487 2005/03/22 17:41:43 dwilliss 00061 * Keep track of raster null masks 00062 * 00063 * Revision 1.486 2005/03/02 15:18:43 dwilliss 00064 * Added a SetObjItem method to SMLOBJECT 00065 * 00066 * Revision 1.485 2005/02/23 22:54:28 dwilliss 00067 * SMLOBJECT now contains an OBJITEM 00068 * 00069 * Revision 1.484 2005/02/08 15:48:26 dwilliss 00070 * changed status context stored in SMLCONTEXT to be a pointer to the newer 00071 * class, not the old pointer to opaque structure 00072 * 00073 * Revision 1.483 2005/02/03 22:11:04 dwilliss 00074 * Change Get/SetHistInfo to use RVC::IAMGE::STATISTICS instead of old struct 00075 * Whacked previously doomed methods 00076 * 00077 * Revision 1.482 2005/02/01 17:23:01 dwilliss 00078 * Added SetHistInfo method. 00079 * deprecated other methods 00080 * 00081 * Revision 1.481 2005/01/17 14:09:16 mju 00082 * Add stringAlloc using strutf8 to avoid ambiguity. 00083 * 00084 * Revision 1.480 2005/01/14 18:31:07 mju 00085 * Add stringAlloc using mistring. 00086 * 00087 * Revision 1.479 2005/01/07 15:21:59 mju 00088 * Include cryto hdr as not in rvcdefns anymore. 00089 * 00090 * Revision 1.478 2004/11/16 23:49:03 dglasser 00091 * Added func to close query windows. 00092 * 00093 * Revision 1.477 2004/11/12 23:24:05 dwilliss 00094 * *** empty log message *** 00095 * 00096 * Revision 1.476 2004/11/03 23:16:27 dglasser 00097 * Added a function to get at any old alias name by new name and index. 00098 * 00099 * Revision 1.475 2004/10/13 15:45:09 dwilliss 00100 * Starting adding generic container base class, but then ifdef'd it out 00101 * cause it isn't done yet 00102 * 00103 * Revision 1.474 2004/10/04 18:11:44 vdronov 00104 * *** empty log message *** 00105 * 00106 * Revision 1.473 2004/10/01 22:47:49 vdronov 00107 * added TRANSMODEL 00108 * 00109 * Revision 1.472 2004/10/01 16:31:39 dwilliss 00110 * Added a member to context 00111 * 00112 * Revision 1.471 2004/09/30 21:57:42 vdronov 00113 * added CTRLEDGE and CTRLPOINT names 00114 * 00115 * Revision 1.470 2004/09/30 21:53:58 dwilliss 00116 * got rid of some old deprecated stuff 00117 * 00118 * Revision 1.469 2004/09/29 22:12:27 vdronov 00119 * added RVC_GEOREFERENCE 00120 * 00121 * Revision 1.468 2004/09/28 17:33:24 dglasser 00122 * added hatch pattern. 00123 * 00124 * Revision 1.467 2004/09/21 22:19:39 dwilliss 00125 * Removed prototype for retired method 00126 * 00127 * Revision 1.466 2004/09/21 15:52:12 dglasser 00128 * Added SMLrasterObject methods to access info members. 00129 * 00130 * Revision 1.465 2004/09/15 19:53:08 scowan 00131 * Changed just so that the build machine will get it. 00132 * 00133 * Revision 1.464 2004/09/15 19:19:28 dwilliss 00134 * SMLHASH needed to be exported 00135 * 00136 * Revision 1.463 2004/09/15 17:18:25 dwilliss 00137 * oops, needs to be methods returning SMLCLASSHASH, not SMLHASH 00138 * 00139 * Revision 1.462 2004/09/15 17:11:41 dwilliss 00140 * added AddMethodOld version for methods returning SMLHASH 00141 * 00142 * Revision 1.461 2004/09/07 13:34:01 dwilliss 00143 * added a classname define 00144 * 00145 * Revision 1.460 2004/09/03 17:03:38 dwilliss 00146 * new classname macro 00147 * 00148 * Revision 1.459 2004/09/01 22:43:55 dwilliss 00149 * Removed some stuff that's been deprecated for a while 00150 * 00151 * Revision 1.458 2004/09/01 22:37:11 scowan 00152 * Added handle field to sml cad object. 00153 * 00154 * Revision 1.457 2004/08/27 14:45:10 dwilliss 00155 * *** empty log message *** 00156 * 00157 * Revision 1.456 2004/08/16 20:02:04 dwilliss 00158 * new class name 00159 * .; 00160 * 00161 * Revision 1.455 2004/08/09 19:11:36 dwilliss 00162 * *** empty log message *** 00163 * 00164 * Revision 1.454 2004/08/06 15:13:17 dglasser 00165 * Added function to get SML function description. 00166 * 00167 * Revision 1.453 2004/08/05 21:35:23 dwilliss 00168 * added method 00169 * 00170 * Revision 1.452 2004/08/05 20:49:16 scowan 00171 * Removed unused method. 00172 * 00173 * Revision 1.451 2004/08/05 20:35:41 dwilliss 00174 * Added some more clasname macros 00175 * 00176 * Revision 1.450 2004/07/19 19:30:59 scowan 00177 * Removed unnecessary forward declaration. 00178 * 00179 * Revision 1.449 2004/07/16 22:14:34 scowan 00180 * Removed unneeded include files. 00181 * 00182 * Revision 1.448 2004/07/14 16:05:42 dwilliss 00183 * Added to DESTOBJ flags 00184 * 00185 * Revision 1.447 2004/07/02 16:19:48 dwilliss 00186 * Added an STYPEFLAG 00187 * 00188 * Revision 1.446 2004/06/30 20:39:01 dwilliss 00189 * Added static method to allocate SMLOBJECT 00190 * 00191 * Revision 1.445 2004/06/30 19:22:53 dwilliss 00192 * Added new SMLCLASSNAME for REGION2D 00193 * 00194 * Revision 1.444 2004/06/28 17:39:15 dwilliss 00195 * Added some methods to SMLOBJECT 00196 * 00197 * Revision 1.443 2004/06/25 22:27:21 dwilliss 00198 * Changes for regions and COORDREFSYS 00199 * 00200 * Revision 1.442 2004/06/23 15:55:27 dwilliss 00201 * Added SMLSTYLEOBJECT 00202 * 00203 * Revision 1.441 2004/06/23 14:35:47 dwilliss 00204 * export SMLGEOSTRUCT now 00205 * 00206 * Revision 1.440 2004/06/22 22:02:04 dwilliss 00207 * *** empty log message *** 00208 * 00209 * Revision 1.439 2004/06/22 21:57:13 dwilliss 00210 * Oops. changed from struct to class 00211 * 00212 * Revision 1.438 2004/06/22 21:56:21 dwilliss 00213 * Changed SMLGEOSTRUCT to a real class and hid all the members. 00214 * Preparing to convert to new spatial reference 00215 * 00216 * Revision 1.437 2004/04/22 14:50:01 dwilliss 00217 * Added a member to SMLOBJECT 00218 * 00219 * Revision 1.436 2004/04/14 16:13:07 dwilliss 00220 * Added SMLSHAPEOBJECT 00221 * 00222 * Revision 1.435 2004/04/13 22:14:02 dwilliss 00223 * New methods on NUMHASH 00224 * New ResizeArray method on SMLSYMBOL that takes more parameters 00225 * 00226 * Revision 1.434 2004/04/13 15:16:37 scowan 00227 * Added shape stype. 00228 * 00229 * Revision 1.433 2004/04/09 21:10:28 dwilliss 00230 * fixed warning 00231 * 00232 * Revision 1.432 2004/04/09 14:03:46 dwilliss 00233 * Gave SMLSTRING a friend class just to shut up a VC7 warning. 00234 * 00235 * Revision 1.431 2004/04/07 20:50:05 dwilliss 00236 * added some object methods 00237 * 00238 * Revision 1.430 2004/03/29 17:49:27 dwilliss 00239 * Changes to hash classes 00240 * 00241 * Revision 1.429 2004/03/25 22:08:21 dwilliss 00242 * HASH support 00243 * 00244 * Revision 1.428 2004/03/22 16:49:34 dwilliss 00245 * Deprecated the the AddMethodOld that doesn't take an extra parameter 00246 * 00247 * Revision 1.427 2004/03/19 23:46:59 dwilliss 00248 * added AddMethodOld that takes an extra parameter to specify if return value 00249 * is allocated or not 00250 * 00251 * Revision 1.426 2004/03/18 23:06:39 dwilliss 00252 * No more way to declare a class function without specifying if it returns 00253 * a copy or a reference 00254 * 00255 * Revision 1.425 2004/03/18 00:01:55 dwilliss 00256 * changed deprecation order 00257 * 00258 * Revision 1.424 2004/03/17 23:40:07 dwilliss 00259 * *** empty log message *** 00260 * 00261 * Revision 1.423 2004/03/15 16:33:36 dwilliss 00262 * modified SMLHASH a bit 00263 * 00264 * Revision 1.422 2004/03/15 15:34:43 dwilliss 00265 * Addes SMLHASH class 00266 * 00267 * Revision 1.421 2004/03/05 15:27:43 dwilliss 00268 * SMLAUTOCLASS needs to have virtual destructor to avoid compiler warnings 00269 * in VC7 00270 * 00271 * Revision 1.420 2004/03/01 15:49:03 mju 00272 * Disable deprecated declaration warning within header itself. 00273 * 00274 * Revision 1.419 2004/02/27 20:38:37 dwilliss 00275 * *** empty log message *** 00276 * 00277 * Revision 1.418 2004/02/25 18:13:54 dwilliss 00278 * Redesign of how function calls cope with parameters. Caller has to pop 00279 * them now because only it knows if the parameter was a temporary and how 00280 * to free it if it was. 00281 * 00282 * Revision 1.417 2004/02/16 21:51:19 mju 00283 * Don't deprecate stuff that causes in-header warnings. 00284 * 00285 * Revision 1.416 2004/02/13 17:28:54 dwilliss 00286 * Added function prototype support 00287 * 00288 * Revision 1.415 2004/02/10 18:50:25 dwilliss 00289 * Added a callback reason 00290 * 00291 * Revision 1.414 2004/02/03 14:04:39 mju 00292 * Add defns for some classnames. 00293 * 00294 * Revision 1.413 2004/01/29 23:23:16 dwilliss 00295 * Added a couple new methods and removed a bunch of stuff that's been 00296 * deprecated for a while 00297 * 00298 * Revision 1.412 2004/01/29 16:29:16 mju 00299 * Don't call query editor for MFC. 00300 * 00301 * Revision 1.411 2004/01/09 18:55:08 msmith 00302 * added sig 00303 * 00304 * Revision 1.410 2004/01/07 23:52:07 scowan 00305 * Removal of unnecessary include files. 00306 * Changed to use new vector toolkit. 00307 * 00308 * Revision 1.409 2003/12/19 23:49:10 dwilliss 00309 * Deprecate some old methods 00310 * 00311 * Revision 1.408 2003/12/16 18:05:43 dwilliss 00312 * Added new autoclass for classes which have destructors but no default 00313 * constructor or copy constructor 00314 * 00315 * Revision 1.407 2003/12/11 17:59:17 dwilliss 00316 * New proto 00317 * 00318 * Revision 1.406 2003/11/26 18:46:24 msmith 00319 * added a defsig 00320 * 00321 * Revision 1.405 2003/11/26 17:53:45 dwilliss 00322 * DrawOptimizedLabels now takes an ELEMTYPE parameter 00323 * 00324 * Revision 1.404 2003/11/26 16:24:57 dwilliss 00325 * Changed some private members from int to ELEMTYPE 00326 * Added a version of CallFunction that takes an ELEMTYPE as well as elemnum 00327 * 00328 * Revision 1.403 2003/11/17 18:07:05 dwilliss 00329 * nc 00330 * 00331 * Revision 1.402 2003/11/04 18:44:50 dwilliss 00332 * *** empty log message *** 00333 * 00334 * Revision 1.401 2003/10/24 19:36:02 dwilliss 00335 * Added methods to objects to get RVC Interface class instance 00336 * 00337 * Revision 1.400 2003/10/20 16:45:18 dwilliss 00338 * Put back some methods that I had retired too early. 00339 * Turns out they were deprecated but I hadn't hidden the prototype outside 00340 * the DLL so old code still called them 00341 * 00342 * Revision 1.399 2003/10/20 15:43:47 dwilliss 00343 * Deprecated some methods 00344 * Moved some private prototypes to mi32p/dbqueryp.h 00345 * 00346 * Revision 1.398 2003/10/16 17:12:28 dwilliss 00347 * Deprecated some SMLSTRING methods. 00348 * StringAlloc no longer needs a length. 00349 * 00350 * Revision 1.397 2003/10/15 22:53:13 dwilliss 00351 * Added methods to SMLTMPSTR to eliminate need for operator overloads on 00352 * casting to (char*) and (MIUNICODE*) 00353 * 00354 * Revision 1.396 2003/10/15 22:43:22 dwilliss 00355 * SMLSTRING now derived from MISTRING 00356 * Simplifies things a LOT! 00357 * 00358 * Revision 1.395 2003/10/08 22:07:12 dwilliss 00359 * Added Get/SetFilePath to SMLOBJECT. Deprecated the Get/SetFilename methods 00360 * 00361 * Revision 1.394 2003/09/30 16:25:48 dwilliss 00362 * Doxygen fix 00363 * 00364 * Revision 1.393 2003/09/23 14:13:18 dwilliss 00365 * made SMLCONTEXT a friend of SMLELEMDATA to stop a gcc warning 00366 * 00367 * Revision 1.392 2003/09/15 13:49:56 fileserver!dwilliss 00368 * Doxygen 00369 * 00370 * Revision 1.391 2003/09/10 22:39:45 dwilliss 00371 * General cleanup 00372 * 00373 * Revision 1.390 2003/09/09 21:15:38 dwilliss 00374 * SMLSTRING had some inline methods which is BAD when exported from a DLL 00375 * 00376 * Revision 1.389 2003/09/05 17:07:50 mju 00377 * Add SMLSTRING::GetSTRUTF8 method. 00378 * 00379 * Revision 1.388 2003/08/28 22:25:04 dwilliss 00380 * Added versions of some methods that should have been taking const pointers 00381 * 00382 * Revision 1.387 2003/08/27 14:24:20 dwilliss 00383 * Added CurrentFuncitonIsClassMethod() 00384 * 00385 * Revision 1.386 2003/08/26 20:57:53 dwilliss 00386 * Added SMLCLASSNAME for viewable 00387 * 00388 * Revision 1.385 2003/08/19 17:52:13 dwilliss 00389 * Allow for name aliases 00390 * 00391 * Revision 1.384 2003/08/18 19:48:30 dwilliss 00392 * Added support for name aliases 00393 * 00394 * Revision 1.383 2003/08/12 17:58:24 dwilliss 00395 * Added a version of GetLastError that doesn't take any string. We let the 00396 * normal error handling mechanism take care of it for us now 00397 * 00398 * Revision 1.382 2003/08/06 22:16:22 dwilliss 00399 * Changed LoadPlugins/UnloadPlugins to exist on all platforms, even if they 00400 * do nothing. Keep track of plugins in a simple array now 00401 * 00402 * Revision 1.381 2003/08/04 19:48:11 dwilliss 00403 * *** empty log message *** 00404 * 00405 * Revision 1.380 2003/08/04 17:03:37 dwilliss 00406 * Another method needed for debugging 00407 * 00408 * Revision 1.379 2003/08/04 16:28:28 dwilliss 00409 * Some methods needed for the SML Debugger 00410 * 00411 * Revision 1.378 2003/07/23 20:47:29 dwilliss 00412 * Added SMLCLASSMEMBER::TYPE_Enum 00413 * 00414 * Revision 1.377 2003/07/17 22:12:24 dwilliss 00415 * *** empty log message *** 00416 * 00417 * Revision 1.376 2003/07/17 15:40:04 dwilliss 00418 * Get rid of ElemList from SMLOBJECT. Nothing seemed to use it and it's 00419 * going to be replaced soon anyway 00420 * 00421 * Revision 1.375 2003/07/17 15:13:02 dwilliss 00422 * *** empty log message *** 00423 * 00424 * Revision 1.374 2003/07/17 14:05:51 dwilliss 00425 * Added a proto. Fixed the debug class 00426 * 00427 * Revision 1.373 2003/06/30 21:02:55 dwilliss 00428 * const change in private function 00429 * 00430 * Revision 1.372 2003/06/25 15:29:33 dwilliss 00431 * Added MISTRING versions of List and ListLine 00432 * 00433 * Revision 1.371 2003/06/14 02:10:21 scowan 00434 * Changed use of dregion to a trans2d mapgen. 00435 * 00436 * Revision 1.370 2003/06/03 17:08:27 dwilliss 00437 * Added an AddMethodOldCB. 00438 * 00439 * Revision 1.369 2003/06/02 20:08:44 dwilliss 00440 * Added stuff for OLE 00441 * 00442 * Revision 1.368 2003/05/30 17:09:07 dwilliss 00443 * OLE additions (private) 00444 * 00445 * Revision 1.367 2003/05/09 20:19:40 dwilliss 00446 * Added private class and methods to context 00447 * 00448 * Revision 1.366 2003/05/06 21:25:57 dwilliss 00449 * **DELETED** 00450 * 00451 * Revision 1.365 2003/05/01 16:25:02 dwilliss 00452 * Added changes from tnt68 version back into DV. 00453 * 00454 * Revision 1.364 2003/04/23 21:59:07 mju 00455 * Remove some obsolete "main" funcs. 00456 * Add default flags for one Main func and elimate 'Ext' version. 00457 * 00458 * Revision 1.363 2003/03/06 17:05:37 dwilliss 00459 * Gave SMLELEMDATA some private methods 00460 * 00461 * Revision 1.362 2003/03/06 16:33:32 dwilliss 00462 * Added a couple bools to SMLELEMDATA to keep track of undo state 00463 * 00464 * Revision 1.361 2003/02/28 16:46:24 dwilliss 00465 * Deprecated a bunch of non-const methods. 00466 * Made a version of SetArgError that takes a non-const string, deprecated 00467 * the old one. 00468 * 00469 * Revision 1.360 2003/02/20 17:10:05 dwilliss 00470 * Added private members to context for parsing 00471 * 00472 * Revision 1.359 2003/02/19 21:40:20 dwilliss 00473 * Added a new private method to context 00474 * 00475 * Revision 1.358 2003/01/20 16:46:57 dwilliss 00476 * Can't use _T for template argument because MFC #defines it to char* 00477 * Thank-you Microsoft! 00478 * 00479 * Revision 1.357 2003/01/15 23:20:19 dwilliss 00480 * mostly comment changes 00481 * 00482 * Revision 1.356 2003/01/15 17:14:29 dwilliss 00483 * Added SMLAUTOCLASS_NEW_NOCOPY_T 00484 * 00485 * Revision 1.355 2002/12/09 17:14:10 scowan 00486 * Changed init from db handle method and added member to sml elem data. 00487 * 00488 * Revision 1.352 2002/12/02 18:07:53 dwilliss 00489 * Put it back. Just reverse two parameters to avoid ambiguious overload 00490 * 00491 * Revision 1.351 2002/12/02 17:54:54 dwilliss 00492 * Ifdef'd out one of the SMLFUNCDEF constructors. Seems to be confusing 00493 * VC6.0 00494 * 00495 * Revision 1.350 2002/11/27 23:27:26 dwilliss 00496 * Added an SMLFUNCDEF structure which provided constructors for SMLFUNC in a 00497 * type-safe way. 00498 * Deprecated the old inline methods that tried to do the same thing because 00499 * gcc 3.1 chokes on them. 00500 * 00501 * Revision 1.349 2002/11/27 22:01:06 dwilliss 00502 * Added experimental SMLFUNCVOID to provide better way to define these things 00503 * in a type-safe way. 00504 * 00505 * Revision 1.348 2002/11/20 17:24:26 dwilliss 00506 * Added SetStrictSyntax method 00507 * 00508 * Revision 1.347 2002/11/20 17:17:25 dwilliss 00509 * Added method for adding parser warnings 00510 * 00511 * Revision 1.346 2002/11/13 17:11:36 dwilliss 00512 * SMLELEMDATA now has constructor/destructor 00513 * 00514 * Revision 1.345 2002/10/08 16:43:46 dwilliss 00515 * Deprecated a couple methods that took non-const strings 00516 * 00517 * Revision 1.343 2002/10/01 16:39:34 dwilliss 00518 * Defined a new flag for SMLCONTEXT::Run() 00519 * 00520 * Revision 1.341 2002/09/10 20:47:11 dwilliss 00521 * Decided not to deprecate a macro yet. 00522 * 00523 * Revision 1.340 2002/09/10 20:45:15 dwilliss 00524 * SMLFUNCDEF macros no longer fill in description. 00525 * 00526 * Revision 1.339 2002/09/10 17:56:00 dwilliss 00527 * Oops. Tried to prototype an overload of a function with C linkage 00528 * 00529 * Revision 1.338 2002/09/10 17:51:24 dwilliss 00530 * Clean up after deprecated stuff fixed. Some stuff that was deprecated 00531 * before can just go away now 00532 * 00533 * Revision 1.337 2002/09/09 17:08:28 mju 00534 * Remove deprecated #defines and inlines. 00535 * Retire exported fns/methods with comment as to when can remove. 00536 * 00537 * Revision 1.336 2002/09/09 15:51:39 mju 00538 * Remove previously retired seterrorcode fns/method. 00539 * 00540 * Revision 1.335 2002/09/06 21:52:55 dwilliss 00541 * Added Open/CloseDatabase methods to SMLELEMDATA. Deprecated 00542 * SMLELEMDATA::SetHandle(), as it has been deemed "evil" 00543 * 00544 * Revision 1.334 2002/09/03 22:38:22 dwilliss 00545 * Deprecate stuff 00546 * 00547 * Revision 1.333 2002/08/28 22:44:00 dwilliss 00548 * Added some methods to get/set segment node 00549 * 00550 * Revision 1.332 2002/08/19 15:13:35 dwilliss 00551 * Got rid of some new warnings generated by gcc 3.1 00552 * 00553 * Revision 1.331 2002/08/16 21:04:35 dwilliss 00554 * Added XML document hooks to context 00555 * 00556 * Revision 1.330 2002/07/30 19:04:55 dwilliss 00557 * Use 0 instead of NULL for default parm 00558 * 00559 * Revision 1.329 2002/07/16 19:26:46 dwilliss 00560 * Added a GetFuncGroup method to SMLFUNC 00561 * 00562 * Revision 1.328 2002/06/07 21:28:14 dwilliss 00563 * Changed a private function to take const FIELPATH insteadh of MIUNICODE* 00564 * 00565 * Revision 1.327 2002/06/05 21:10:49 dwilliss 00566 * Added GetFieldType method to SMLSYMBOL' 00567 * 00568 * Revision 1.326 2002/06/03 16:20:55 dwilliss 00569 * Added SIG value for void function taking 4 doubles 00570 * 00571 * Revision 1.325 2002/05/16 16:15:39 dwilliss 00572 * force SMLSYMBOL members to be private for tonights build so I can make 00573 * sure I didn't miss anybody using them illegally. 00574 * 00575 * Revision 1.324 2002/05/16 16:08:33 dwilliss 00576 * Oops. left SMLSYMBOL members private. 00577 * Now only private if compiling for no deprecated (and not for rvcsys) 00578 * 00579 * Revision 1.323 2002/05/16 15:59:47 dwilliss 00580 * Added a few more methods to access stuff in SMLSYMBOL 00581 * 00582 * Revision 1.322 2002/05/16 14:20:07 dwilliss 00583 * Deprecate the old GetValue 00584 * 00585 * Revision 1.321 2002/05/16 14:12:26 dwilliss 00586 * Get rid of default value on one method. Causes ambiguious function 00587 * because we just added a new function taking just an MISTRING and returning 00588 * bool instead of void 00589 * 00590 * Revision 1.320 2002/05/16 14:02:13 dwilliss 00591 * Added two new GetValue methods to SMLSYMBOL 00592 * 00593 * Revision 1.319 2002/05/15 22:57:18 dwilliss 00594 * Deprecated FastSymbol inlines 00595 * Added some SMLSYMBOL method to access members that were previously being 00596 * accessed directly. Plan to make all members private as of 6.7 00597 * 00598 * Revision 1.318 2002/04/26 22:20:52 dwilliss 00599 * DBQuery_LineStyleSetPoints() should take const pointer 00600 * 00601 * Revision 1.317 2002/04/19 14:20:10 dwilliss 00602 * Fixed compiler warning about function pointer typedef 00603 * 00604 * Revision 1.316 2002/04/16 19:12:47 dwilliss 00605 * Mac compile error 00606 * 00607 * Revision 1.315 2002/04/16 17:29:45 mju 00608 * Parms changed to query_setupdraw. 00609 * 00610 * Revision 1.312 2002/04/05 17:42:53 dwilliss 00611 * Clean up error handling. Eliminate use of varargs SetErrCode 00612 * 00613 * Revision 1.311 2002/04/05 15:04:10 mju 00614 * Deprecate SetErrorCodeC. 00615 * 00616 * Revision 1.307 2002/03/28 22:28:08 dwilliss 00617 * Gave SMLCLASSMEMBER a TYPE enum so I could define a new one 00618 * 00619 * Revision 1.306 2002/03/26 21:44:29 dwilliss 00620 * SMLSTRING.SetString() now takes const pointers. non-const versions still 00621 * defined but prototype only available in rvcsys.dll 00622 * 00623 * Revision 1.303 2002/03/25 20:17:13 dwilliss 00624 * SMLAUTOCLASS now has AddMethodOld() for functions returning strings 00625 * SMLAUTOCLASS now has AddMember() 00626 * 00627 * Revision 1.302 2002/03/01 18:45:39 dwilliss 00628 * GeorefAlloc and Copy now have flags to allow allocation in temp heap 00629 * 00630 * Revision 1.301 2002/02/25 21:09:40 dwilliss 00631 * Added a PrevTableSym member to context 00632 * 00633 * Revision 1.300 2002/02/19 17:07:05 dwilliss 00634 * Internal print buffer is now MISTRING 00635 * 00636 * Revision 1.299 2002/02/12 18:19:31 dwilliss 00637 * context now keeps track of what things its warned about so as to not repeat 00638 * itself. 00639 * 00640 * Revision 1.298 2002/01/30 17:22:04 dwilliss 00641 * Added StrictSyntax member to context 00642 * 00643 * Revision 1.297 2001/12/28 18:10:39 dwilliss 00644 * A few new DOCCODE methods 00645 * 00646 * Revision 1.296 2001/12/27 17:14:56 dwilliss 00647 * Now has real constructor/destructor. Still private though. You have 00648 * to use functions to allocate an SMLCONTEXT, and use the Destroy() method 00649 * to delete it. 00650 * 00651 * Revision 1.294 2001/12/26 22:58:53 dwilliss 00652 * Mike and I changed our minds on the DEPRICATED thing. It's now a constant 00653 * to say when the feature will be RETIRED. If it's set, it's considered 00654 * to be deprecated now 00655 * 00656 * Revision 1.293 2001/12/26 22:35:35 dwilliss 00657 * Ok, so I spelled DEPRECATED wrong. That's what spell check is for! 00658 * 00659 * Revision 1.292 2001/12/26 22:31:35 dwilliss 00660 * Defined an SML_DEPRICATED constant 00661 * 00662 * Revision 1.291 2001/12/21 00:02:20 dwilliss 00663 * added funcgroup to SMLFUNC 00664 * 00665 * Revision 1.290 2001/12/19 21:37:21 dwilliss 00666 * AutoClass stuff works now 00667 * 00668 * Revision 1.289 2001/12/19 15:12:58 dwilliss 00669 * Got rid of typedef that gcc didn't like. Wasn't using it any way 00670 * 00671 * Revision 1.288 2001/12/18 21:01:31 dwilliss 00672 * More AutoClass changes 00673 * 00674 * Revision 1.287 2001/12/17 15:28:17 dwilliss 00675 * SMLAUTOCLASS setup function doesn't need to take an SMLCONTEXT 00676 * 00677 * Revision 1.286 2001/12/14 22:43:02 dwilliss 00678 * Autoclass stuff more solidified 00679 * 00680 * Revision 1.285 2001/12/14 20:16:34 dwilliss 00681 * Added SMLAUTOCLASS 00682 * 00683 * Revision 1.282 2001/12/10 21:46:39 dwilliss 00684 * Major changes to documentation code 00685 * 00686 * Revision 1.281 2001/10/04 19:40:18 dwilliss 00687 * inline functions for defining function returning class was marking them 00688 * as classes, not as functions returning class. 00689 * 00690 * Revision 1.280 2001/10/04 17:30:20 dwilliss 00691 * Some new prototypes 00692 * 00693 * Revision 1.279 2001/09/19 22:27:58 dwilliss 00694 * Added prototype for MFC query editor 00695 * 00696 * Revision 1.278 2001/08/08 22:42:11 dwilliss 00697 * Added a protected member to SMLCONTEXT 00698 * 00699 * Revision 1.277 2001/07/06 15:44:29 mju 00700 * Add DEFINE_SMLCLASS_AUTO macro. 00701 * 00702 * Revision 1.276 2001/05/21 17:01:02 dwilliss 00703 * Change CopyConstructor 00704 * 00705 * Revision 1.275 2001/02/15 21:54:35 dwilliss 00706 * deprecate an old function 00707 * 00708 * Revision 1.274 2001/02/15 21:49:54 dwilliss 00709 * proto for DBQuery_EditMISTRING 00710 * 00711 * Revision 1.273 2001/02/01 17:58:20 dwilliss 00712 * Added new Func def macro for functions returning class which we have to 00713 * name differently than SML wants 00714 * Added encoding conversion to SMLFILE 00715 * 00716 * Revision 1.272 2001/01/25 23:04:18 dwilliss 00717 * Deprecate use of SMLSTRING constructor/destructor 00718 * 00719 * Revision 1.270 2001/01/18 16:58:56 dwilliss 00720 * Added MemPool methods to context 00721 * 00722 * Revision 1.269 2001/01/17 23:50:51 dwilliss 00723 * Clean up strings a bit 00724 * 00725 * Revision 1.268 2001/01/16 22:54:07 dwilliss 00726 * Change all bit-field things to bool values 00727 * 00728 * Revision 1.267 2001/01/16 18:53:31 dwilliss 00729 * Changed the way USERDATA is done so that it can be added to both 00730 * strings and symbols 00731 * 00732 * Revision 1.266 2000/12/13 17:48:19 dwilliss 00733 * Changed two spare bytes in SMLGEOSTRUCT to "Model" 00734 * 00735 * Revision 1.265 2000/11/22 22:23:13 dwilliss 00736 * Added format to GetValue() method that I just added last revision 00737 * 00738 * Revision 1.264 2000/11/22 22:12:10 dwilliss 00739 * Added GetValue method to SMLSYMBOL taking an MISTRING to fill int 00740 * 00741 * Revision 1.263 2000/10/31 16:50:50 mju 00742 * Add const versions of AddObjectSymbol. 00743 * 00744 * Revision 1.262 2000/10/26 16:01:28 mju 00745 * Add defaults for GetLastError. 00746 * 00747 * Revision 1.261 2000/10/13 16:35:14 dwilliss 00748 * changed a class back to struct 00749 * 00750 * Revision 1.260 2000/10/13 14:33:00 dwilliss 00751 * When delaring friends, must specify friend class NAME, not just friend NAME 00752 * 00753 * Revision 1.259 2000/09/13 15:03:08 dwilliss 00754 * I forgot, Macs don't export class methods the same way everybody else does. 00755 * Gotta do something special just for them. 00756 * 00757 * Revision 1.258 2000/09/12 21:16:43 dwilliss 00758 * new qflag 00759 * 00760 * Revision 1.257 2000/09/08 20:27:27 dwilliss 00761 * Defined new QFLAG 00762 * 00763 * Revision 1.256 2000/09/07 22:05:58 dwilliss 00764 * Added several new methods to SMLELEMDATA and SMLTABLE 00765 * 00766 * Revision 1.255 2000/08/31 15:04:43 mju 00767 * Add default for 'flags' in Parse() method. 00768 * 00769 * Revision 1.253 2000/08/29 20:10:33 dwilliss 00770 * Added case senssitive flag to context 00771 * 00772 * Revision 1.251 2000/08/11 20:17:49 mju 00773 * Add context::setsegment(). 00774 * 00775 * Revision 1.250 2000/07/17 17:42:30 mju 00776 * Add const-name versions of AddSymbol and AddClassSymbol. 00777 * 00778 * Revision 1.249 2000/06/21 17:25:32 dwilliss 00779 * Changed object list to keep track of own head/tail, prev/next rather than 00780 * using MLIST. MLIST assumes you can make the first element of the 00781 * structure a LINKEDLISTNODE, but if you have a vtable, you can't 00782 * 00783 * Revision 1.248 2000/06/13 20:59:38 dwilliss 00784 * Added USERDATA to SMLSTRING 00785 * 00786 * Revision 1.247 2000/06/09 14:21:30 mju 00787 * Add context::parse() method using const string. 00788 * 00789 * Revision 1.246 2000/06/05 14:09:06 mju 00790 * Add SMLSYMBOL::SetValue methods using const strings. 00791 * 00792 * Revision 1.245 2000/06/05 13:50:47 mju 00793 * Remove evil inclusion order dependencies. 00794 * Add SML_EditScript() inline. 00795 * 00796 * Revision 1.244 2000/05/26 19:26:09 mju 00797 * Add SML_ReadScript() using MISTRING. 00798 * 00799 * Revision 1.242 2000/05/26 15:19:48 dwilliss 00800 * Added SMLCONTEXT::CallbackAddGlobal() and reasons 00801 * 00802 * Revision 1.241 2000/05/24 22:11:21 mju 00803 * Add inlines/macros for defining various types of functions. 00804 * Change DEFINE_SMLCLASS_SIMPLE to take classname. 00805 * Remove ...FUNCDEFEXT and adjust other macros accordingly. 00806 * Add SMLCLASSWriteTableObj prototype. 00807 * 00808 * Revision 1.240 2000/05/19 22:18:40 mju 00809 * Add SMLCLASSNAME #defines. 00810 * 00811 * Revision 1.239 2000/05/17 22:27:26 dwilliss 00812 * More doc issues 00813 * 00814 * Revision 1.238 2000/05/17 17:37:02 dwilliss 00815 * More documentation 00816 * 00817 * Revision 1.237 2000/05/17 15:59:59 dwilliss 00818 * More documentation updates. 00819 * Added StringAlloc methods to SMLCONTEXT so that SMLSTRING's constructors 00820 * can become private (some day) 00821 * SMLTABLEDATA now has some exported methods (data still opaque) 00822 * 00823 * Revision 1.236 2000/05/17 14:44:08 mju 00824 * In _SML_ReadScript use const for filename. 00825 * Add SML_ReadScript() inline overload that uses FILEPATH and rearranges parms to allow most to have defaults. 00826 * Add default for element parm in CONTEXT::CallFunction(). 00827 * 00828 * Revision 1.235 2000/05/16 20:33:04 dwilliss 00829 * Added ReadElement method to CAD 00830 * 00831 * Revision 1.234 2000/05/12 19:59:45 dwilliss 00832 * Fixed ignore/End comments 00833 * 00834 * Revision 1.231 2000/04/28 21:42:27 dwilliss 00835 * More documentation 00836 * 00837 * Revision 1.230 2000/04/28 20:37:47 dwilliss 00838 * Put extern "C" around some prototypes that I had moved 00839 * 00840 * Revision 1.229 2000/04/28 17:49:23 dwilliss 00841 * Massive changes that were waiting until after 6.3 went out the door 00842 * 00843 * Revision 1.227 2000/03/07 20:41:23 dwilliss 00844 * More methods on context 00845 * 00846 * Revision 1.226 2000/03/01 20:32:15 dwilliss 00847 * Added GeorefCopy() method to context 00848 * 00849 * Revision 1.225 2000/02/25 20:50:15 dwilliss 00850 * Oops. Added IsDirty method to the wrong class. 00851 * 00852 * Revision 1.224 2000/02/25 20:46:24 dwilliss 00853 * Added IsDirty to SMLOBJECT 00854 * 00855 * Revision 1.222 1999/12/08 23:26:00 mju 00856 * Add macros for creating C++ class definitions. 00857 * 00858 * Revision 1.221 1999/12/06 17:27:01 mju 00859 * Use const filename. 00860 * 00861 * Revision 1.220 1999/11/22 17:48:29 scowan 00862 * More const. 00863 * 00864 * Revision 1.219 1999/11/19 23:20:03 dwilliss 00865 * More comments for documentation. 00866 * Made some members of classes const pointers 00867 * 00868 * Revision 1.214 1999/11/18 16:41:26 dwilliss 00869 * Added constptr member to SMLARG 00870 * 00871 * Revision 1.209 1999/10/13 17:49:09 dwilliss 00872 * All members of SMLOBJECT and SMLELEMDATA are private outside of rvcapp.dll 00873 * now. Must use methods to access them. (Post 6.2 release) 00874 * 00875 * Revision 1.208 1999/10/08 22:03:58 dwilson 00876 * make info a struct in SMLOBJECT 00877 * 00878 * Revision 1.203 1999/09/17 17:15:59 dwilliss 00879 * Added AddClassSymbol() 00880 * 00881 * Revision 1.202 1999/09/17 15:35:20 dwilliss 00882 * Added prototypes for plugin init/stop functions 00883 * 00884 * Revision 1.196 1999/09/03 22:21:30 dwilliss 00885 * Protos for two flavors of SetParentWidget 00886 * 00887 * Revision 1.195 1999/09/03 22:01:42 dwilliss 00888 * Took out inline method in SMLCONTEXT. Evil! 00889 * 00890 * Revision 1.194 1999/09/03 21:12:28 dwilliss 00891 * More methods on SMLCONTEXT 00892 * 00893 * Revision 1.193 1999/09/02 20:53:53 dwilliss 00894 * Added a bunch of methods to SMLCONTEXT to access members which 00895 * should be private. (Eventually they will be) 00896 * 00897 * Revision 1.190 1999/07/07 22:50:39 dwilliss 00898 * Added some things to a few of the structures 00899 * 00900 * Revision 1.189 1999/06/28 20:52:25 dwilliss 00901 * Added preprocessor stack 00902 * 00903 * Revision 1.188 1999/06/25 13:56:01 dwilliss 00904 * Got rid of a prototype that should never have been there 00905 * 00906 * Revision 1.187 1999/06/22 16:25:17 dwilson 00907 * Added Desc arg to SMLFUNCDEF2 00908 * 00909 * Revision 1.185 1999/06/18 21:11:30 dwilliss 00910 * Can't make SetString inline if the class is exported from a DLL 00911 * 00912 * Revision 1.184 1999/06/18 19:55:08 dwilliss 00913 * Oops. semicolon in wrong place 00914 * 00915 * Revision 1.183 1999/06/18 19:48:04 dwilliss 00916 * addes SetString methods to SMLSTRING 00917 * 00918 * Revision 1.182 1999/06/11 15:53:55 dwilliss 00919 * Added some more macros for class/function defn's 00920 * 00921 * Revision 1.181 1999/06/09 16:10:11 mju 00922 * Use WIN32 instead of WIn95. 00923 * 00924 * Revision 1.180 1999/05/27 15:15:15 mju 00925 * Include rvcgref as used in many SML modules. 00926 * 00927 * Revision 1.179 1999/05/26 16:03:30 mju 00928 * Include various RVC object headers as need for RVC...INFO structures. 00929 * 00930 * Revision 1.178 1999/05/14 19:47:17 dwilson 00931 * #defines for sml import/export validation functions 00932 * 00933 * Revision 1.177 1999/05/07 21:52:54 scowan 00934 * Foward declare menu stuff. 00935 * 00936 * Revision 1.176 1999/04/30 22:34:15 dwilson 00937 * changed size of MIEFORMATSMLCLASSARRAYSIZE to 4 00938 * 00939 * Revision 1.175 1999/04/30 20:23:36 dwilson 00940 * revert to 2 (for now) 00941 * 00942 * Revision 1.174 1999/04/30 17:23:03 dwilson 00943 * changed MIEFORMATSMLCLASSARRAYSIZE to 4 00944 * 00945 * Revision 1.173 1999/04/28 17:40:24 mju 00946 * Include dispinfo.h. 00947 * 00948 * Revision 1.167 1999/04/08 14:31:39 mju 00949 * Use inclusion guards around every #include statement. 00950 * 00951 * Revision 1.166 1999/04/07 19:39:33 dwilliss 00952 * added flag for WIN32_Native 00953 * 00954 * Revision 1.164 1999/04/07 16:11:02 dwilliss 00955 * Added a flag to classes to indicate WIN32_NATIVE availability 00956 * Wrote a macro to define classes not available in win32 native 00957 * 00958 * Revision 1.163 1999/03/22 18:18:24 dwilliss 00959 * Added some members to SMLFILEINFO to keep track of poll callback 00960 * 00961 * Revision 1.162 1999/03/17 22:35:42 dwilson 00962 * sml imp/exp constant added 00963 * 00964 * Revision 1.161 1999/03/12 17:00:07 dwilliss 00965 * Change SML macro so we can move installer function to different module 00966 * 00967 * Revision 1.160 1999/03/10 21:01:17 dwilson 00968 * func prototypes for sml import/export 00969 * 00970 * Revision 1.158 1999/03/04 15:07:35 dwilliss 00971 * Renamed new macro so I can use it directly. Other way had problems 00972 * with preprocessor sometimes 00973 * 00974 * Revision 1.157 1999/03/03 23:05:29 dwilliss 00975 * Added a flags to smlfunc structure 00976 * 00977 * Revision 1.156 1999/02/18 22:59:39 dwilliss 00978 * SMLCLASS constructors behave more like C++ constructors now 00979 * 00980 * Revision 1.155 1999/02/18 20:14:55 dwilliss 00981 * Special way to export classes on the Mac 00982 * 00983 * Revision 1.154 1999/02/18 16:00:58 dwilliss 00984 * RVCAPPCLASSEXPORT now defined in rvcdefns.h, not here 00985 * 00986 * Revision 1.151 1999/02/16 22:49:01 dwilliss 00987 * temp define a constructor for SMLSTRING which takes a (struct _SMLCONTEXT *) 00988 * because programs compiled last week need it. 00989 * 00990 * Revision 1.150 1999/02/16 17:32:00 dwilliss 00991 * Major changes. Moved a gob of stuff out of dbqueryp.h to here 00992 * 00993 * Revision 1.148 1999/02/05 15:02:53 dwilliss 00994 * IND is no longer an extern double. It's a #define in ieeefp.h 00995 * Also simplified ISIND and ISINF to use the macros defined 00996 * in ieeefp.h 00997 * 00998 * Revision 1.147 1999/02/03 23:58:25 dwilliss 00999 * Major changes to SMLSTRING 01000 * 01001 * Revision 1.146 1999/01/05 19:13:42 scowan 01002 * Swapped multiple keywords 01003 * 01004 * 01005 ******************************************************************************* 01006 * Defining built-in SML functions: 01007 * 01008 * I SML built-in functions come in 3 flavors: void, double, and string. 01009 * Functions should take 3 parameters: 01010 * 01011 * static void function(numargs, arg, argtype) 01012 * int numargs; # of arguments 01013 * SMLARG *arg; Array of arguments 01014 * UINT8 *argtype; STYPE_Xxxx -- See <mi32/dbquery.h> 01015 * 01016 * All built-in functions should be declared as static. 01017 * 01018 * II To install a group of built-in functions, do the following: 01019 * 01020 * A. For each function: 01021 * 1. Prototype the function. 01022 * 2. Define a static array of SMLPARM. 01023 * a. Give one entry for each parameter. 01024 * b. Signal the end of the array by defining a paramater 01025 * with NULL for a name. 01026 * c. If you request the type STYPE_AnyVal, you may be passed 01027 * either an STYPE_Constant or STYPE_String. Check the 01028 * argtype array in your function and use the parm accordingly. 01029 * d. If you don't care how many parameters your function gets, 01030 * name the last parameter (not counting the NULL) "..." 01031 * This will match 0 or more parameters of the type requested. 01032 * e. Some parameters can be marked as optional, but then it's 01033 * up to you to figure out which ones you got. Put optional 01034 * parameters at the end. 01035 * 01036 * B. Define a static array of SMLFUNC, one entry per function. 01037 * the type must be either STYPE_BProcedure (void function), 01038 * STYPE_Function (function returning double), or STYPE_BSFunction 01039 * (Function returning SMLSTRING). You will have to cast the 01040 * function pointer to (VOIDFUNC), or most compilers will hate you. 01041 * Signal the end of the array by defining a function with NULL as 01042 * a name. 01043 * 01044 * III In the function: 01045 * 01046 * A. Don't free anything passed to you -- ever! 01047 * B. The arg array passed is an array of unions. Use the field that 01048 * matches the type of data you requested. Rasters are passed as 01049 * symbols. 01050 * C. If you encounter an error in your function and want to halt the 01051 * SML script, call one of the following, then return: 01052 * 1. SML_SetErrorCode(int error) 01053 * Works for any error code listed in <mi32/errcodes.ref> 01054 * 2. SML_SetArgError(int error, int argnum) 01055 * Works for SML_EXxxxx errors listed below. Pass the 01056 * argument number of the offending argument. 01057 * 01058 * IV. Actual install. 01059 * A. Get the SML context (returned from SML_Init) 01060 * B. Call the following: 01061 * SML_InstallFunctions(context, class, func_list) 01062 * void *context; (returned from SML_Init) 01063 * char *class; (example: "test") 01064 * SMLFUNC *func_list; (see above) 01065 * 01066 * Function returns 0 or an error code 01067 * C. In the SML editor, the functions will be shown on the 01068 * "Symbols..." dialog in a group called (in this example) 01069 * "function_test". To make this look better, edit the 01070 * MIPS resource file and add the following line: 01071 * *function_test.labelString: My test functions 01072 * 01073 * \endif 01074 */ 01075 /*****************************************************************************/ 01076 01077 #ifndef INC_MI32_SML_H 01078 #define INC_MI32_SML_H 01079 01080 /*#undef SML_API_CONFORMANCE Can't have until I can check this include file in */ 01081 01082 #ifndef SML_API_CONFORMANCE 01083 #define SML_API_CONFORMANCE 0 01084 #endif 01085 01086 #ifndef INC_MI32_RVCCAD_H 01087 #include <mi32/rvccad.h> /* For RVCCADINFO */ 01088 #endif 01089 #ifndef INC_MI32_RVCRAST_H 01090 #include <mi32/rvcrast.h> /* For RVCRASTINFO */ 01091 #endif 01092 #ifndef INC_MI32_RVCTEXT_H 01093 #include <mi32/rvctext.h> /* For RVCTEXTINFO */ 01094 #endif 01095 #ifndef INC_MI32_RVCTIN_H 01096 #include <mi32/rvctin.h> /* For RVCTININFO */ 01097 #endif 01098 #ifndef INC_MI32_RVCVECT_H 01099 #include <mi32/rvcvect.h> /* For RVCVECTINFO */ 01100 #endif 01101 #ifndef INC_MI32_RVCDBASE_H 01102 #include <mi32/rvcdbase.h> /* For RVCVECTINFO */ 01103 #endif 01104 #ifndef INC_MI32_INIDEFNS_H 01105 #include <mi32/inidefns.h> 01106 #endif 01107 #ifndef INC_MI32_MCB_H 01108 #include <mi32/mcb.h> 01109 #endif 01110 #ifndef INC_MI32_SIMPLEAR_H 01111 #include <mi32/simplear.h> 01112 #endif 01113 #ifndef INC_MI32_MLIST_H 01114 #include <mi32/mlist.h> 01115 #endif 01116 #ifndef INC_MI32_TEXTID_H 01117 #include <mi32/textid.h> 01118 #endif 01119 #ifndef INC_MI32_IEEEFP_H 01120 #include <mi32/ieeefp.h> 01121 #endif 01122 #ifndef INC_MI32_CRYPTO_H 01123 #include <mi32/crypto.h> 01124 #endif 01125 #ifndef WIN32_NATIVE 01126 #include <X11/Intrinsic.h> 01127 #endif 01128 #ifndef INC_MI32_COLORMAP_H 01129 #include <mi32/colormap.h> 01130 #endif 01131 #ifndef INC_MI32_ELEMTYPE_H 01132 #include <mi32/elemtype.h> 01133 #endif 01134 #ifndef INC_MI32_SPATREF_H 01135 #include <mi32/spatref.h> 01136 #endif 01137 #ifndef INC_RVC_IMAGE_H 01138 #include <rvc/image.h> 01139 #endif 01140 01141 #ifdef WIN32 01142 #pragma warning (disable:4996) // Disable warning about deprecated declaration within header 01143 #endif 01144 01145 /* Forward Declarations */ 01146 struct DISPLAYINFO; 01147 struct MCRYPTOHDR; 01148 struct MENUBARITEM; 01149 struct MENUITEM; 01150 typedef void* TEHANDLE; 01151 01152 class MISTRING; 01153 class SMLHASH; 01154 class SMLCLASSHASH; 01155 class XMLDOC; 01156 class STATUSCONTEXT; 01157 01158 #ifdef WINNT 01159 #pragma warning (disable: 4018) /* '!=' : signed/unsigned mismatch */ 01160 #pragma warning (disable: 4251) //! struct needs dll-interface blah blah blah 01161 #endif 01162 01163 #ifdef GetObject 01164 //! If we've included windows.h before this, they #defined GetObject 01165 //! for us. We don't want it defined! 01166 #undef GetObject 01167 #endif 01168 01169 //! Use this for the desciption field of any member or function that you want 01170 //! the documentation to show as being Deprecated. 01171 //! The last two digits are the version in which the feature will no longer 01172 //! be guarenteed to be available. 01173 #define SML_RETIRE_IN_68 "RetireIn6.8" 01174 #define SML_RETIRE_IN_69 "RetireIn6.9" 01175 01176 /***************************************************************************/ 01177 //! definitions used by SML inport/export 01178 //! allows validation func to know what type of operation is being performed 01179 01180 #define SMLMIE_IMPORTRASTER 1 01181 #define SMLMIE_IMPORTVECTOR 2 01182 #define SMLMIE_IMPORTCAD 3 01183 #define SMLMIE_IMPORTTIN 4 01184 #define SMLMIE_IMPORTDBASE 5 01185 01186 #define SMLMIE_EXPORTRASTER 6 01187 #define SMLMIE_EXPORTVECTOR 7 01188 #define SMLMIE_EXPORTCAD 8 01189 #define SMLMIE_EXPORTTIN 9 01190 #define SMLMIE_EXPORTDBASE 10 01191 01192 01193 /***************************************************************************/ 01194 //! Forward decl'n of struct types so we can use pointers to them before 01195 //! Actually defining them 01196 01197 struct DBCALLBACKSTRUCT; 01198 struct SMLARGTYPELIST; 01199 struct SMLELEMDATA; 01200 struct SMLENUMLIST; 01201 struct SMLCLASSSTACK; 01202 struct _SMLTFREF; 01203 struct SMLCONTEXT; 01204 struct SMLSEGMENT; 01205 struct SMLSOURCEINFO; 01206 struct SMLPARSEPOS; 01207 struct SMLFLAG; 01208 struct SMLCLASS; 01209 struct SMLFUNC; 01210 struct SMLPARM; 01211 struct SMLRASTBUF; 01212 struct SMLTABLEDATA; 01213 struct SMLONEXITDATA; 01214 struct SMLMACHINEINSTRUCTION; 01215 struct SMLPREPROCESSORSTACK; 01216 class SMLEDITOR; 01217 class SMLDEBUG; 01218 class SMLPARSER; 01219 class SMLVM; 01220 class SMLMEMPOOL; 01221 class XMLNODE; 01222 01223 class SMLSYMBOL; 01224 class SMLSTRING; 01225 class DEBUGDATA; 01226 01227 #ifndef WIN32_NATIVE 01228 //! Because I need to create a prototype for a method that takes 01229 //! a CWnd even though I may not be compiling WIN32_NATIVE. 01230 class CWnd; 01231 struct _GUID; 01232 #endif 01233 01234 struct ITypeInfo; 01235 struct IDispatch; 01236 01237 class SMLOBJPROXY; 01238 01239 namespace SPATREF { 01240 class COORDREFSYS; 01241 } 01242 01243 namespace MGD { 01244 class CONTEXT; 01245 } 01246 01247 namespace RVC { 01248 class GEOREFERENCE; 01249 class OBJECT; 01250 class RASTER; 01251 class VECTOR; 01252 class CAD; 01253 class TIN; 01254 class SHAPE; 01255 class REGION; 01256 class CADHANDLE; 01257 class VECTORTOOLKIT; 01258 class VECTORHANDLE; 01259 class RASTERHANDLE; 01260 class SHAPEHANDLE; 01261 class FILEHANDLE; 01262 class STYLE; 01263 } 01264 01265 //!*************************************************************************** 01266 //! SML class names. 01267 //! 01268 //! Some existing code hard-codes the strings. These defined values should 01269 //! be used instead to avoid use of incorrect names and to make code easier 01270 //! to understand. 01271 //! 01272 //! Class names in SML are case-insensitive. The convention is to make 01273 //! them all uppercase. Many existing scripts will have mixed case though. 01274 //! 01275 //! The "Mie" classes are not listed here for simplicity. 01276 //! 01277 //! Keep names in alphabetical order. 01278 01279 #define SMLCLASSNAME_ALLOCATION "ALLOCATION" 01280 #define SMLCLASSNAME_BITMAPPATTERN "BITMAPPATTERN" 01281 #define SMLCLASSNAME_BUTTONITEM "BUTTONITEM" 01282 #define SMLCLASSNAME_CALLBACKLIST "CALLBACKLIST" 01283 #define SMLCLASSNAME_CENTER "CENTER" 01284 #define SMLCLASSNAME_COLOR "COLOR" 01285 #define SMLCLASSNAME_COLORMAP "COLORMAP" 01286 #define SMLCLASSNAME_COMPOSITEWIDGET "COMPOSITEWIDGET" 01287 #define SMLCLASSNAME_CONTEXT "CONTEXT" 01288 #define SMLCLASSNAME_CONTRAST "CONTRAST" 01289 #define SMLCLASSNAME_CTRLEDGE "CTRLEDGE" 01290 #define SMLCLASSNAME_CTRLPOINT "CTRLPOINT" 01291 #define SMLCLASSNAME_DATABASE "DATABASE" 01292 #define SMLCLASSNAME_DATATIP "DATATIP" 01293 #define SMLCLASSNAME_DATETIME "DATETIME" 01294 #define SMLCLASSNAME_DBEDITOR "DBEDITOR" 01295 #define SMLCLASSNAME_DBEDITOR_SINGLERECORDVIEW "DBEDITOR_SINGLERECORDVIEW" 01296 #define SMLCLASSNAME_DBEDITOR_SINGLERECORDWIDGET "DBEDITOR_SINGLERECORDWIDGET" 01297 #define SMLCLASSNAME_DBEDITOR_TABULARVIEW "DBEDITOR_TABULARVIEW" 01298 #define SMLCLASSNAME_DBEDITORTABLE "DBEDITORTABLE" 01299 #define SMLCLASSNAME_DBFIELDINFO "DBFIELDINFO" 01300 #define SMLCLASSNAME_DBTABLEINFO "DBTABLEINFO" 01301 #define SMLCLASSNAME_DBTABLEVAR "DBTABLEVAR" 01302 #define SMLCLASSNAME_DIALOGSHELL "DIALOGSHELL" 01303 #define SMLCLASSNAME_DISP "DISP" 01304 #define SMLCLASSNAME_DISPCALLBACKLIST "DISPCALLBACKLIST" 01305 #define SMLCLASSNAME_DISPLAYINFO "DISPLAYINFO" 01306 #define SMLCLASSNAME_ELEMENTREF "ELEMENTREF" 01307 #define SMLCLASSNAME_ELEMSELECTPARMS "ELEMSELECTPARMS" 01308 #define SMLCLASSNAME_FILE "FILE" 01309 #define SMLCLASSNAME_GEOREF "GEOREF" 01310 #define SMLCLASSNAME_GPSCALLBACKLIST "GPSCALLBACKLIST" 01311 #define SMLCLASSNAME_GPSDATA "GPSDATA" 01312 #define SMLCLASSNAME_GPSPORT "GPSPORT" 01313 #define SMLCLASSNAME_GPSSYMBOL "GPSSYMBOL" 01314 #define SMLCLASSNAME_GRAPHICSCONTEXT "GC" // old name 01315 #define SMLCLASSNAME_GC "GC" 01316 #define SMLCLASSNAME_GRDEVICE "GRDEVICE" 01317 #define SMLCLASSNAME_GRDEVICE_MEM_BINARY "GRDEVICE_MEM_BINARY" 01318 #define SMLCLASSNAME_GRE_GROUP "GRE_GROUP" 01319 #define SMLCLASSNAME_GRE_LABELS "GRE_LABELS" 01320 #define SMLCLASSNAME_GRE_LAYER "GRE_LAYER" 01321 #define SMLCLASSNAME_GRE_LAYER_CAD "GRE_LAYER_CAD" 01322 #define SMLCLASSNAME_GRE_LAYER_GEOFORMULA "GRE_LAYER_GEOFORMULA" 01323 #define SMLCLASSNAME_GRE_LAYER_MAPGRID "GRE_LAYER_MAPGRID" 01324 #define SMLCLASSNAME_GRE_LAYER_PINMAP "GRE_LAYER_PINMAP" 01325 #define SMLCLASSNAME_GRE_LAYER_RASTER "GRE_LAYER_RASTER" 01326 #define SMLCLASSNAME_GRE_LAYER_REGION "GRE_LAYER_REGION" 01327 #define SMLCLASSNAME_GRE_LAYER_SCALEBAR "GRE_LAYER_SCALEBAR" 01328 #define SMLCLASSNAME_GRE_LAYER_SCRIPT "GRE_LAYER_SCRIPT" 01329 #define SMLCLASSNAME_GRE_LAYER_SHAPE "GRE_LAYER_SHAPE" 01330 #define SMLCLASSNAME_GRE_LAYER_TEXT "GRE_LAYER_TEXT" 01331 #define SMLCLASSNAME_GRE_LAYER_TIN "GRE_LAYER_TIN" 01332 #define SMLCLASSNAME_GRE_LAYER_VECTOR "GRE_LAYER_VECTOR" 01333 #define SMLCLASSNAME_GRE_LAYERDC "GRE_LAYERDC" 01334 #define SMLCLASSNAME_GRE_LAYERMANAGER "GRE_LAYERMANAGER" 01335 #define SMLCLASSNAME_GRE_LAYOUT "GRE_LAYOUT" 01336 #define SMLCLASSNAME_GRE_VECTOR_LABELS "GRE_VECTOR_LABELS" 01337 #define SMLCLASSNAME_GRE_VECTOR_LINES "GRE_VECTOR_LINES" 01338 #define SMLCLASSNAME_GRE_VECTOR_NODES "GRE_VECTOR_NODES" 01339 #define SMLCLASSNAME_GRE_VECTOR_POINTS "GRE_VECTOR_POINTS" 01340 #define SMLCLASSNAME_GRE_VECTOR_POLYS "GRE_VECTOR_POLYS" 01341 #define SMLCLASSNAME_GRE_VIEW "GRE_VIEW" 01342 #define SMLCLASSNAME_GRE_VIEWABLE "GRE_VIEWABLE" 01343 #define SMLCLASSNAME_GRE_VIEW3D "GRE_VIEW3D" 01344 #define SMLCLASSNAME_GROUPXPOSN "GROUPXPOSN" 01345 #define SMLCLASSNAME_GROUPYPOSN "GROUPYPOSN" 01346 #define SMLCLASSNAME_HATCHPATTERN "HATCHPATTERN" 01347 #define SMLCLASSNAME_HISTOGRAM "HISTOGRAM" 01348 #define SMLCLASSNAME_INIHANDLE "INIHANDLE" 01349 #define SMLCLASSNAME_LABELATTACHMENT "LABELATTACHMENT" 01350 #define SMLCLASSNAME_LABELFRAMEPARMS "LABELFRAMEPARMS" 01351 #define SMLCLASSNAME_LABELPLACE "LABELPLACE" 01352 #define SMLCLASSNAME_LABELSTYLE "LABELSTYLE" 01353 #define SMLCLASSNAME_LEGENDVIEW "LEGENDVIEW" 01354 #define SMLCLASSNAME_LINEPATTERN "LINEPATTERN" 01355 #define SMLCLASSNAME_LINESTYLE "LINESTYLE" 01356 #define SMLCLASSNAME_LMCOMPONANT "LMCOMPONANT" //! Spelled incorrectly 01357 #define SMLCLASSNAME_LMCOMPONENT SMLCLASSNAME_LMCOMPONANT 01358 #define SMLCLASSNAME_MAPPROJ "MAPPROJ" 01359 #define SMLCLASSNAME_MAT3X3 "MAT3X3" 01360 #define SMLCLASSNAME_MATRIX "MATRIX" 01361 #define SMLCLASSNAME_MDISPREGIONTOOL "MDISPREGIONTOOL" 01362 #define SMLCLASSNAME_MDISPTOOL "MDISPTOOL" 01363 #define SMLCLASSNAME_MENUITEM "MENUITEM" 01364 #define SMLCLASSNAME_NETWORK "NETWORK" 01365 #define SMLCLASSNAME_OBJECT "OBJECT" 01366 #define SMLCLASSNAME_POINT2D "POINT2D" 01367 #define SMLCLASSNAME_POINT3D "POINT3D" 01368 #define SMLCLASSNAME_POINTSTYLE "POINTSTYLE" 01369 #define SMLCLASSNAME_POINTSYMBOL "POINTSYMBOL" 01370 #define SMLCLASSNAME_POINTTOOL "POINTTOOL" 01371 #define SMLCLASSNAME_POLYLINE "POLYLINE" 01372 #define SMLCLASSNAME_POLYSTYLE "POLYSTYLE" 01373 #define SMLCLASSNAME_PORT "PORT" 01374 #define SMLCLASSNAME_PORTCALLBACKLIST "PORTCALLBACKLIST" 01375 #define SMLCLASSNAME_PRINTPARMS "PRINTPARMS" 01376 #define SMLCLASSNAME_PROMPT "PROMPT" 01377 #define SMLCLASSNAME_PROMPTNUM "PROMPTNUM" 01378 #define SMLCLASSNAME_PROMPTSTR "PROMPTSTR" 01379 #define SMLCLASSNAME_PUSHBUTTONITEM "PUSHBUTTONITEM" 01380 #define SMLCLASSNAME_RASTER "RASTER" 01381 #define SMLCLASSNAME_RASTERINFO "RASTERINFO" 01382 #define SMLCLASSNAME_RECT "RECT" 01383 #define SMLCLASSNAME_REGION "REGION" // an RVC object 01384 #define SMLCLASSNAME_REGION2D "REGION2D" // A region in memory 01385 #define SMLCLASSNAME_REGIONDATA "REGIONDATA" // DEPRECATED (old name for REGION2D 01386 #define SMLCLASSNAME_REGIONTOOL "REGIONTOOL" 01387 #define SMLCLASSNAME_ROUTE "ROUTE" 01388 #define SMLCLASSNAME_RVC_GEOREFERENCE "RVC_GEOREFERENCE" 01389 #define SMLCLASSNAME_SR_ELLIPSOID "SR_ELLIPSOID" 01390 #define SMLCLASSNAME_SR_PRIMEMERIDIAN "SR_PRIMEMERIDIAN" 01391 #define SMLCLASSNAME_SR_DATUM "SR_DATUM" 01392 #define SMLCLASSNAME_SR_COORDAXIS "SR_COORDAXIS" 01393 #define SMLCLASSNAME_SR_COORDSYS "SR_COORDSYS" 01394 #define SMLCLASSNAME_SR_COORDOPPARM "SR_COORDOPPARM" 01395 #define SMLCLASSNAME_SR_COORDOPMETHOD "SR_COORDOPMETHOD" 01396 #define SMLCLASSNAME_SR_COORDOPDEF "SR_COORDOPDEF" 01397 #define SMLCLASSNAME_SR_COORDREFSYS "SR_COORDREFSYS" 01398 #define SMLCLASSNAME_STATUSCONTEXT "STATUSCONTEXT" 01399 #define SMLCLASSNAME_STATUSHANDLE "STATUSHANDLE" 01400 #define SMLCLASSNAME_STOP "STOP" 01401 #define SMLCLASSNAME_STRINGLIST "STRINGLIST" 01402 #define SMLCLASSNAME_STYLEOBJECT "STYLEOBJECT" 01403 #define SMLCLASSNAME_TEXTSTYLE "TEXTSTYLE" 01404 #define SMLCLASSNAME_TIMER "TIMER" 01405 #define SMLCLASSNAME_TIMEINTERVAL "TIMEINTERVAL" 01406 #define SMLCLASSNAME_TOGGLEBUTTONITEM "TOGGLEBUTTONITEM" 01407 #define SMLCLASSNAME_TOOL "TOOL" 01408 #define SMLCLASSNAME_TOOLCALLBACKLIST "TOOLCALLBACKLIST" 01409 #define SMLCLASSNAME_TOOLTIP "TOOLTIP" 01410 #define SMLCLASSNAME_TRANSMODEL "TRANSMODEL" 01411 #define SMLCLASSNAME_TRANSPARM "TRANSPARM" 01412 #define SMLCLASSNAME_UNIT "UNIT" 01413 #define SMLCLASSNAME_VECTOR "VECTOR" 01414 #define SMLCLASSNAME_VECTORINFO "VECTORINFO" 01415 #define SMLCLASSNAME_VIEWPOINT3D "VIEWPOINT3D" 01416 01417 //! The following class names are left as mixed case because of historical usage. 01418 #define SMLCLASSNAME_Widget "Widget" 01419 #define SMLCLASSNAME_XmBulletinBoard "XmBulletinBoard" 01420 #define SMLCLASSNAME_XmCallbackList "XmCallbackList" 01421 #define SMLCLASSNAME_XmDrawingArea "XmDrawingArea" 01422 #define SMLCLASSNAME_XmForm "XmForm" 01423 #define SMLCLASSNAME_XmFrame "XmFrame" 01424 #define SMLCLASSNAME_XmHTML "XmHTML" 01425 #define SMLCLASSNAME_XmLabel "XmLabel" 01426 #define SMLCLASSNAME_XmManager "XmManager" 01427 #define SMLCLASSNAME_XmOptionMenu "XmOptionMenu" 01428 #define SMLCLASSNAME_XmPrimitive "XmPrimitive" 01429 #define SMLCLASSNAME_XmPushButton "XmPushButton" 01430 #define SMLCLASSNAME_XmRowColumn "XmRowColumn" 01431 #define SMLCLASSNAME_XmScale "XmScale" 01432 #define SMLCLASSNAME_XmScrollBar "XmScrollBar" 01433 #define SMLCLASSNAME_XmScrolledWindow "XmScrolledWindow" 01434 #define SMLCLASSNAME_XmSeparator "XmSeparator" 01435 #define SMLCLASSNAME_XmToggleButton "XmToggleButton" 01436 01437 /***************************************************************************/ 01438 /* 01439 * Symbol types 01440 */ 01441 01442 #define STYPE_StrVar STYPE_StringVar 01443 #define STYPE_Num STYPE_Constant //!< Same as Constant 01444 01445 enum SMLSTYPE { 01446 STYPE_Constant = 0, //!< 0 NUMBER 01447 STYPE_NumVar, //!< 1 FVAR 01448 STYPE_StringVar, //!< 2 SVAR 01449 STYPE_Array, //!< 3 AVAR 01450 STYPE_Raster, //!< 4 RVAR 01451 STYPE_Vector, //!< 5 VVAR 01452 STYPE_CAD, //!< 6 CVAR 01453 STYPE_Region, //!< 7 region 01454 STYPE_TIN, //!< 8 TINVAR 01455 STYPE_RESERVERD, //!< 9 reserved for whatever 01456 STYPE_Keyword, //!< 10 01457 STYPE_Intrinsic, //!< 11 BLTIN 01458 STYPE_UFunction, //!< 12 FUNCTION - User defined 01459 STYPE_UProcedure, //!< 13 PROCEDURE - User defined 01460 STYPE_BFunction, //!< 14 BFUNCTION - Built-in 01461 STYPE_BSFunction, //!< 15 BSTRFUNC - Built-in 01462 STYPE_BProcedure, //!< 16 PBROCEDURE - Built-in 01463 STYPE_Table, //!< 17 TABLE 01464 STYPE_TableVar, //!< 18 TVAR - pointer to table 01465 STYPE_AnyVal, //!< 19 ANYVAL -- Either NUMBER or STRING 01466 STYPE_String, //!< 20 String 01467 STYPE_AnyObject, //!< 21 RVAR, VVAR, or CVAR 01468 STYPE_NumList, //!< 22 NUMBER, VLVAR, or NUM_OR_LIST 01469 STYPE_StrList, //!< 23 STRING, SLVAR, or STR_OR_LIST 01470 STYPE_List, //!< 24 StrList or NumList 01471 STYPE_RecList, //!< 25 May use NUMLIST instead 01472 STYPE_VectFunc, //!< 26 Function returning an object 01473 STYPE_RESERVED27, //!< 27 unused (used to be func returning region) 01474 STYPE_CADFunc, //!< 28 Function returning an object 01475 STYPE_TINFunc, //!< 29 Function returning an object 01476 STYPE_ClassRefFunc, //!< 30 Function returning a class ptr that the caller should not free 01477 STYPE_ClassVar, //!< 31 Variable holding a class ptr 01478 STYPE_ClassRef, //!< 32 Just data that SML should NOT free 01479 STYPE_RastListVar, //!< 33 01480 STYPE_VectListVar, //!< 34 01481 STYPE_CADListVar, //!< 35 01482 STYPE_TINListVar, //!< 36 01483 STYPE_RegListVar, //!< 37 01484 STYPE_Enum, //!< 38 01485 STYPE_StrField, //!< 39 01486 STYPE_NumField, //!< 40 01487 STYPE_ClassHashFunc, //!< 41 Function returning an (SMLCLASSHASH*) 01488 STYPE_NumHashFunc, //!< 42 01489 STYPE_FuncProto, //!< 43 01490 STYPE_StrFuncProto, //!< 44 01491 STYPE_ClassFuncProto,//!< 45 01492 STYPE_ProcProto, //!< 46 01493 STYPE_ClassCopy, //!< 47 Same as STYPE_ClassRef but needs to be freed 01494 STYPE_ClassCopyFunc, //!< 48 Same as STYPE_ClassRefFunc need to free result 01495 STYPE_ClassHashVar, //!< 49 01496 STYPE_NumHashVar, //!< 50 01497 STYPE_Shape, //!< 51 01498 STYPE_Style, //!< 52 01499 STYPE_ClassConstRef, //!< 53 For SMLCLASSMEMBERs, Same as STYLE_ClassRef, but "get" returns a const reference (NOTE! Not implemented yet, do not use) 01500 STYPE_MAXTYPE //!< 54 Always the last one 01501 }; 01502 01503 #ifdef WIN32 01504 #pragma deprecated(STYPE_Class) // Use STYPE_ClassRef or STYPE_ClassCopy 01505 #pragma deprecated(STYPE_ClassFunc) // Use STYPE_ClassRefFunc or STYPE_ClassCopyFunc 01506 #endif 01507 #define STYPE_Class STYPE_ClassRef 01508 #define STYPE_ClassFunc STYPE_ClassRefFunc 01509 01510