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