paramtype.h

Go to the documentation of this file.
00001 //
00002 // Copyright 2010 Autodesk, Inc.  All rights reserved.
00003 //
00004 // Use of this software is subject to the terms of the Autodesk license
00005 // agreement provided at the time of installation or download, or which
00006 // otherwise accompanies this software in either electronic or hard copy form.  
00007 //
00008 //
00009 
00010 #pragma once
00011 
00012 // Parameter types
00013 //    several of these types fold to the same underlying value type but provide
00014 //    either a more complete description of the type or imply non-standard dimensions that are
00015 //    automatically applied.
00016 
00017 #define TYPE_TAB    0x0800      //!< Flags a parameter type as a Tab<>
00018 
00020 
00021 #define TYPE_BY_REF 0x1000      //!< Flags a parameter as being delivered by reference (&).
00022 #define TYPE_BY_VAL 0x2000      //!< Flags a parameter as being delivered by value (via a local copy owned by the FPValue).
00023 #define TYPE_BY_PTR 0x4000      //!< Flags a parameter as being delivered by pointer (*)
00024 
00025 
00028 enum ParamType {
00029     TYPE_FLOAT,     
00030     TYPE_INT,       
00031     TYPE_RGBA,      
00032     TYPE_POINT3,    
00033     TYPE_BOOL,      
00034     TYPE_USER,      
00035     };
00036 
00051 enum ParamType2 
00052 {
00053  // TYPE_FLOAT,  
00054  // TYPE_INT,
00055  // TYPE_RGBA,
00056  // TYPE_POINT3,
00057  // TYPE_BOOL,
00058     TYPE_ANGLE = TYPE_BOOL + 1, 
00059     TYPE_PCNT_FRAC,             
00060     TYPE_WORLD,                 
00061     TYPE_STRING,                
00062     TYPE_FILENAME,              
00063     TYPE_HSV,                   
00064     TYPE_COLOR_CHANNEL,         
00065     TYPE_TIMEVALUE,             
00066     TYPE_RADIOBTN_INDEX,        
00067     TYPE_MTL,                   
00068     TYPE_TEXMAP,                
00069     TYPE_BITMAP,                
00070     TYPE_INODE,                 
00071     TYPE_REFTARG,               
00072     // new for R4...
00073     TYPE_INDEX,                 
00074     TYPE_MATRIX3,               
00075     TYPE_PBLOCK2,               
00076     // new for R6...
00077     TYPE_POINT4,
00078     TYPE_FRGBA,
00079 
00080     // only for published function parameter types, not pblock2 parameter types...
00081     TYPE_ENUM,
00082     TYPE_VOID,
00083     TYPE_INTERVAL,
00084     TYPE_ANGAXIS,
00085     TYPE_QUAT,
00086     TYPE_RAY,
00087     TYPE_POINT2,
00088     TYPE_BITARRAY,
00089     TYPE_CLASS,
00090     TYPE_MESH,
00091     TYPE_OBJECT,
00092     TYPE_CONTROL,
00093     TYPE_POINT,
00094     TYPE_TSTR,
00095     TYPE_IOBJECT,
00096     TYPE_INTERFACE,
00097     TYPE_HWND,
00098     TYPE_NAME,
00099     TYPE_COLOR,
00100     TYPE_FPVALUE,
00101     TYPE_VALUE,
00102     TYPE_DWORD,
00103     TYPE_bool,
00104     TYPE_INTPTR,
00105     TYPE_INT64,
00106     TYPE_DOUBLE,
00107 
00108     // Tab<>s of above  (MUST be in same order as base types)
00109     TYPE_FLOAT_TAB = TYPE_FLOAT + TYPE_TAB, 
00110     TYPE_INT_TAB,           
00111     TYPE_RGBA_TAB,          
00112     TYPE_POINT3_TAB,        
00113     TYPE_BOOL_TAB,          
00114     TYPE_ANGLE_TAB,         
00115     TYPE_PCNT_FRAC_TAB,     
00116     TYPE_WORLD_TAB,         
00117     TYPE_STRING_TAB,        
00118     TYPE_FILENAME_TAB,      
00119     TYPE_HSV_TAB,           
00120     TYPE_COLOR_CHANNEL_TAB, 
00121     TYPE_TIMEVALUE_TAB,     
00122     TYPE_RADIOBTN_INDEX_TAB,
00123     TYPE_MTL_TAB,           
00124     TYPE_TEXMAP_TAB,        
00125     TYPE_BITMAP_TAB,        
00126     TYPE_INODE_TAB,         
00127     TYPE_REFTARG_TAB,       
00128     // new for R4...
00129     TYPE_INDEX_TAB,         
00130     TYPE_MATRIX3_TAB,       
00131     TYPE_PBLOCK2_TAB,       
00132     // new for R6...
00133     TYPE_POINT4_TAB,
00134     TYPE_FRGBA_TAB,
00135     // Only for published function parameter types, not pblock2 parameter types.
00136     TYPE_ENUM_TAB,      
00137     TYPE_VOID_TAB,      
00138     TYPE_INTERVAL_TAB,  
00139     TYPE_ANGAXIS_TAB,   
00140     TYPE_QUAT_TAB,      
00141     TYPE_RAY_TAB,       
00142     TYPE_POINT2_TAB,    
00143     TYPE_BITARRAY_TAB,  
00144     TYPE_CLASS_TAB,     
00145     TYPE_MESH_TAB,      
00146     TYPE_OBJECT_TAB,    
00147     TYPE_CONTROL_TAB,   
00148     TYPE_POINT_TAB,     
00149     TYPE_TSTR_TAB,      
00150     TYPE_IOBJECT_TAB,   
00151     TYPE_INTERFACE_TAB, 
00152     TYPE_HWND_TAB,      
00153     TYPE_NAME_TAB,      
00154     TYPE_COLOR_TAB,     
00155     TYPE_FPVALUE_TAB,   
00156     TYPE_VALUE_TAB,     
00157     TYPE_DWORD_TAB,     
00158     TYPE_bool_TAB,      
00159     TYPE_INTPTR_TAB,    
00160     TYPE_INT64_TAB,     
00161     TYPE_DOUBLE_TAB,    
00162 
00163     // pass by-ref types, implies & parameters, int& & float& are passed via .ptr fields, only for FnPub use
00164 
00165     TYPE_FLOAT_BR                   = TYPE_FLOAT + TYPE_BY_REF,         
00166     TYPE_INT_BR                     = TYPE_INT + TYPE_BY_REF,           
00167     TYPE_BOOL_BR                    = TYPE_BOOL + TYPE_BY_REF,          
00168     TYPE_ANGLE_BR                   = TYPE_ANGLE + TYPE_BY_REF,         
00169     TYPE_PCNT_FRAC_BR               = TYPE_PCNT_FRAC + TYPE_BY_REF,     
00170     TYPE_WORLD_BR                   = TYPE_WORLD + TYPE_BY_REF,         
00171     TYPE_COLOR_CHANNEL_BR           = TYPE_COLOR_CHANNEL + TYPE_BY_REF, 
00172     TYPE_TIMEVALUE_BR               = TYPE_TIMEVALUE + TYPE_BY_REF,     
00173     TYPE_RADIOBTN_INDEX_BR          = TYPE_RADIOBTN_INDEX + TYPE_BY_REF,
00174     TYPE_INDEX_BR                   = TYPE_INDEX + TYPE_BY_REF,         
00175     TYPE_RGBA_BR                    = TYPE_RGBA + TYPE_BY_REF,          
00176     TYPE_BITMAP_BR                  = TYPE_BITMAP + TYPE_BY_REF,        
00177     TYPE_POINT3_BR                  = TYPE_POINT3 + TYPE_BY_REF,        
00178     TYPE_HSV_BR                     = TYPE_HSV + TYPE_BY_REF,           
00179     TYPE_REFTARG_BR                 = TYPE_REFTARG + TYPE_BY_REF,       
00180     TYPE_MATRIX3_BR                 = TYPE_MATRIX3 + TYPE_BY_REF,       
00181     TYPE_POINT4_BR                  = TYPE_POINT4 + TYPE_BY_REF,        
00182     TYPE_FRGBA_BR                   = TYPE_FRGBA + TYPE_BY_REF,         
00183     TYPE_ENUM_BR                    = TYPE_ENUM + TYPE_BY_REF,          
00184     TYPE_INTERVAL_BR                = TYPE_INTERVAL + TYPE_BY_REF,      
00185     TYPE_ANGAXIS_BR                 = TYPE_ANGAXIS + TYPE_BY_REF,       
00186     TYPE_QUAT_BR                    = TYPE_QUAT + TYPE_BY_REF,          
00187     TYPE_RAY_BR                     = TYPE_RAY + TYPE_BY_REF,           
00188     TYPE_POINT2_BR                  = TYPE_POINT2 + TYPE_BY_REF,        
00189     TYPE_BITARRAY_BR                = TYPE_BITARRAY + TYPE_BY_REF,      
00190     TYPE_MESH_BR                    = TYPE_MESH + TYPE_BY_REF,          
00191     TYPE_POINT_BR                   = TYPE_POINT + TYPE_BY_REF,         
00192     TYPE_TSTR_BR                    = TYPE_TSTR + TYPE_BY_REF,          
00193     TYPE_COLOR_BR                   = TYPE_COLOR + TYPE_BY_REF,         
00194     TYPE_FPVALUE_BR                 = TYPE_FPVALUE + TYPE_BY_REF,       
00195     TYPE_DWORD_BR                   = TYPE_DWORD + TYPE_BY_REF,         
00196     TYPE_bool_BR                    = TYPE_bool + TYPE_BY_REF,          
00197     TYPE_INTPTR_BR                  = TYPE_INTPTR + TYPE_BY_REF,        
00198     TYPE_INT64_BR                   = TYPE_INT64 + TYPE_BY_REF,         
00199     TYPE_DOUBLE_BR                  = TYPE_DOUBLE + TYPE_BY_REF,        
00200 
00201     
00202 
00203     // pass by-ref Tab<> types - tab is passed by ref, data type in tab is TYPE_XXXX.
00204     // For example: TYPE_FLOAT_TAB_BR = Tab<float>& , TYPE_INODE_TAB_BR_TYPE = Tab<INode*>&
00205     TYPE_FLOAT_TAB_BR               = TYPE_FLOAT + TYPE_TAB + TYPE_BY_REF, 
00206     TYPE_INT_TAB_BR                 = TYPE_INT + TYPE_TAB + TYPE_BY_REF,
00207     TYPE_RGBA_TAB_BR                = TYPE_RGBA + TYPE_TAB + TYPE_BY_REF,
00208     TYPE_POINT3_TAB_BR              = TYPE_POINT3 + TYPE_TAB + TYPE_BY_REF,
00209     TYPE_BOOL_TAB_BR                = TYPE_BOOL + TYPE_TAB + TYPE_BY_REF,
00210     TYPE_ANGLE_TAB_BR               = TYPE_ANGLE + TYPE_TAB + TYPE_BY_REF,
00211     TYPE_PCNT_FRAC_TAB_BR           = TYPE_PCNT_FRAC + TYPE_TAB + TYPE_BY_REF,
00212     TYPE_WORLD_TAB_BR               = TYPE_WORLD + TYPE_TAB + TYPE_BY_REF,
00213     TYPE_STRING_TAB_BR              = TYPE_STRING + TYPE_TAB + TYPE_BY_REF,
00214     TYPE_FILENAME_TAB_BR            = TYPE_FILENAME + TYPE_TAB + TYPE_BY_REF,
00215     TYPE_HSV_TAB_BR                 = TYPE_HSV + TYPE_TAB + TYPE_BY_REF,
00216     TYPE_COLOR_CHANNEL_TAB_BR       = TYPE_COLOR_CHANNEL + TYPE_TAB + TYPE_BY_REF,
00217     TYPE_TIMEVALUE_TAB_BR           = TYPE_TIMEVALUE + TYPE_TAB + TYPE_BY_REF,
00218     TYPE_RADIOBTN_INDEX_TAB_BR      = TYPE_RADIOBTN_INDEX + TYPE_TAB + TYPE_BY_REF,
00219     TYPE_MTL_TAB_BR                 = TYPE_MTL + TYPE_TAB + TYPE_BY_REF,
00220     TYPE_TEXMAP_TAB_BR              = TYPE_TEXMAP + TYPE_TAB + TYPE_BY_REF,
00221     TYPE_BITMAP_TAB_BR              = TYPE_BITMAP + TYPE_TAB + TYPE_BY_REF,
00222     TYPE_INODE_TAB_BR               = TYPE_INODE + TYPE_TAB + TYPE_BY_REF,
00223     TYPE_REFTARG_TAB_BR             = TYPE_REFTARG + TYPE_TAB + TYPE_BY_REF,
00224     TYPE_INDEX_TAB_BR               = TYPE_INDEX + TYPE_TAB + TYPE_BY_REF,
00225     TYPE_MATRIX3_TAB_BR             = TYPE_MATRIX3 + TYPE_TAB + TYPE_BY_REF,
00226     TYPE_POINT4_TAB_BR              = TYPE_POINT4 + TYPE_TAB + TYPE_BY_REF,
00227     TYPE_FRGBA_TAB_BR               = TYPE_FRGBA + TYPE_TAB + TYPE_BY_REF,
00228     TYPE_TSTR_TAB_BR                = TYPE_TSTR + TYPE_TAB + TYPE_BY_REF,
00229     TYPE_ENUM_TAB_BR                = TYPE_ENUM + TYPE_TAB + TYPE_BY_REF,
00230     TYPE_INTERVAL_TAB_BR            = TYPE_INTERVAL + TYPE_TAB + TYPE_BY_REF,
00231     TYPE_ANGAXIS_TAB_BR             = TYPE_ANGAXIS + TYPE_TAB + TYPE_BY_REF,
00232     TYPE_QUAT_TAB_BR                = TYPE_QUAT + TYPE_TAB + TYPE_BY_REF,
00233     TYPE_RAY_TAB_BR                 = TYPE_RAY + TYPE_TAB + TYPE_BY_REF,
00234     TYPE_POINT2_TAB_BR              = TYPE_POINT2 + TYPE_TAB + TYPE_BY_REF,
00235     TYPE_BITARRAY_TAB_BR            = TYPE_BITARRAY + TYPE_TAB + TYPE_BY_REF,
00236     TYPE_CLASS_TAB_BR               = TYPE_CLASS + TYPE_TAB + TYPE_BY_REF,
00237     TYPE_MESH_TAB_BR                = TYPE_MESH + TYPE_TAB + TYPE_BY_REF,
00238     TYPE_OBJECT_TAB_BR              = TYPE_OBJECT + TYPE_TAB + TYPE_BY_REF,
00239     TYPE_CONTROL_TAB_BR             = TYPE_CONTROL + TYPE_TAB + TYPE_BY_REF,
00240     TYPE_POINT_TAB_BR               = TYPE_POINT + TYPE_TAB + TYPE_BY_REF,
00241     TYPE_IOBJECT_TAB_BR             = TYPE_IOBJECT + TYPE_TAB + TYPE_BY_REF,
00242     TYPE_INTERFACE_TAB_BR           = TYPE_INTERFACE + TYPE_TAB + TYPE_BY_REF,
00243     TYPE_HWND_TAB_BR                = TYPE_HWND + TYPE_TAB + TYPE_BY_REF,
00244     TYPE_NAME_TAB_BR                = TYPE_NAME + TYPE_TAB + TYPE_BY_REF,
00245     TYPE_COLOR_TAB_BR               = TYPE_COLOR + TYPE_TAB + TYPE_BY_REF,
00246     TYPE_FPVALUE_TAB_BR             = TYPE_FPVALUE + TYPE_TAB + TYPE_BY_REF,
00247     TYPE_VALUE_TAB_BR               = TYPE_VALUE + TYPE_TAB + TYPE_BY_REF,
00248     TYPE_DWORD_TAB_BR               = TYPE_DWORD + TYPE_TAB + TYPE_BY_REF,
00249     TYPE_bool_TAB_BR                = TYPE_bool + TYPE_TAB + TYPE_BY_REF,
00250     TYPE_INTPTR_TAB_BR              = TYPE_INTPTR + TYPE_TAB + TYPE_BY_REF,
00251     TYPE_INT64_TAB_BR               = TYPE_INT64 + TYPE_TAB + TYPE_BY_REF,
00252     TYPE_DOUBLE_TAB_BR              = TYPE_DOUBLE + TYPE_TAB + TYPE_BY_REF,
00253 
00254     // pass by-value types, implies dereferencing the (meaningful) pointer-based values, only for FnPub use
00255     TYPE_RGBA_BV                    = TYPE_RGBA + TYPE_BY_VAL, //[TBA]
00256     TYPE_POINT3_BV                  = TYPE_POINT3 + TYPE_BY_VAL,
00257     TYPE_HSV_BV                     = TYPE_HSV + TYPE_BY_VAL,
00258     TYPE_INTERVAL_BV                = TYPE_INTERVAL + TYPE_BY_VAL,
00259     TYPE_BITMAP_BV                  = TYPE_BITMAP + TYPE_BY_VAL,
00260     TYPE_MATRIX3_BV                 = TYPE_MATRIX3 + TYPE_BY_VAL,
00261     TYPE_POINT4_BV                  = TYPE_POINT4 + TYPE_BY_VAL,
00262     TYPE_FRGBA_BV                   = TYPE_FRGBA + TYPE_BY_VAL,
00263     TYPE_ANGAXIS_BV                 = TYPE_ANGAXIS + TYPE_BY_VAL,
00264     TYPE_QUAT_BV                    = TYPE_QUAT + TYPE_BY_VAL,
00265     TYPE_RAY_BV                     = TYPE_RAY + TYPE_BY_VAL,
00266     TYPE_POINT2_BV                  = TYPE_POINT2 + TYPE_BY_VAL,
00267     TYPE_BITARRAY_BV                = TYPE_BITARRAY + TYPE_BY_VAL,
00268     TYPE_MESH_BV                    = TYPE_MESH + TYPE_BY_VAL,
00269     TYPE_POINT_BV                   = TYPE_POINT + TYPE_BY_VAL,
00270     TYPE_TSTR_BV                    = TYPE_TSTR + TYPE_BY_VAL,
00271     TYPE_COLOR_BV                   = TYPE_COLOR + TYPE_BY_VAL,
00272     TYPE_FPVALUE_BV                 = TYPE_FPVALUE + TYPE_BY_VAL,
00273     TYPE_CLASS_BV                   = TYPE_CLASS + TYPE_BY_VAL,
00274 
00275     // pass by-val Tab<> types - tab is passed by val, data type in tab is TYPE_XXXX.
00276     // For example: TYPE_FLOAT_TAB_BV = Tab<float> , TYPE_INODE_TAB_BV = Tab<INode*>
00277     TYPE_FLOAT_TAB_BV               = TYPE_FLOAT + TYPE_TAB + TYPE_BY_VAL, //[TBA]
00278     TYPE_INT_TAB_BV                 = TYPE_INT + TYPE_TAB + TYPE_BY_VAL,
00279     TYPE_RGBA_TAB_BV                = TYPE_RGBA + TYPE_TAB + TYPE_BY_VAL,
00280     TYPE_POINT3_TAB_BV              = TYPE_POINT3 + TYPE_TAB + TYPE_BY_VAL,
00281     TYPE_BOOL_TAB_BV                = TYPE_BOOL + TYPE_TAB + TYPE_BY_VAL,
00282     TYPE_ANGLE_TAB_BV               = TYPE_ANGLE + TYPE_TAB + TYPE_BY_VAL,
00283     TYPE_PCNT_FRAC_TAB_BV           = TYPE_PCNT_FRAC + TYPE_TAB + TYPE_BY_VAL,
00284     TYPE_WORLD_TAB_BV               = TYPE_WORLD + TYPE_TAB + TYPE_BY_VAL,
00285     TYPE_STRING_TAB_BV              = TYPE_STRING + TYPE_TAB + TYPE_BY_VAL,
00286     TYPE_FILENAME_TAB_BV            = TYPE_FILENAME + TYPE_TAB + TYPE_BY_VAL,
00287     TYPE_HSV_TAB_BV                 = TYPE_HSV + TYPE_TAB + TYPE_BY_VAL,
00288     TYPE_COLOR_CHANNEL_TAB_BV       = TYPE_COLOR_CHANNEL + TYPE_TAB + TYPE_BY_VAL,
00289     TYPE_TIMEVALUE_TAB_BV           = TYPE_TIMEVALUE + TYPE_TAB + TYPE_BY_VAL,
00290     TYPE_RADIOBTN_INDEX_TAB_BV      = TYPE_RADIOBTN_INDEX + TYPE_TAB + TYPE_BY_VAL,
00291     TYPE_MTL_TAB_BV                 = TYPE_MTL + TYPE_TAB + TYPE_BY_VAL,
00292     TYPE_TEXMAP_TAB_BV              = TYPE_TEXMAP + TYPE_TAB + TYPE_BY_VAL,
00293     TYPE_BITMAP_TAB_BV              = TYPE_BITMAP + TYPE_TAB + TYPE_BY_VAL,
00294     TYPE_INODE_TAB_BV               = TYPE_INODE + TYPE_TAB + TYPE_BY_VAL,
00295     TYPE_REFTARG_TAB_BV             = TYPE_REFTARG + TYPE_TAB + TYPE_BY_VAL,
00296     TYPE_INDEX_TAB_BV               = TYPE_INDEX + TYPE_TAB + TYPE_BY_VAL,
00297     TYPE_MATRIX3_TAB_BV             = TYPE_MATRIX3 + TYPE_TAB + TYPE_BY_VAL,
00298     TYPE_POINT4_TAB_BV              = TYPE_POINT4 + TYPE_TAB + TYPE_BY_VAL,
00299     TYPE_FRGBA_TAB_BV               = TYPE_FRGBA + TYPE_TAB + TYPE_BY_VAL,
00300     TYPE_PBLOCK2_TAB_BV             = TYPE_PBLOCK2 + TYPE_TAB + TYPE_BY_VAL,
00301     TYPE_VOID_TAB_BV                = TYPE_VOID + TYPE_TAB + TYPE_BY_VAL,
00302     TYPE_TSTR_TAB_BV                = TYPE_TSTR + TYPE_TAB + TYPE_BY_VAL,
00303     TYPE_ENUM_TAB_BV                = TYPE_ENUM + TYPE_TAB + TYPE_BY_VAL,
00304     TYPE_INTERVAL_TAB_BV            = TYPE_INTERVAL + TYPE_TAB + TYPE_BY_VAL,
00305     TYPE_ANGAXIS_TAB_BV             = TYPE_ANGAXIS + TYPE_TAB + TYPE_BY_VAL,
00306     TYPE_QUAT_TAB_BV                = TYPE_QUAT + TYPE_TAB + TYPE_BY_VAL,
00307     TYPE_RAY_TAB_BV                 = TYPE_RAY + TYPE_TAB + TYPE_BY_VAL,
00308     TYPE_POINT2_TAB_BV              = TYPE_POINT2 + TYPE_TAB + TYPE_BY_VAL,
00309     TYPE_BITARRAY_TAB_BV            = TYPE_BITARRAY + TYPE_TAB + TYPE_BY_VAL,
00310     TYPE_CLASS_TAB_BV               = TYPE_CLASS + TYPE_TAB + TYPE_BY_VAL,
00311     TYPE_MESH_TAB_BV                = TYPE_MESH + TYPE_TAB + TYPE_BY_VAL,
00312     TYPE_OBJECT_TAB_BV              = TYPE_OBJECT + TYPE_TAB + TYPE_BY_VAL,
00313     TYPE_CONTROL_TAB_BV             = TYPE_CONTROL + TYPE_TAB + TYPE_BY_VAL,
00314     TYPE_POINT_TAB_BV               = TYPE_POINT + TYPE_TAB + TYPE_BY_VAL,
00315     TYPE_IOBJECT_TAB_BV             = TYPE_IOBJECT + TYPE_TAB + TYPE_BY_VAL,
00316     TYPE_INTERFACE_TAB_BV           = TYPE_INTERFACE + TYPE_TAB + TYPE_BY_VAL,
00317     TYPE_HWND_TAB_BV                = TYPE_HWND + TYPE_TAB + TYPE_BY_VAL,
00318     TYPE_NAME_TAB_BV                = TYPE_NAME + TYPE_TAB + TYPE_BY_VAL,
00319     TYPE_COLOR_TAB_BV               = TYPE_COLOR + TYPE_TAB + TYPE_BY_VAL,
00320     TYPE_FPVALUE_TAB_BV             = TYPE_FPVALUE + TYPE_TAB + TYPE_BY_VAL,
00321     TYPE_VALUE_TAB_BV               = TYPE_VALUE + TYPE_TAB + TYPE_BY_VAL,
00322     TYPE_DWORD_TAB_BV               = TYPE_DWORD + TYPE_TAB + TYPE_BY_VAL,
00323     TYPE_bool_TAB_BV                = TYPE_bool + TYPE_TAB + TYPE_BY_VAL,
00324     TYPE_INTPTR_TAB_BV              = TYPE_INTPTR + TYPE_TAB + TYPE_BY_VAL,
00325     TYPE_INT64_TAB_BV               = TYPE_INT64 + TYPE_TAB + TYPE_BY_VAL,
00326     TYPE_DOUBLE_TAB_BV              = TYPE_DOUBLE + TYPE_TAB + TYPE_BY_VAL,
00327 
00328     // pass by-pointer types for int & float types, implies * parameters, int* & float* are passed via .ptr fields, only for FnPub use
00329     TYPE_FLOAT_BP                   = TYPE_FLOAT + TYPE_BY_PTR, //[TBA]
00330     TYPE_INT_BP                     = TYPE_INT + TYPE_BY_PTR,
00331     TYPE_BOOL_BP                    = TYPE_BOOL + TYPE_BY_PTR,
00332     TYPE_ANGLE_BP                   = TYPE_ANGLE + TYPE_BY_PTR,
00333     TYPE_PCNT_FRAC_BP               = TYPE_PCNT_FRAC + TYPE_BY_PTR,
00334     TYPE_WORLD_BP                   = TYPE_WORLD + TYPE_BY_PTR,
00335     TYPE_COLOR_CHANNEL_BP           = TYPE_COLOR_CHANNEL + TYPE_BY_PTR,
00336     TYPE_TIMEVALUE_BP               = TYPE_TIMEVALUE + TYPE_BY_PTR,
00337     TYPE_RADIOBTN_INDEX_BP          = TYPE_RADIOBTN_INDEX + TYPE_BY_PTR,
00338     TYPE_INDEX_BP                   = TYPE_INDEX + TYPE_BY_PTR,
00339     TYPE_ENUM_BP                    = TYPE_ENUM + TYPE_BY_PTR,
00340     TYPE_DWORD_BP                   = TYPE_DWORD + TYPE_BY_PTR,
00341     TYPE_bool_BP                    = TYPE_bool + TYPE_BY_PTR,
00342     TYPE_INTPTR_BP                  = TYPE_INTPTR + TYPE_BY_PTR,
00343     TYPE_INT64_BP                   = TYPE_INT64 + TYPE_BY_PTR,
00344     TYPE_DOUBLE_BP                  = TYPE_DOUBLE + TYPE_BY_PTR,
00345 
00346     // there are no specific by-pointer Tab<> types, all Tab<> types are by-pointer by default
00347 
00348     TYPE_MAX_TYPE,  
00349     
00350     // MAXScript internal types
00351     TYPE_KEYARG_MARKER = 253,
00352     TYPE_MSFLOAT,
00353     TYPE_UNSPECIFIED, 
00354     
00355 };
00356 
00361 enum ControlType {
00368     TYPE_SPINNER, 
00369 
00377     TYPE_RADIO,         
00378 
00382     TYPE_SINGLECHEKBOX, 
00383 
00385     TYPE_MULTICHEKBOX,  
00386     
00391     TYPE_COLORSWATCH,   
00392     };
00393 
00399 enum ControlType2
00400 {
00401   
00402     // TYPE_SPINNER,     
00403     // TYPE_RADIO,
00404     // TYPE_SINGLECHEKBOX,
00405     // TYPE_MULTICHEKBOX,
00406     // TYPE_COLORSWATCH,
00407 
00410     TYPE_EDITBOX = TYPE_COLORSWATCH + 1,    
00411     
00415     TYPE_CHECKBUTTON,       
00416 
00422     TYPE_PICKNODEBUTTON,    
00423 
00428     TYPE_TEXMAPBUTTON,      
00429 
00434     TYPE_MTLBUTTON,    
00435 
00440     TYPE_BITMAPBUTTON,         
00441 
00446     TYPE_FILEOPENBUTTON,    
00447 
00452     TYPE_FILESAVEBUTTON,    
00453 
00455     TYPE_INTLISTBOX,        
00456 
00458     TYPE_FLOATLISTBOX,      
00459 
00461     TYPE_STRINGLISTBOX,     
00462 
00464     TYPE_NODELISTBOX,       
00465     
00467     TYPE_MAPLISTBOX,        
00468     
00470     TYPE_SLIDER,            
00471     
00473     TYPE_BUTTON,
00474 
00476     TYPE_POINT3LISTBOX, 
00477 
00479     TYPE_SHADERBUTTON_DEFUNCT,  
00480 
00482     TYPE_CONNECTIONSHADERBUTTON_DEFUNCT,   
00483 
00488     TYPE_SHADERSUBPARAMETERBLOCK,   
00489 
00491     TYPE_POINT4LISTBOX,     
00492 
00498     TYPE_COLORSWATCH_FRGBA, 
00499 
00502     TYPE_INT_COMBOBOX,      
00503 };
00504 
00508 enum ParamTags
00509 {   
00514     p_default = -(1<<30),       
00515 
00519     p_ms_default,               
00520 
00524     p_range,                    
00525 
00536     p_ui,                       
00537     
00542     p_validator,                
00543 
00550     p_accessor,                 
00551 
00557     p_vals,                     
00558 
00559     //  p_subanim_order,            //!< Overrides sequential subanim order. Unused.
00560     
00565     p_refno,                    
00566 
00570     p_subtexno,                 
00571 
00574     p_submtlno,                 
00575 
00578     p_dim,                      
00579 
00584     p_classID,                  
00585 
00589     p_sclassID,         
00590     
00601     p_enabled,                  
00602 
00606     p_enable_ctrls,             
00607     
00609     p_prompt,                   
00610 
00612     p_caption,                  
00613 
00622     p_init_file,                
00623 
00641     p_file_types,               
00642 
00644     p_ctrl_ids,                 
00645     
00648     p_uix,                      
00649 
00651     p_configurable_default,     
00652 
00656     p_tooltip,                  
00657 
00659     p_assetTypeID,              
00660 
00662     p_assetTypeName,           
00663 
00665     end = p_default + 1024,
00666 
00668     properties,
00669 
00671     enums,
00672 };