sml.h

Go to the documentation of this file.
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