pl-nk v0.4.5
Plonk|Plink|Plank are a set of cross-platform C/C++ frameworks for audio software development
plonk_TypeUtility.h
00001 /*
00002  -------------------------------------------------------------------------------
00003  This file is part of the Plink, Plonk, Plank libraries
00004   by Martin Robinson
00005  
00006  http://code.google.com/p/pl-nk/
00007  
00008  Copyright University of the West of England, Bristol 2011-14
00009  All rights reserved.
00010  
00011  Redistribution and use in source and binary forms, with or without
00012  modification, are permitted provided that the following conditions are met:
00013  
00014  * Redistributions of source code must retain the above copyright
00015    notice, this list of conditions and the following disclaimer.
00016  * Redistributions in binary form must reproduce the above copyright
00017    notice, this list of conditions and the following disclaimer in the
00018    documentation and/or other materials provided with the distribution.
00019  * Neither the name of University of the West of England, Bristol nor 
00020    the names of its contributors may be used to endorse or promote products
00021    derived from this software without specific prior written permission.
00022  
00023  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00024  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00025  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
00026  DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF THE WEST OF ENGLAND, BRISTOL BE 
00027  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
00028  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
00029  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
00030  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
00031  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
00032  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
00033  
00034  This software makes use of third party libraries. For more information see:
00035  doc/license.txt included in the distribution.
00036  -------------------------------------------------------------------------------
00037  */
00038 
00039 #ifndef PLONK_TYPEUTILITY_H
00040 #define PLONK_TYPEUTILITY_H
00041 
00042 #include "plonk_CoreForwardDeclarations.h"
00043 #include "../containers/plonk_ContainerForwardDeclarations.h"
00044 #include "../containers/variables/plonk_VariableForwardDeclarations.h"
00045 #include "../graph/plonk_GraphForwardDeclarations.h"
00046 #include "../containers/plonk_Text.h"
00047 
00048 class AudioFileReader;
00049 
00056 class TypeCode
00057 {
00058 public:
00059     enum Codes
00060     {
00061     //  0
00062         Unknown, Dynamic,
00063     // built-in types (2)
00064         Float, Double, Int, Short, Int24, Long, LongLong, Char, Bool,
00065     // fixed point types
00066         FixI8F8, FixI8F24, FixI16F16,
00067     // atomic types (11)    
00068         AtomicFloat, AtomicDouble, 
00069         AtomicInt, AtomicLong, AtomicLongLong, AtomicPointer, AtomicExtendedPointer, AtomicDynamicPointer,
00070     // variables (19)
00071         FloatVariable, DoubleVariable, 
00072         IntVariable, ShortVariable, Int24Variable, LongVariable, CharVariable, BoolVariable,
00073     // atomic variables (27)
00074         AtomicFloatVariable, AtomicDoubleVariable, AtomicIntVariable, AtomicLongVariable, 
00075         AtomicPointerVariable, AtomicExtendedPointerVariable, AtomicDynamicPointerVariable,
00076     // arrays (34)
00077         FloatArray, DoubleArray, IntArray, ShortArray, Int24Array, LongArray, CharArray, BoolArray, DynamicArray,
00078     // other
00079         Text, TextArray,
00080     // channels (45)
00081         FloatChannel, DoubleChannel, IntChannel, ShortChannel, Int24Channel, LongChannel,
00082     // units (51)
00083         FloatUnit, DoubleUnit, IntUnit, ShortUnit, Int24Unit, LongUnit,
00084     // bus (57)
00085         FloatBus, DoubleBus, IntBus, ShortBus, Int24Bus, LongBus, 
00086     // unit arrays (63)
00087         FloatUnits, DoubleUnits, IntUnits, ShortUnits, Int24Units, LongUnits,
00088     // bus arrays (69)
00089         FloatBusses, DoubleBusses, IntBusses, ShortBusses, Int24Busses, LongBusses, 
00090     // breakpoints (75)
00091         FloatBreakpoints, DoubleBreakpoints, IntBreakpoints, ShortBreakpoints, Int24Breakpoints, LongBreakpoints,
00092     // wavetables (81)
00093         FloatWavetable, DoubleWavetable, IntWavetable, ShortWavetable, Int24Wavetable, LongWavetable,
00094     // signals (88)
00095         FloatSignal, DoubleSignal, IntSignal, ShortSignal, Int24Signal, LongSignal,
00096     // arrays
00097         FloatArrayVariable, DoubleArrayVariable, IntArrayVariable, ShortArrayVariable, 
00098         Int24ArrayVariable, LongArrayVariable, CharArrayVariable, BoolArrayVariable,
00099     // other
00100         TextVariable, TextArrayVariable,
00101     // channels
00102         FloatChannelVariable, DoubleChannelVariable, IntChannelVariable, ShortChannelVariable, Int24ChannelVariable, LongChannelVariable,
00103     // units
00104         FloatUnitVariable, DoubleUnitVariable, IntUnitVariable, ShortUnitVariable, Int24UnitVariable, LongUnitVariable,
00105     // bus (57)
00106         FloatBusVariable, DoubleBusVariable, IntBusVariable, ShortBusVariable, Int24BusVariable, LongBusVariable, 
00107     // unit arrays
00108         FloatUnitsVariable, DoubleUnitsVariable, IntUnitsVariable, ShortUnitsVariable, Int24UnitsVariable, LongUnitsVariable,
00109     // bus arrays
00110         FloatBussesVariable, DoubleBussesVariable, IntBussesVariable, ShortBussesVariable, Int24BussesVariable, LongBussesVariable, 
00111     // breakpoints
00112         FloatBreakpointsVariable, DoubleBreakpointsVariable, IntBreakpointsVariable, ShortBreakpointsVariable, Int24BreakpointsVariable, LongBreakpointsVariable,
00113     // wavetables
00114         FloatWavetableVariable, DoubleWavetableVariable, IntWavetableVariable, ShortWavetableVariable, Int24WavetableVariable, LongWavetableVariable,
00115     // signals
00116         FloatSignalVariable, DoubleSignalVariable, IntSignalVariable, ShortSignalVariable, Int24SignalVariable, LongSignalVariable,
00117 
00118         AudioFileReader,
00119         
00120         FloatUnitQueue, DoubleUnitQueue, ShortUnitQueue, CharUnitQueue, IntUnitQueue, Int24UnitQueue, LongUnitQueue,
00121 
00122         
00123     // count (??)
00124         NumTypeCodes
00125     };    
00126     
00128     static inline plonk::Text getName (const int code) throw()
00129     {
00130         static const char* names[] = {
00131             "Unknown", "Dynamic",
00132             
00133             "Float", "Double", "Int", "Short", "Int24", "Long", "LongLong", "Char", "Bool",
00134             
00135             "FixI8F8", "FixI8F24", "FixI16F16",
00136             
00137             "AtomicFloat", "AtomicDouble", 
00138             "AtomicInt", "AtomicLong", "AtomicLongLong", "AtomicPointer", "AtomicExtendedPointer", "AtomicDynamicPointer",
00139             
00140             "FloatVariable", "DoubleVariable", 
00141             "IntVariable", "ShortVariable", "Int24Variable", "LongVariable", "CharVariable", "BoolVariable",
00142             
00143             "AtomicFloatVariable", "AtomicDoubleVariable", "AtomicIntVariable", "AtomicLongVariable",
00144             "AtomicPointerVariable", "AtomicExtendedPointerVariable", "AtomicDynamicPointerVariable",
00145             
00146             "FloatArray", "DoubleArray", "IntArray", "ShortArray", "Int24Array", "LongArray", "CharArray", "BoolArray", "DynamicArray",
00147             "Text", "TextArray", 
00148 
00149             "FloatChannel", "DoubleChannel", "IntChannel", "ShortChannel", "Int24Channel", "LongChannel",
00150 
00151             "FloatUnit", "DoubleUnit", "IntUnit", "ShortUnit", "Int24Unit", "LongUnit",
00152 
00153             "FloatBus", "DoubleBus", "IntBus", "ShortBus", "Int24Bus", "LongBus",
00154             
00155             "FloatUnits", "DoubleUnits", "IntUnits", "ShortUnits", "Int24Units", "LongUnits",
00156             
00157             "FloatBusses", "DoubleBusses", "IntBusses", "ShortBusses", "Int24Busses", "LongBusses",
00158             
00159             "FloatBreakpoints", "DoubleBreakpoints", "IntBreakpoints", "ShortBreakpoints", "Int24Breakpoints", "LongBreakpoints",
00160             
00161             "FloatWavetable", "DoubleWavetable", "IntWavetable", "ShortWavetable", "Int24Wavetable", "LongWavetable",
00162             
00163             "FloatSignal", "DoubleSignal", "IntSignal", "ShortSignal", "Int24Signal", "LongSignal",
00164             
00165             "FloatArrayVariable", "DoubleArrayVariable", "IntArrayVariable", "ShortArrayVariable", 
00166             "Int24ArrayVariable", "LongArrayVariable", "CharArrayVariable", "BoolArrayVariable",
00167 
00168             "TextVariable", "TextArrayVariable",
00169 
00170             "FloatChannelVariable", "DoubleChannelVariable", "IntChannelVariable", "ShortChannelVariable", "Int24ChannelVariable", "LongChannelVariable",
00171 
00172             "FloatUnitVariable", "DoubleUnitVariable", "IntUnitVariable", "ShortUnitVariable", "Int24UnitVariable", "LongUnitVariable",
00173 
00174             "FloatBusVariable", "DoubleBusVariable", "IntBusVariable", "ShortBusVariable", "Int24BusVariable", "LongBusVariable", 
00175 
00176             "FloatUnitsVariable", "DoubleUnitsVariable", "IntUnitsVariable", "ShortUnitsVariable", "Int24UnitsVariable", "LongUnitsVariable",
00177 
00178             "FloatBussesVariable", "DoubleBussesVariable", "IntBussesVariable", "ShortBussesVariable", "Int24BussesVariable", "LongBussesVariable", 
00179 
00180             "FloatBreakpointsVariable", "DoubleBreakpointsVariable", "IntBreakpointsVariable", "ShortBreakpointsVariable", "Int24BreakpointsVariable", "LongBreakpointsVariable",
00181 
00182             "FloatWavetableVariable", "DoubleWavetableVariable", "IntWavetableVariable", "ShortWavetableVariable", "Int24WavetableVariable", "LongWavetableVariable",
00183 
00184             "FloatSignalVariable", "DoubleSignalVariable", "IntSignalVariable", "ShortSignalVariable", "Int24SignalVariable", "LongSignalVariable",
00185 
00186             "AudioFileReader",
00187             
00188             "FloatUnitQueue", "DoubleUnitQueue", "ShortUnitQueue", "CharUnitQueue", "IntUnitQueue", "Int24UnitQueue", "LongUnitQueue"
00189         };
00190         
00191         if ((code >= 0) && (code < TypeCode::NumTypeCodes))
00192             return names[code];
00193         else 
00194             return names[0];
00195     }
00196     
00199     static inline plonk::LongLong getPeak (const int code) throw()
00200     {
00201         static const plonk::LongLong peaks[] = {
00202             0, 0, // invalid
00203             1, 1, INT_MAX, SHRT_MAX, PLONK_INT24_MAX, LONG_MAX, LONG_LONG_MAX, CHAR_MAX, 1, // built-ins
00204             1, 1, 1, // fixeds
00205             1, 1, INT_MAX, LONG_MAX, LONG_LONG_MAX, // atomics
00206         };
00207         
00208         if ((code >= 0) && (code < TypeCode::AtomicLongLong))
00209             return peaks[code];
00210         else 
00211             return peaks[0];
00212     }
00213     
00216     static inline double getEpsilon (const int code) throw()
00217     {
00218         static const double epsilons[] = {
00219             0, 0, // invalid
00220             FLT_MIN, DBL_MIN, 1, 1, 1, 1, 1, 1, 1, // built-ins
00221             1.0 / (1 << 8), 1.0 / (1 << 24), 1.0 / (1 << 16), 
00222             FLT_MIN, DBL_MIN, 1, 1, 1 // atomics
00223         };
00224         
00225         if ((code >= 0) && (code < TypeCode::AtomicLongLong))
00226             return epsilons[code];
00227         else 
00228             return epsilons[0];
00229     }
00230     
00231 
00232     static inline bool isUnknown (const int code) throw()           { return (code == TypeCode::Unknown); }
00233     static inline bool isDynamic (const int code) throw()           { return (code == TypeCode::Dynamic); }
00234     
00235     static inline bool isBuiltIn (const int code) throw()           { return (code >= TypeCode::Float) && (code <= TypeCode::Bool) && code != TypeCode::Int24; }
00236     static inline bool isFixed (const int code) throw()             { return (code >= TypeCode::FixI8F8) && (code <= TypeCode::FixI16F16); }
00237     static inline bool isAtomic (const int code) throw()            { return (code >= TypeCode::AtomicFloat) && (code <= TypeCode::AtomicDynamicPointer); }
00238     static inline bool isVariable (const int code) throw()          { return (code >= TypeCode::FloatVariable) && (code <= TypeCode::BoolVariable); }
00239     static inline bool isAtomicVariable (const int code) throw()    { return (code >= TypeCode::AtomicFloatVariable) && (code <= TypeCode::AtomicDynamicPointerVariable); } 
00240     static inline bool isObjectVariable (const int code) throw()    { return (code >= TypeCode::FloatArrayVariable) && (code <= TypeCode::LongSignalVariable); } 
00241     static inline bool isArray (const int code) throw()             { return (code >= TypeCode::FloatArray) && (code <= TypeCode::TextArray); }
00242     static inline bool isChannel (const int code) throw()           { return (code >= TypeCode::FloatChannel) && (code <= TypeCode::LongChannel); }
00243     static inline bool isUnit (const int code) throw()              { return (code >= TypeCode::FloatUnit) && (code <= TypeCode::LongUnit); }
00244     static inline bool isBus (const int code) throw()               { return (code >= TypeCode::FloatBus) && (code <= TypeCode::LongBus); }
00245     static inline bool isUnits (const int code) throw()             { return (code >= TypeCode::FloatUnits) && (code <= TypeCode::LongUnits); }
00246     static inline bool isBusses (const int code) throw()            { return (code >= TypeCode::FloatBusses) && (code <= TypeCode::LongBusses); }
00247     static inline bool isBreakpoints (const int code) throw()       { return (code >= TypeCode::FloatBreakpoints) && (code <= TypeCode::LongBreakpoints); }
00248     static inline bool isWavetable (const int code) throw()         { return (code >= TypeCode::FloatWavetable) && (code <= TypeCode::LongWavetable); }
00249     static inline bool isSignal (const int code) throw()            { return (code >= TypeCode::FloatSignal) && (code <= TypeCode::LongSignal); }
00250     static inline bool isAudioFileReader (const int code) throw()   { return (code == TypeCode::AudioFileReader); }
00251     static inline bool isUnitQueue (const int code) throw()         { return (code >= TypeCode::FloatUnitQueue) && (code <= TypeCode::LongUnitQueue); }
00252 
00253     // could replace these later by designing the enum to be bit-mask based
00254     
00255     static inline bool isFloatType (const int code) throw()         
00256     { 
00257         return (TypeCode::getName (code).indexOf ("Float") == 0) || (TypeCode::getName (code).indexOf ("AtomicFloat") == 0); 
00258     }
00259     
00260     static inline bool isDoubleType (const int code) throw()        
00261     { 
00262         return (TypeCode::getName (code).indexOf ("Double") == 0) || (TypeCode::getName (code).indexOf ("AtomicDouble") == 0); 
00263     }
00264     
00265     static inline bool isIntType (const int code) throw()           
00266     { 
00267         return ((TypeCode::getName (code).indexOf ("Int") == 0) && (TypeCode::getName (code).indexOf ("Int24") != 0))
00268                 || (TypeCode::getName (code).indexOf ("AtomicInt") == 0); 
00269     }
00270     
00271     static inline bool isShortType (const int code) throw()         { return TypeCode::getName (code).indexOf ("Short") == 0; }
00272     static inline bool isInt24Type (const int code) throw()         { return TypeCode::getName (code).indexOf ("Int24") == 0; }
00273     
00274     static inline bool isLongType (const int code) throw()          
00275     { 
00276         return ((TypeCode::getName (code).indexOf ("Long") == 0) && (code != TypeCode::LongLong))
00277                 || (TypeCode::getName (code).indexOf ("AtomicLong") == 0); 
00278     }
00279     
00280     static inline bool isLongLongType (const int code) throw()      { return TypeCode::getName (code).indexOf ("LongLong") == 0; }
00281     static inline bool isCharType (const int code) throw()          { return TypeCode::getName (code).indexOf ("Char") == 0; }
00282     static inline bool isBoolType (const int code) throw()          { return TypeCode::getName (code).indexOf ("Bool") == 0; }
00283     
00284     static inline bool isFloatOrDoubleType (const int code) throw() { return TypeCode::isFloatType (code) || TypeCode::isDoubleType (code); }
00285     
00286     static inline bool isIntegralType (const int code) throw()
00287     {
00288         return  TypeCode::isIntType (code)   ||
00289                 TypeCode::isShortType (code) ||
00290                 TypeCode::isInt24Type (code) ||
00291                 TypeCode::isLongType (code)  ||
00292                 (code == TypeCode::LongLong) ||
00293                 TypeCode::isCharType (code)  ||
00294                 TypeCode::isBoolType (code);
00295     }
00296 };
00297 
00298 
00299 //------------------------------------------------------------------------------
00300 
00301 template<class Type>
00302 class TypeUtilityBase
00303 {
00304 public:
00305     typedef void*           TypeName;
00306     typedef TypeName        PeakType;
00307     typedef double          ScaleType;
00308     typedef Type            OriginalType;
00309     typedef Type const&     PassType;
00310     typedef float           IndexType;
00311     static inline int getTypeCode()     { return TypeCode::Unknown; }
00312     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00313 };
00314 
00315 template<class Type>
00316 class TypeUtilityBase<Type&>
00317 {
00318 public:
00319     typedef void*           TypeName;
00320     typedef TypeName        PeakType;
00321     typedef double          ScaleType;
00322     typedef Type            OriginalType;
00323     typedef Type const&     PassType;
00324     typedef float           IndexType;
00325     static inline int getTypeCode()     { return TypeCode::Unknown; }
00326     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00327 };
00328 
00329 template<class Type>
00330 class TypeUtilityBase<Type const&>
00331 {
00332 public:
00333     typedef void*           TypeName;
00334     typedef TypeName        PeakType;
00335     typedef double          ScaleType;
00336     typedef Type            OriginalType;
00337     typedef Type const&     PassType;
00338     typedef float           IndexType;
00339     static inline int getTypeCode()     { return TypeCode::Unknown; }
00340     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00341 };
00342 
00343 
00344 //------------------------------------------------------------------------------
00345 
00346 
00347 template<>
00348 class TypeUtilityBase<Dynamic>
00349 {
00350 public:
00351     typedef Dynamic         TypeName;
00352     typedef Dynamic         OriginalType;
00353     typedef Dynamic const&  PassType;
00354     typedef float           IndexType;
00355     static inline int  getTypeCode() { return TypeCode::Dynamic; }
00356     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00357     typedef int PeakType;
00358     typedef double ScaleType;
00359 };
00360 
00361 template<>
00362 class TypeUtilityBase<const Dynamic>
00363 {
00364 public:
00365     typedef const Dynamic   TypeName;
00366     typedef Dynamic         OriginalType;
00367     typedef Dynamic const&  PassType;
00368     typedef float           IndexType;
00369     static inline int  getTypeCode() { return TypeCode::Dynamic; }
00370     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00371     typedef int PeakType;
00372     typedef double ScaleType;
00373 };
00374 
00375 template<>
00376 class TypeUtilityBase<float>
00377 {
00378 public:
00379     typedef float           TypeName;
00380     typedef float           PeakType;
00381     typedef float           ScaleType;
00382     typedef float           OriginalType;
00383     typedef float           PassType;
00384     typedef float           IndexType;
00385     static inline int getTypeCode() { return TypeCode::Float; }
00386     static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00387 };
00388 
00389 template<>
00390 class TypeUtilityBase<double>
00391 {
00392 public:
00393     typedef double           TypeName;
00394     typedef double           PeakType;
00395     typedef double           ScaleType;
00396     typedef double           OriginalType;
00397     typedef double           PassType;
00398     typedef double           IndexType;
00399     static inline int getTypeCode() { return TypeCode::Double; }
00400     static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00401 };
00402 
00403 template<>
00404 class TypeUtilityBase<int>
00405 {
00406 public:
00407     typedef int             TypeName;
00408     typedef int             PeakType;
00409     typedef double          ScaleType;
00410     typedef int             OriginalType;
00411     typedef int             PassType;
00412     typedef float           IndexType;
00413     static inline int  getTypeCode() { return TypeCode::Int; }
00414     static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00415     typedef unsigned int UnsignedType;
00416     typedef LongLong WideType;
00417     typedef UnsignedLongLong UnsignedWideType;
00418 
00419 };
00420 
00421 template<>
00422 class TypeUtilityBase<short>
00423 {
00424 public:
00425     typedef short           TypeName;
00426     typedef short           PeakType;
00427     typedef float           ScaleType;
00428     typedef short           OriginalType;
00429     typedef short           PassType;
00430     typedef float           IndexType;
00431     static inline int  getTypeCode() { return TypeCode::Short; }
00432     static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00433     typedef unsigned short UnsignedType;
00434     typedef int WideType;
00435     typedef unsigned int UnsignedWideType;
00436 };
00437 
00438 template<>
00439 class TypeUtilityBase<Int24>
00440 {
00441 public:
00442     typedef Int24           TypeName;
00443     typedef int             PeakType;
00444     typedef float           ScaleType;
00445     typedef Int24           OriginalType;
00446     typedef Int24           PassType;
00447     typedef float           IndexType;
00448     static inline int  getTypeCode() { return TypeCode::Int24; }
00449     static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00450 };
00451 
00452 /*
00453 template<>
00454 class TypeUtilityBase<Long>
00455 {
00456 public:
00457     typedef Long            TypeName;
00458     typedef Long            OriginalType;
00459     typedef Long            PassType;
00460     typedef float           IndexType;
00461  static inline int  getTypeCode() { return TypeCode::Long; }
00462  static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00463 };
00464 */
00465 
00466 template<>
00467 class TypeUtilityBase<LongLong>
00468 {
00469 public:
00470     typedef LongLong        TypeName;
00471     typedef LongLong        PeakType;
00472     typedef double          ScaleType;
00473     typedef LongLong        OriginalType;
00474     typedef LongLong        PassType;
00475     typedef float           IndexType;
00476     static inline int  getTypeCode() { return TypeCode::LongLong; }
00477     static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00478     typedef UnsignedLongLong UnsignedType;
00479     typedef struct { LongLong a; LongLong b; } WideType;
00480     typedef struct { UnsignedLongLong a; UnsignedLongLong b; } UnsignedWideType;
00481 };
00482 
00483 template<>
00484 class TypeUtilityBase<char>
00485 {
00486 public:
00487     typedef char            TypeName;
00488     typedef char            PeakType;
00489     typedef float           ScaleType;
00490     typedef char            OriginalType;
00491     typedef char            PassType;
00492     typedef float           IndexType;
00493     static inline int  getTypeCode() { return TypeCode::Char; }
00494     static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00495     typedef unsigned char UnsignedType;
00496     typedef short WideType;
00497     typedef unsigned short UnsignedWideType;
00498 };
00499 
00500 template<>
00501 class TypeUtilityBase<bool>
00502 {
00503 public:
00504     typedef bool            TypeName;
00505     typedef bool            PeakType;
00506     typedef float           ScaleType;
00507     typedef bool            OriginalType;
00508     typedef bool            PassType;
00509     typedef float           IndexType;
00510     static inline int  getTypeCode() { return TypeCode::Bool; }
00511     static inline const OriginalType& getNull() { static OriginalType null (0); return null; }
00512 };
00513 
00514 template<>
00515 class TypeUtilityBase<FixI8F8>
00516 {
00517 public:
00518     typedef FixI8F8           TypeName;
00519     typedef FixI8F8           PeakType;
00520     typedef FixI8F8           ScaleType;
00521     typedef FixI8F8           OriginalType;
00522     typedef FixI8F8           PassType;
00523     typedef FixI8F8           IndexType;
00524     static inline int getTypeCode() { return TypeCode::FixI8F8; }
00525     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00526 };
00527 
00528 template<>
00529 class TypeUtilityBase<FixI8F24>
00530 {
00531 public:
00532     typedef FixI8F24           TypeName;
00533     typedef FixI8F24           PeakType;
00534     typedef FixI8F24           ScaleType;
00535     typedef FixI8F24           OriginalType;
00536     typedef FixI8F24           PassType;
00537     typedef FixI8F24           IndexType;
00538     static inline int getTypeCode() { return TypeCode::FixI8F24; }
00539     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00540 };
00541 
00542 template<>
00543 class TypeUtilityBase<FixI16F16>
00544 {
00545 public:
00546     typedef FixI16F16           TypeName;
00547     typedef FixI16F16           PeakType;
00548     typedef FixI16F16           ScaleType;
00549     typedef FixI16F16           OriginalType;
00550     typedef FixI16F16           PassType;
00551     typedef FixI16F16           IndexType;
00552     static inline int getTypeCode() { return TypeCode::FixI8F24; }
00553     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00554 };
00555 
00556 template<>
00557 class TypeUtilityBase<AtomicFloat>
00558 {
00559 public:
00560     typedef AtomicFloat         TypeName;
00561     typedef AtomicFloat         OriginalType;
00562     typedef AtomicFloat const&  PassType;
00563     typedef float               IndexType;
00564     static inline int  getTypeCode() { return TypeCode::AtomicFloat; }
00565     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00566     typedef int PeakType;
00567     typedef double ScaleType;
00568 };
00569 
00570 template<>
00571 class TypeUtilityBase<const AtomicFloat>
00572 {
00573 public:
00574     typedef const AtomicFloat      TypeName;
00575     typedef AtomicFloat            OriginalType;
00576     typedef AtomicFloat const&     PassType;
00577     typedef float IndexType;
00578     static inline int  getTypeCode() { return TypeCode::AtomicFloat; }
00579     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00580     typedef int PeakType;
00581     typedef double ScaleType;
00582 };
00583 
00584 template<>
00585 class TypeUtilityBase<AtomicDouble>
00586 {
00587 public:
00588     typedef AtomicDouble            TypeName;
00589     typedef AtomicDouble            OriginalType;
00590     typedef AtomicDouble const&     PassType;
00591     typedef double                  IndexType;
00592     static inline int  getTypeCode() { return TypeCode::AtomicDouble; }
00593     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00594     typedef int PeakType;
00595     typedef double ScaleType;
00596 };
00597 
00598 template<>
00599 class TypeUtilityBase<const AtomicDouble>
00600 {
00601 public:
00602     typedef const AtomicDouble  TypeName;
00603     typedef AtomicDouble        OriginalType;
00604     typedef AtomicDouble const& PassType;
00605     typedef double              IndexType;
00606     static inline int  getTypeCode() { return TypeCode::AtomicDouble; }
00607     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00608     typedef int PeakType;
00609     typedef double ScaleType;
00610 };
00611 
00612 template<>
00613 class TypeUtilityBase<AtomicInt>
00614 {
00615 public:
00616     typedef AtomicInt           TypeName;
00617     typedef AtomicInt           OriginalType;
00618     typedef AtomicInt const&    PassType;
00619     typedef float               IndexType;
00620     static inline int  getTypeCode() { return TypeCode::AtomicInt; }
00621     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00622     typedef int PeakType;
00623     typedef double ScaleType;
00624 };
00625 
00626 template<>
00627 class TypeUtilityBase<const AtomicInt>
00628 {
00629 public:
00630     typedef const AtomicInt     TypeName;
00631     typedef AtomicInt           OriginalType;
00632     typedef AtomicInt const&    PassType;
00633     typedef float               IndexType;
00634     static inline int  getTypeCode() { return TypeCode::AtomicInt; }
00635     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00636     typedef int PeakType;
00637     typedef double ScaleType;
00638 };
00639 
00640 /*
00641 template<>
00642 class TypeUtilityBase<AtomicLong>
00643 {
00644 public:
00645     typedef AtomicLong          TypeName;
00646     typedef AtomicLong          OriginalType;
00647     typedef AtomicLong const&   PassType;
00648     typedef float               IndexType;
00649  static inline int  getTypeCode() { return TypeCode::AtomicLong; }
00650  static inline const OriginalType& getNull() { static OriginalType null; return null; }
00651 };
00652 
00653 template<>
00654 class TypeUtilityBase<const AtomicLong>
00655 {
00656 public:
00657     typedef const AtomicLong    TypeName;
00658     typedef AtomicLong          OriginalType;
00659     typedef AtomicLong const&   PassType;
00660     typedef float               IndexType;
00661  static inline int  getTypeCode() { return TypeCode::AtomicLong; }
00662  static inline const OriginalType& getNull() { static OriginalType null; return null; }
00663 };
00664 */
00665 
00666 template<>
00667 class TypeUtilityBase<AtomicLongLong>
00668 {
00669 public:
00670     typedef AtomicLongLong          TypeName;
00671     typedef AtomicLongLong          OriginalType;
00672     typedef AtomicLongLong const&   PassType;
00673     typedef float                   IndexType;
00674     static inline int  getTypeCode() { return TypeCode::AtomicLongLong; }
00675     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00676     typedef int PeakType;
00677     typedef double ScaleType;
00678 };
00679 
00680 template<>
00681 class TypeUtilityBase<const AtomicLongLong>
00682 {
00683 public:
00684     typedef const AtomicLongLong    TypeName;
00685     typedef AtomicLongLong          OriginalType;
00686     typedef AtomicLongLong const&   PassType;
00687     typedef float                   IndexType;
00688     static inline int  getTypeCode() { return TypeCode::AtomicLongLong; }
00689     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00690     typedef int PeakType;
00691     typedef double ScaleType;
00692 };
00693 
00694 template<>
00695 class TypeUtilityBase<AtomicPointer>
00696 {
00697 public:
00698     typedef AtomicPointer          TypeName;
00699     typedef AtomicPointer          OriginalType;
00700     typedef AtomicPointer const&   PassType;
00701     typedef int                    IndexType;
00702     static inline int  getTypeCode() { return TypeCode::AtomicPointer; }
00703     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00704     typedef int PeakType;
00705     typedef double ScaleType;
00706 };
00707 
00708 template<>
00709 class TypeUtilityBase<const AtomicPointer>
00710 {
00711 public:
00712     typedef const AtomicPointer    TypeName;
00713     typedef AtomicPointer          OriginalType;
00714     typedef AtomicPointer const&   PassType;
00715     typedef int                    IndexType;
00716     static inline int  getTypeCode() { return TypeCode::AtomicPointer; }
00717     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00718     typedef int PeakType;
00719     typedef double ScaleType;
00720 };
00721 
00722 template<>
00723 class TypeUtilityBase<AtomicExtendedPointer>
00724 {
00725 public:
00726     typedef AtomicExtendedPointer          TypeName;
00727     typedef AtomicExtendedPointer          OriginalType;
00728     typedef AtomicExtendedPointer const&   PassType;
00729     typedef int                            IndexType;
00730     static inline int  getTypeCode() { return TypeCode::AtomicExtendedPointer; }
00731     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00732     typedef int PeakType;
00733     typedef double ScaleType;
00734 };
00735 
00736 template<>
00737 class TypeUtilityBase<const AtomicExtendedPointer>
00738 {
00739 public:
00740     typedef const AtomicExtendedPointer    TypeName;
00741     typedef AtomicExtendedPointer          OriginalType;
00742     typedef AtomicExtendedPointer const&   PassType;
00743     typedef int                            IndexType;
00744     static inline int  getTypeCode() { return TypeCode::AtomicExtendedPointer; }
00745     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00746     typedef int PeakType;
00747     typedef double ScaleType;
00748 };
00749 
00750 template<>
00751 class TypeUtilityBase<AtomicDynamicPointer>
00752 {
00753 public:
00754     typedef AtomicDynamicPointer          TypeName;
00755     typedef AtomicDynamicPointer          OriginalType;
00756     typedef AtomicDynamicPointer const&   PassType;
00757     typedef int                           IndexType;
00758     static inline int  getTypeCode() { return TypeCode::AtomicDynamicPointer; }
00759     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00760     typedef int PeakType;
00761     typedef double ScaleType;
00762 };
00763 
00764 template<>
00765 class TypeUtilityBase<const AtomicDynamicPointer>
00766 {
00767 public:
00768     typedef const AtomicDynamicPointer    TypeName;
00769     typedef AtomicDynamicPointer          OriginalType;
00770     typedef AtomicDynamicPointer const&   PassType;
00771     typedef int                           IndexType;
00772     static inline int  getTypeCode() { return TypeCode::AtomicDynamicPointer; }
00773     static inline const OriginalType& getNull() { static OriginalType null; return null; }
00774     typedef int PeakType;
00775     typedef double ScaleType;
00776 };
00777 
00778 template<>
00779 class TypeUtilityBase<FloatVariable>
00780 {
00781 public:
00782     typedef FloatVariable           TypeName;
00783     typedef FloatVariable           OriginalType;
00784     typedef FloatVariable const&    PassType;
00785     typedef float                   IndexType;
00786     static inline int  getTypeCode() { return TypeCode::FloatVariable; }
00787     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00788     typedef int PeakType;
00789     typedef double ScaleType;
00790 };
00791 
00792 template<>
00793 class TypeUtilityBase<const FloatVariable>
00794 {
00795 public:
00796     typedef const FloatVariable     TypeName;
00797     typedef FloatVariable           OriginalType;
00798     typedef FloatVariable const&    PassType;
00799     typedef float                   IndexType;
00800     static inline int  getTypeCode() { return TypeCode::FloatVariable; }
00801     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00802     typedef int PeakType;
00803     typedef double ScaleType;
00804 };
00805 
00806 template<>
00807 class TypeUtilityBase<DoubleVariable>
00808 {
00809 public:
00810     typedef DoubleVariable          TypeName;
00811     typedef DoubleVariable          OriginalType;
00812     typedef DoubleVariable const&   PassType;
00813     typedef double                  IndexType;
00814     static inline int  getTypeCode() { return TypeCode::DoubleVariable; }
00815     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00816     typedef int PeakType;
00817     typedef double ScaleType;
00818 };
00819 
00820 template<>
00821 class TypeUtilityBase<const DoubleVariable>
00822 {
00823 public:
00824     typedef const DoubleVariable    TypeName;
00825     typedef DoubleVariable          OriginalType;
00826     typedef DoubleVariable const&   PassType;
00827     typedef double                  IndexType;
00828     static inline int  getTypeCode() { return TypeCode::DoubleVariable; }
00829     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00830     typedef int PeakType;
00831     typedef double ScaleType;
00832 };
00833 
00834 template<>
00835 class TypeUtilityBase<IntVariable>
00836 {
00837 public:
00838     typedef IntVariable         TypeName;
00839     typedef IntVariable         OriginalType;
00840     typedef IntVariable const&  PassType;
00841     typedef float               IndexType;
00842     static inline int  getTypeCode() { return TypeCode::IntVariable; }
00843     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00844     typedef int PeakType;
00845     typedef double ScaleType;
00846 };
00847 
00848 template<>
00849 class TypeUtilityBase<const IntVariable>
00850 {
00851 public:
00852     typedef const IntVariable   TypeName;
00853     typedef IntVariable         OriginalType;
00854     typedef IntVariable const&  PassType;
00855     typedef float               IndexType;
00856     static inline int  getTypeCode() { return TypeCode::IntVariable; }
00857     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00858     typedef int PeakType;
00859     typedef double ScaleType;
00860 };
00861 
00862 template<>
00863 class TypeUtilityBase<ShortVariable>
00864 {
00865 public:
00866     typedef ShortVariable           TypeName;
00867     typedef ShortVariable           OriginalType;
00868     typedef ShortVariable const&    PassType;
00869     typedef float                   IndexType;
00870     static inline int  getTypeCode() { return TypeCode::ShortVariable; }
00871     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00872     typedef int PeakType;
00873     typedef double ScaleType;
00874 };
00875 
00876 template<>
00877 class TypeUtilityBase<const ShortVariable>
00878 {
00879 public:
00880     typedef const ShortVariable     TypeName;
00881     typedef ShortVariable           OriginalType;
00882     typedef ShortVariable const&    PassType;
00883     typedef float                   IndexType;
00884     static inline int  getTypeCode() { return TypeCode::ShortVariable; }
00885     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00886     typedef int PeakType;
00887     typedef double ScaleType;
00888 };
00889 
00890 template<>
00891 class TypeUtilityBase<Int24Variable>
00892 {
00893 public:
00894     typedef Int24Variable           TypeName;
00895     typedef Int24Variable           OriginalType;
00896     typedef Int24Variable const&    PassType;
00897     typedef float                   IndexType;
00898     static inline int  getTypeCode() { return TypeCode::Int24Variable; }
00899     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00900     typedef int PeakType;
00901     typedef double ScaleType;
00902 };
00903 
00904 template<>
00905 class TypeUtilityBase<const Int24Variable>
00906 {
00907 public:
00908     typedef const Int24Variable     TypeName;
00909     typedef Int24Variable           OriginalType;
00910     typedef Int24Variable const&    PassType;
00911     typedef float                   IndexType;
00912     static inline int  getTypeCode() { return TypeCode::Int24Variable; }
00913     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00914     typedef int PeakType;
00915     typedef double ScaleType;
00916 };
00917 
00918 template<>
00919 class TypeUtilityBase<LongVariable>
00920 {
00921 public:
00922     typedef LongVariable            TypeName;
00923     typedef LongVariable            OriginalType;
00924     typedef LongVariable const&     PassType;
00925     typedef float                   IndexType;
00926     static inline int  getTypeCode() { return TypeCode::LongVariable; }
00927     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00928     typedef int PeakType;
00929     typedef double ScaleType;
00930 };
00931 
00932 template<>
00933 class TypeUtilityBase<const LongVariable>
00934 {
00935 public:
00936     typedef const LongVariable      TypeName;
00937     typedef LongVariable            OriginalType;
00938     typedef LongVariable const&     PassType;
00939     typedef float                   IndexType;
00940     static inline int  getTypeCode() { return TypeCode::LongVariable; }
00941     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00942     typedef int PeakType;
00943     typedef double ScaleType;
00944 };
00945 
00946 template<>
00947 class TypeUtilityBase<CharVariable>
00948 {
00949 public:
00950     typedef CharVariable            TypeName;
00951     typedef CharVariable            OriginalType;
00952     typedef CharVariable const&     PassType;
00953     typedef float                   IndexType;
00954     static inline int  getTypeCode() { return TypeCode::CharVariable; }
00955     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00956     typedef int PeakType;
00957     typedef double ScaleType;
00958 };
00959 
00960 template<>
00961 class TypeUtilityBase<const CharVariable>
00962 {
00963 public:
00964     typedef const CharVariable      TypeName;
00965     typedef CharVariable            OriginalType;
00966     typedef CharVariable const&     PassType;
00967     typedef float                   IndexType;
00968     static inline int  getTypeCode() { return TypeCode::CharVariable; }
00969     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00970     typedef int PeakType;
00971     typedef double ScaleType;
00972 };
00973 
00974 template<>
00975 class TypeUtilityBase<BoolVariable>
00976 {
00977 public:
00978     typedef BoolVariable            TypeName;
00979     typedef BoolVariable            OriginalType;
00980     typedef BoolVariable const&     PassType;
00981     typedef float                   IndexType;
00982     static inline int  getTypeCode() { return TypeCode::BoolVariable; }
00983     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00984     typedef int PeakType;
00985     typedef double ScaleType;
00986 };
00987 
00988 template<>
00989 class TypeUtilityBase<const BoolVariable>
00990 {
00991 public:
00992     typedef const BoolVariable      TypeName;
00993     typedef BoolVariable            OriginalType;
00994     typedef BoolVariable const&     PassType;
00995     typedef float                   IndexType;
00996     static inline int  getTypeCode() { return TypeCode::BoolVariable; }
00997     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
00998     typedef int PeakType;
00999     typedef double ScaleType;
01000 };
01001 
01002 template<>
01003 class TypeUtilityBase<AtomicFloatVariable>
01004 {
01005 public:
01006     typedef AtomicFloatVariable             TypeName;
01007     typedef AtomicFloatVariable             OriginalType;
01008     typedef AtomicFloatVariable const&      PassType;
01009     typedef float                           IndexType;
01010     static inline int  getTypeCode() { return TypeCode::AtomicFloatVariable; }
01011     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01012     typedef int PeakType;
01013     typedef double ScaleType;
01014 };
01015 
01016 template<>
01017 class TypeUtilityBase<const AtomicFloatVariable>
01018 {
01019 public:
01020     typedef const AtomicFloatVariable       TypeName;
01021     typedef AtomicFloatVariable             OriginalType;
01022     typedef AtomicFloatVariable const&      PassType;
01023     typedef float                           IndexType;
01024     static inline int  getTypeCode() { return TypeCode::AtomicFloatVariable; }
01025     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01026     typedef int PeakType;
01027     typedef double ScaleType;
01028 };
01029 
01030 template<>
01031 class TypeUtilityBase<AtomicDoubleVariable>
01032 {
01033 public:
01034     typedef AtomicDoubleVariable            TypeName;
01035     typedef AtomicDoubleVariable            OriginalType;
01036     typedef AtomicDoubleVariable const&     PassType;
01037     typedef double                          IndexType;
01038     static inline int  getTypeCode() { return TypeCode::AtomicDoubleVariable; }
01039     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01040     typedef int PeakType;
01041     typedef double ScaleType;
01042 };
01043 
01044 template<>
01045 class TypeUtilityBase<const AtomicDoubleVariable>
01046 {
01047 public:
01048     typedef const AtomicDoubleVariable      TypeName;
01049     typedef AtomicDoubleVariable            OriginalType;
01050     typedef AtomicDoubleVariable const&     PassType;
01051     typedef double                          IndexType;
01052     static inline int  getTypeCode() { return TypeCode::AtomicDoubleVariable; }
01053     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01054     typedef int PeakType;
01055     typedef double ScaleType;
01056 };
01057 
01058 template<>
01059 class TypeUtilityBase<AtomicIntVariable>
01060 {
01061 public:
01062     typedef AtomicIntVariable               TypeName;
01063     typedef AtomicIntVariable               OriginalType;
01064     typedef AtomicIntVariable const&        PassType;
01065     typedef float                           IndexType;
01066     static inline int  getTypeCode() { return TypeCode::AtomicIntVariable; }
01067     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01068     typedef int PeakType;
01069     typedef double ScaleType;
01070 };
01071 
01072 template<>
01073 class TypeUtilityBase<const AtomicIntVariable>
01074 {
01075 public:
01076     typedef const AtomicIntVariable         TypeName;
01077     typedef AtomicIntVariable               OriginalType;
01078     typedef AtomicIntVariable const&        PassType;
01079     typedef float                           IndexType;
01080     static inline int  getTypeCode() { return TypeCode::AtomicIntVariable; }
01081     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01082     typedef int PeakType;
01083     typedef double ScaleType;
01084 };
01085 
01086 template<>
01087 class TypeUtilityBase<AtomicLongVariable>
01088 {
01089 public:
01090     typedef AtomicLongVariable              TypeName;
01091     typedef AtomicLongVariable              OriginalType;
01092     typedef AtomicLongVariable const&       PassType;
01093     typedef float                           IndexType;
01094     static inline int  getTypeCode() { return TypeCode::AtomicLongVariable; }
01095     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01096     typedef int PeakType;
01097     typedef double ScaleType;
01098 };
01099 
01100 template<>
01101 class TypeUtilityBase<const AtomicLongVariable>
01102 {
01103 public:
01104     typedef const AtomicLongVariable        TypeName;
01105     typedef AtomicLongVariable              OriginalType;
01106     typedef AtomicLongVariable const&       PassType;
01107     typedef float IndexType;
01108     static inline int  getTypeCode() { return TypeCode::AtomicLongVariable; }
01109     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01110     typedef int PeakType;
01111     typedef double ScaleType;
01112 };
01113 
01114 template<>
01115 class TypeUtilityBase<AtomicPointerVariable>
01116 {
01117 public:
01118     typedef AtomicPointerVariable              TypeName;
01119     typedef AtomicPointerVariable              OriginalType;
01120     typedef AtomicPointerVariable const&       PassType;
01121     typedef int                                IndexType;
01122     static inline int  getTypeCode() { return TypeCode::AtomicPointerVariable; }
01123     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01124     typedef int PeakType;
01125     typedef double ScaleType;
01126 };
01127 
01128 template<>
01129 class TypeUtilityBase<const AtomicPointerVariable>
01130 {
01131 public:
01132     typedef const AtomicPointerVariable        TypeName;
01133     typedef AtomicPointerVariable              OriginalType;
01134     typedef AtomicPointerVariable const&       PassType;
01135     typedef int                                IndexType;
01136     static inline int  getTypeCode() { return TypeCode::AtomicPointerVariable; }
01137     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01138     typedef int PeakType;
01139     typedef double ScaleType;
01140 };
01141 
01142 template<>
01143 class TypeUtilityBase<AtomicExtendedPointerVariable>
01144 {
01145 public:
01146     typedef AtomicExtendedPointerVariable              TypeName;
01147     typedef AtomicExtendedPointerVariable              OriginalType;
01148     typedef AtomicExtendedPointerVariable const&       PassType;
01149     typedef int                                        IndexType;
01150     static inline int  getTypeCode() { return TypeCode::AtomicExtendedPointerVariable; }
01151     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01152     typedef int PeakType;
01153     typedef double ScaleType;
01154 };
01155 
01156 template<>
01157 class TypeUtilityBase<const AtomicExtendedPointerVariable>
01158 {
01159 public:
01160     typedef const AtomicExtendedPointerVariable        TypeName;
01161     typedef AtomicExtendedPointerVariable              OriginalType;
01162     typedef AtomicExtendedPointerVariable const&       PassType;
01163     typedef int                                        IndexType;
01164     static inline int  getTypeCode() { return TypeCode::AtomicExtendedPointerVariable; }
01165     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01166     typedef int PeakType;
01167     typedef double ScaleType;
01168 };
01169 
01170 template<>
01171 class TypeUtilityBase<AtomicDynamicPointerVariable>
01172 {
01173 public:
01174     typedef AtomicDynamicPointerVariable              TypeName;
01175     typedef AtomicDynamicPointerVariable              OriginalType;
01176     typedef AtomicDynamicPointerVariable const&       PassType;
01177     typedef int                                       IndexType;
01178     static inline int  getTypeCode() { return TypeCode::AtomicDynamicPointerVariable; }
01179     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01180     typedef int PeakType;
01181     typedef double ScaleType;
01182 };
01183 
01184 template<>
01185 class TypeUtilityBase<const AtomicDynamicPointerVariable>
01186 {
01187 public:
01188     typedef const AtomicDynamicPointerVariable        TypeName;
01189     typedef AtomicDynamicPointerVariable              OriginalType;
01190     typedef AtomicDynamicPointerVariable const&       PassType;
01191     typedef int                                       IndexType;
01192     static inline int  getTypeCode() { return TypeCode::AtomicDynamicPointerVariable; }
01193     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01194     typedef int PeakType;
01195     typedef double ScaleType;
01196 };
01197 
01198 //------------------------------------------------------------------------------
01199 
01200 template<>
01201 class TypeUtilityBase<FloatArray>
01202 {
01203 public:
01204     typedef FloatArray              TypeName;
01205     typedef FloatArray              OriginalType;
01206     typedef FloatArray const&       PassType;
01207     typedef float                   IndexType;
01208     static inline int  getTypeCode() { return TypeCode::FloatArray; }
01209     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01210     typedef int PeakType;
01211     typedef double ScaleType;
01212 };
01213 
01214 template<>
01215 class TypeUtilityBase<const FloatArray>
01216 {
01217 public:
01218     typedef const FloatArray        TypeName;
01219     typedef FloatArray              OriginalType;
01220     typedef FloatArray const&       PassType;
01221     typedef float                   IndexType;
01222     static inline int  getTypeCode() { return TypeCode::FloatArray; }
01223     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01224     typedef int PeakType;
01225     typedef double ScaleType;
01226 };
01227 
01228 template<>
01229 class TypeUtilityBase<DoubleArray>
01230 {
01231 public:
01232     typedef DoubleArray             TypeName;
01233     typedef DoubleArray             OriginalType;
01234     typedef DoubleArray const&      PassType;
01235     typedef double                  IndexType;
01236     static inline int  getTypeCode() { return TypeCode::DoubleArray; }
01237     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01238     typedef int PeakType;
01239     typedef double ScaleType;
01240 };
01241 
01242 template<>
01243 class TypeUtilityBase<const DoubleArray>
01244 {
01245 public:
01246     typedef const DoubleArray       TypeName;
01247     typedef DoubleArray             OriginalType;
01248     typedef DoubleArray const&      PassType;
01249     typedef double                  IndexType;
01250     static inline int  getTypeCode() { return TypeCode::DoubleArray; }
01251     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01252     typedef int PeakType;
01253     typedef double ScaleType;
01254 };
01255 
01256 template<>
01257 class TypeUtilityBase<IntArray>
01258 {
01259 public:
01260     typedef IntArray            TypeName;
01261     typedef IntArray            OriginalType;
01262     typedef IntArray const&     PassType;
01263     typedef float               IndexType;
01264     static inline int  getTypeCode() { return TypeCode::IntArray; }
01265     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01266     typedef int PeakType;
01267     typedef double ScaleType;
01268 };
01269 
01270 template<>
01271 class TypeUtilityBase<const IntArray>
01272 {
01273 public:
01274     typedef const IntArray      TypeName;
01275     typedef IntArray            OriginalType;
01276     typedef IntArray const&     PassType;
01277     typedef float               IndexType;
01278     static inline int  getTypeCode() { return TypeCode::IntArray; }
01279     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01280     typedef int PeakType;
01281     typedef double ScaleType;
01282 };
01283 
01284 template<>
01285 class TypeUtilityBase<ShortArray>
01286 {
01287 public:
01288     typedef ShortArray          TypeName;
01289     typedef ShortArray          OriginalType;
01290     typedef ShortArray const&   PassType;
01291     typedef float               IndexType;
01292     static inline int  getTypeCode() { return TypeCode::ShortArray; }
01293     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01294     typedef int PeakType;
01295     typedef double ScaleType;
01296 };
01297 
01298 template<>
01299 class TypeUtilityBase<const ShortArray>
01300 {
01301 public:
01302     typedef const ShortArray    TypeName;
01303     typedef ShortArray          OriginalType;
01304     typedef ShortArray const&   PassType;
01305     typedef float               IndexType;
01306     static inline int  getTypeCode() { return TypeCode::ShortArray; }
01307     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01308     typedef int PeakType;
01309     typedef double ScaleType;
01310 };
01311 
01312 template<>
01313 class TypeUtilityBase<Int24Array>
01314 {
01315 public:
01316     typedef Int24Array          TypeName;
01317     typedef Int24Array          OriginalType;
01318     typedef Int24Array const&   PassType;
01319     typedef float               IndexType;
01320     static inline int  getTypeCode() { return TypeCode::Int24Array; }
01321     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01322     typedef int PeakType;
01323     typedef double ScaleType;
01324 };
01325 
01326 template<>
01327 class TypeUtilityBase<const Int24Array>
01328 {
01329 public:
01330     typedef const Int24Array    TypeName;
01331     typedef Int24Array          OriginalType;
01332     typedef Int24Array const&   PassType;
01333     typedef float               IndexType;
01334     static inline int  getTypeCode() { return TypeCode::Int24Array; }
01335     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01336     typedef int PeakType;
01337     typedef double ScaleType;
01338 };
01339 
01340 template<>
01341 class TypeUtilityBase<LongArray>
01342 {
01343 public:
01344     typedef LongArray           TypeName;
01345     typedef LongArray           OriginalType;
01346     typedef LongArray const&    PassType;
01347     typedef float               IndexType;
01348     static inline int  getTypeCode() { return TypeCode::LongArray; }
01349     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01350     typedef int PeakType;
01351     typedef double ScaleType;
01352 };
01353 
01354 template<>
01355 class TypeUtilityBase<const LongArray>
01356 {
01357 public:
01358     typedef const LongArray     TypeName;
01359     typedef LongArray           OriginalType;
01360     typedef LongArray const&    PassType;
01361     typedef float               IndexType;
01362     static inline int  getTypeCode() { return TypeCode::LongArray; }
01363     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01364     typedef int PeakType;
01365     typedef double ScaleType;
01366 };
01367 
01368 template<>
01369 class TypeUtilityBase<CharArray>
01370 {
01371 public:
01372     typedef CharArray           TypeName;
01373     typedef CharArray           OriginalType;
01374     typedef CharArray const&    PassType;
01375     typedef float               IndexType;
01376     static inline int  getTypeCode() { return TypeCode::CharArray; }
01377     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01378     typedef int PeakType;
01379     typedef double ScaleType;
01380 };
01381 
01382 template<>
01383 class TypeUtilityBase<const CharArray>
01384 {
01385 public:
01386     typedef const CharArray     TypeName;
01387     typedef CharArray           OriginalType;
01388     typedef CharArray const&    PassType;
01389     typedef float               IndexType;
01390     static inline int  getTypeCode() { return TypeCode::CharArray; }
01391     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01392     typedef int PeakType;
01393     typedef double ScaleType;
01394 };
01395 
01396 template<>
01397 class TypeUtilityBase<BoolArray>
01398 {
01399 public:
01400     typedef BoolArray           TypeName;
01401     typedef BoolArray           OriginalType;
01402     typedef BoolArray const&    PassType;
01403     typedef float               IndexType;
01404     static inline int  getTypeCode() { return TypeCode::BoolArray; }
01405     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01406     typedef int PeakType;
01407     typedef double ScaleType;
01408 };
01409 
01410 template<>
01411 class TypeUtilityBase<const BoolArray>
01412 {
01413 public:
01414     typedef const BoolArray     TypeName;
01415     typedef BoolArray           OriginalType;
01416     typedef BoolArray const&    PassType;
01417     typedef float               IndexType;
01418     static inline int  getTypeCode() { return TypeCode::BoolArray; }
01419     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01420     typedef int PeakType;
01421     typedef double ScaleType;
01422 };
01423 
01424 template<>
01425 class TypeUtilityBase<DynamicArray>
01426 {
01427 public:
01428     typedef DynamicArray           TypeName;
01429     typedef DynamicArray           OriginalType;
01430     typedef DynamicArray const&    PassType;
01431     typedef float                  IndexType;
01432     static inline int  getTypeCode() { return TypeCode::DynamicArray; }
01433     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01434     typedef int PeakType;
01435     typedef double ScaleType;
01436 };
01437 
01438 template<>
01439 class TypeUtilityBase<const DynamicArray>
01440 {
01441 public:
01442     typedef const DynamicArray     TypeName;
01443     typedef DynamicArray           OriginalType;
01444     typedef DynamicArray const&    PassType;
01445     typedef float                  IndexType;
01446     static inline int  getTypeCode() { return TypeCode::DynamicArray; }
01447     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01448     typedef int PeakType;
01449     typedef double ScaleType;
01450 };
01451 
01452 template<>
01453 class TypeUtilityBase<plonk::Text>
01454 {
01455 public:
01456     typedef plonk::Text         TypeName;
01457     typedef plonk::Text         OriginalType;
01458     typedef plonk::Text const&  PassType;
01459     typedef int                 IndexType;
01460     static inline int  getTypeCode() { return TypeCode::Text; }
01461     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01462     typedef int PeakType;
01463     typedef double ScaleType;
01464 };
01465 
01466 template<>
01467 class TypeUtilityBase<const plonk::Text>
01468 {
01469 public:
01470     typedef const plonk::Text   TypeName;
01471     typedef plonk::Text         OriginalType;
01472     typedef plonk::Text const&  PassType;
01473     typedef int                 IndexType;
01474     static inline int  getTypeCode() { return TypeCode::Text; }
01475     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01476     typedef int PeakType;
01477     typedef double ScaleType;
01478 };
01479 
01480 template<>
01481 class TypeUtilityBase<TextArray>
01482 {
01483 public:
01484     typedef TextArray           TypeName;
01485     typedef TextArray           OriginalType;
01486     typedef TextArray const&    PassType;
01487     typedef int                 IndexType;
01488     static inline int  getTypeCode() { return TypeCode::TextArray; }
01489     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01490     typedef int PeakType;
01491     typedef double ScaleType;
01492 };
01493 
01494 template<>
01495 class TypeUtilityBase<const TextArray>
01496 {
01497 public:
01498     typedef const TextArray     TypeName;
01499     typedef TextArray           OriginalType;
01500     typedef TextArray const&    PassType;
01501     typedef int                 IndexType;
01502     static inline int  getTypeCode() { return TypeCode::TextArray; }
01503     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01504     typedef int PeakType;
01505     typedef double ScaleType;
01506 };
01507 
01508 template<>
01509 class TypeUtilityBase<FloatChannel>
01510 {
01511 public:
01512     typedef FloatChannel        TypeName;
01513     typedef FloatChannel        OriginalType;
01514     typedef FloatChannel const& PassType;
01515     typedef float               IndexType;
01516     static inline int  getTypeCode() { return TypeCode::FloatChannel; }
01517     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01518     typedef int PeakType;
01519     typedef double ScaleType;
01520 };
01521 
01522 template<>
01523 class TypeUtilityBase<const FloatChannel>
01524 {
01525 public:
01526     typedef const FloatChannel  TypeName;
01527     typedef FloatChannel        OriginalType;
01528     typedef FloatChannel const& PassType;
01529     typedef float               IndexType;
01530     static inline int  getTypeCode() { return TypeCode::FloatChannel; }
01531     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01532     typedef int PeakType;
01533     typedef double ScaleType;
01534 };
01535 
01536 template<>
01537 class TypeUtilityBase<DoubleChannel>
01538 {
01539 public:
01540     typedef DoubleChannel           TypeName;
01541     typedef DoubleChannel           OriginalType;
01542     typedef DoubleChannel const&    PassType;
01543     typedef double                  IndexType;
01544     static inline int  getTypeCode() { return TypeCode::DoubleChannel; }
01545     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01546     typedef int PeakType;
01547     typedef double ScaleType;
01548 };
01549 
01550 template<>
01551 class TypeUtilityBase<const DoubleChannel>
01552 {
01553 public:
01554     typedef const DoubleChannel     TypeName;
01555     typedef DoubleChannel           OriginalType;
01556     typedef DoubleChannel const&    PassType;
01557     typedef double                  IndexType;
01558     static inline int  getTypeCode() { return TypeCode::DoubleChannel; }
01559     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01560     typedef int PeakType;
01561     typedef double ScaleType;
01562 };
01563 
01564 template<>
01565 class TypeUtilityBase<IntChannel>
01566 {
01567 public:
01568     typedef IntChannel              TypeName;
01569     typedef IntChannel              OriginalType;
01570     typedef IntChannel const&       PassType;
01571     typedef float                   IndexType;
01572     static inline int  getTypeCode() { return TypeCode::IntChannel; }
01573     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01574     typedef int PeakType;
01575     typedef double ScaleType;
01576 };
01577 
01578 template<>
01579 class TypeUtilityBase<const IntChannel>
01580 {
01581 public:
01582     typedef const IntChannel        TypeName;
01583     typedef IntChannel              OriginalType;
01584     typedef IntChannel const&       PassType;
01585     typedef float                   IndexType;
01586     static inline int  getTypeCode() { return TypeCode::IntChannel; }
01587     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01588     typedef int PeakType;
01589     typedef double ScaleType;
01590 };
01591 
01592 template<>
01593 class TypeUtilityBase<ShortChannel>
01594 {
01595 public:
01596     typedef ShortChannel            TypeName;
01597     typedef ShortChannel            OriginalType;
01598     typedef ShortChannel const&     PassType;
01599     typedef float                   IndexType;
01600     static inline int  getTypeCode() { return TypeCode::ShortChannel; }
01601     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01602     typedef int PeakType;
01603     typedef double ScaleType;
01604 };
01605 
01606 template<>
01607 class TypeUtilityBase<const ShortChannel>
01608 {
01609 public:
01610     typedef const ShortChannel      TypeName;
01611     typedef ShortChannel            OriginalType;
01612     typedef ShortChannel const&     PassType;
01613     typedef float                   IndexType;
01614     static inline int  getTypeCode() { return TypeCode::ShortChannel; }
01615     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01616     typedef int PeakType;
01617     typedef double ScaleType;
01618 };
01619 
01620 template<>
01621 class TypeUtilityBase<Int24Channel>
01622 {
01623 public:
01624     typedef Int24Channel            TypeName;
01625     typedef Int24Channel            OriginalType;
01626     typedef Int24Channel const&     PassType;
01627     typedef float                   IndexType;
01628     static inline int  getTypeCode() { return TypeCode::Int24Channel; }
01629     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01630     typedef int PeakType;
01631     typedef double ScaleType;
01632 };
01633 
01634 template<>
01635 class TypeUtilityBase<const Int24Channel>
01636 {
01637 public:
01638     typedef const Int24Channel      TypeName;
01639     typedef Int24Channel            OriginalType;
01640     typedef Int24Channel const&     PassType;
01641     typedef float                   IndexType;
01642     static inline int  getTypeCode() { return TypeCode::Int24Channel; }
01643     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01644     typedef int PeakType;
01645     typedef double ScaleType;
01646 };
01647 
01648 template<>
01649 class TypeUtilityBase<LongChannel>
01650 {
01651 public:
01652     typedef LongChannel             TypeName;
01653     typedef LongChannel             OriginalType;
01654     typedef LongChannel const&      PassType;
01655     typedef float                   IndexType;
01656     static inline int  getTypeCode() { return TypeCode::LongChannel; }
01657     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01658     typedef int PeakType;
01659     typedef double ScaleType;
01660 };
01661 
01662 template<>
01663 class TypeUtilityBase<const LongChannel>
01664 {
01665 public:
01666     typedef const LongChannel       TypeName;
01667     typedef LongChannel             OriginalType;
01668     typedef LongChannel const&      PassType;
01669     typedef float                   IndexType;
01670     static inline int  getTypeCode() { return TypeCode::LongChannel; }
01671     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01672     typedef int PeakType;
01673     typedef double ScaleType;
01674 };
01675 
01676 template<>
01677 class TypeUtilityBase<FloatUnit>
01678 {
01679 public:
01680     typedef FloatUnit               TypeName;
01681     typedef FloatUnit               OriginalType;
01682     typedef FloatUnit const&        PassType;
01683     typedef float                   IndexType;
01684     static inline int  getTypeCode() { return TypeCode::FloatUnit; }
01685     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01686     typedef int PeakType;
01687     typedef double ScaleType;
01688 };
01689 
01690 template<>
01691 class TypeUtilityBase<const FloatUnit>
01692 {
01693 public:
01694     typedef const FloatUnit         TypeName;
01695     typedef FloatUnit               OriginalType;
01696     typedef FloatUnit const&        PassType;
01697     typedef float                   IndexType;
01698     static inline int  getTypeCode() { return TypeCode::FloatUnit; }
01699     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01700     typedef int PeakType;
01701     typedef double ScaleType;
01702 };
01703 
01704 template<>
01705 class TypeUtilityBase<DoubleUnit>
01706 {
01707 public:
01708     typedef DoubleUnit              TypeName;
01709     typedef DoubleUnit              OriginalType;
01710     typedef DoubleUnit const&       PassType;
01711     typedef double                  IndexType;
01712     static inline int  getTypeCode() { return TypeCode::DoubleUnit; }
01713     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01714     typedef int PeakType;
01715     typedef double ScaleType;
01716 };
01717 
01718 template<>
01719 class TypeUtilityBase<const DoubleUnit>
01720 {
01721 public:
01722     typedef const DoubleUnit        TypeName;
01723     typedef DoubleUnit              OriginalType;
01724     typedef DoubleUnit const&       PassType;
01725     typedef double                  IndexType;
01726     static inline int  getTypeCode() { return TypeCode::DoubleUnit; }
01727     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01728     typedef int PeakType;
01729     typedef double ScaleType;
01730 };
01731 
01732 template<>
01733 class TypeUtilityBase<IntUnit>
01734 {
01735 public:
01736     typedef IntUnit             TypeName;
01737     typedef IntUnit             OriginalType;
01738     typedef IntUnit const&      PassType;
01739     typedef float               IndexType;
01740     static inline int  getTypeCode() { return TypeCode::IntUnit; }
01741     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01742     typedef int PeakType;
01743     typedef double ScaleType;
01744 };
01745 
01746 template<>
01747 class TypeUtilityBase<const IntUnit>
01748 {
01749 public:
01750     typedef const IntUnit       TypeName;
01751     typedef IntUnit             OriginalType;
01752     typedef IntUnit const&      PassType;
01753     typedef float               IndexType;
01754     static inline int  getTypeCode() { return TypeCode::IntUnit; }
01755     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01756     typedef int PeakType;
01757     typedef double ScaleType;
01758 };
01759 
01760 template<>
01761 class TypeUtilityBase<ShortUnit>
01762 {
01763 public:
01764     typedef ShortUnit           TypeName;
01765     typedef ShortUnit           OriginalType;
01766     typedef ShortUnit const&    PassType;
01767     typedef float               IndexType;
01768     static inline int  getTypeCode() { return TypeCode::ShortUnit; }
01769     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01770     typedef int PeakType;
01771     typedef double ScaleType;
01772 };
01773 
01774 template<>
01775 class TypeUtilityBase<const ShortUnit>
01776 {
01777 public:
01778     typedef const ShortUnit     TypeName;
01779     typedef ShortUnit           OriginalType;
01780     typedef ShortUnit const&    PassType;
01781     typedef float               IndexType;
01782     static inline int  getTypeCode() { return TypeCode::ShortUnit; }
01783     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01784     typedef int PeakType;
01785     typedef double ScaleType;
01786 };
01787 
01788 template<>
01789 class TypeUtilityBase<Int24Unit>
01790 {
01791 public:
01792     typedef Int24Unit           TypeName;
01793     typedef Int24Unit           OriginalType;
01794     typedef Int24Unit const&    PassType;
01795     typedef float               IndexType;
01796     static inline int  getTypeCode() { return TypeCode::Int24Unit; }
01797     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01798     typedef int PeakType;
01799     typedef double ScaleType;
01800 };
01801 
01802 template<>
01803 class TypeUtilityBase<const Int24Unit>
01804 {
01805 public:
01806     typedef const Int24Unit     TypeName;
01807     typedef Int24Unit           OriginalType;
01808     typedef Int24Unit const&    PassType;
01809     typedef float               IndexType;
01810     static inline int  getTypeCode() { return TypeCode::Int24Unit; }
01811     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01812     typedef int PeakType;
01813     typedef double ScaleType;
01814 };
01815 
01816 template<>
01817 class TypeUtilityBase<LongUnit>
01818 {
01819 public:
01820     typedef LongUnit            TypeName;
01821     typedef LongUnit            OriginalType;
01822     typedef LongUnit const&     PassType;
01823     typedef float               IndexType;
01824     static inline int  getTypeCode() { return TypeCode::LongUnit; }
01825     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01826     typedef int PeakType;
01827     typedef double ScaleType;
01828 };
01829 
01830 template<>
01831 class TypeUtilityBase<const LongUnit>
01832 {
01833 public:
01834     typedef const LongUnit      TypeName;
01835     typedef LongUnit            OriginalType;
01836     typedef LongUnit const&     PassType;
01837     typedef float               IndexType;
01838     static inline int  getTypeCode() { return TypeCode::LongUnit; }
01839     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01840     typedef int PeakType;
01841     typedef double ScaleType;
01842 };
01843 
01844 template<>
01845 class TypeUtilityBase<FloatBus>
01846 {
01847 public:
01848     typedef FloatBus            TypeName;
01849     typedef FloatBus            OriginalType;
01850     typedef FloatBus const&     PassType;
01851     typedef float               IndexType;
01852     static inline int  getTypeCode() { return TypeCode::FloatBus; }
01853     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01854     typedef int PeakType;
01855     typedef double ScaleType;
01856 };
01857 
01858 template<>
01859 class TypeUtilityBase<const FloatBus>
01860 {
01861 public:
01862     typedef const FloatBus      TypeName;
01863     typedef FloatBus            OriginalType;
01864     typedef FloatBus const&     PassType;
01865     typedef float               IndexType;
01866     static inline int  getTypeCode() { return TypeCode::FloatBus; }
01867     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01868     typedef int PeakType;
01869     typedef double ScaleType;
01870 };
01871 
01872 template<>
01873 class TypeUtilityBase<DoubleBus>
01874 {
01875 public:
01876     typedef DoubleBus           TypeName;
01877     typedef DoubleBus           OriginalType;
01878     typedef DoubleBus const&    PassType;
01879     typedef double              IndexType;
01880     static inline int  getTypeCode() { return TypeCode::DoubleBus; }
01881     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01882     typedef int PeakType;
01883     typedef double ScaleType;
01884 };
01885 
01886 template<>
01887 class TypeUtilityBase<const DoubleBus>
01888 {
01889 public:
01890     typedef const DoubleBus     TypeName;
01891     typedef DoubleBus           OriginalType;
01892     typedef DoubleBus const&    PassType;
01893     typedef double              IndexType;
01894     static inline int  getTypeCode() { return TypeCode::DoubleBus; }
01895     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01896     typedef int PeakType;
01897     typedef double ScaleType;
01898 };
01899 
01900 template<>
01901 class TypeUtilityBase<IntBus>
01902 {
01903 public:
01904     typedef IntBus              TypeName;
01905     typedef IntBus              OriginalType;
01906     typedef IntBus const&       PassType;
01907     typedef float               IndexType;
01908     static inline int  getTypeCode() { return TypeCode::IntBus; }
01909     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01910     typedef int PeakType;
01911     typedef double ScaleType;
01912 };
01913 
01914 template<>
01915 class TypeUtilityBase<const IntBus>
01916 {
01917 public:
01918     typedef const IntBus        TypeName;
01919     typedef IntBus              OriginalType;
01920     typedef IntBus const&       PassType;
01921     typedef float               IndexType;
01922     static inline int  getTypeCode() { return TypeCode::IntBus; }
01923     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01924     typedef int PeakType;
01925     typedef double ScaleType;
01926 };
01927 
01928 template<>
01929 class TypeUtilityBase<ShortBus>
01930 {
01931 public:
01932     typedef ShortBus            TypeName;
01933     typedef ShortBus            OriginalType;
01934     typedef ShortBus const&     PassType;
01935     typedef float               IndexType;
01936     static inline int  getTypeCode() { return TypeCode::ShortBus; }
01937     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01938     typedef int PeakType;
01939     typedef double ScaleType;
01940 };
01941 
01942 template<>
01943 class TypeUtilityBase<const ShortBus>
01944 {
01945 public:
01946     typedef const ShortBus      TypeName;
01947     typedef ShortBus            OriginalType;
01948     typedef ShortBus const&     PassType;
01949     typedef float               IndexType;
01950     static inline int  getTypeCode() { return TypeCode::ShortBus; }
01951     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01952     typedef int PeakType;
01953     typedef double ScaleType;
01954 };
01955 
01956 template<>
01957 class TypeUtilityBase<Int24Bus>
01958 {
01959 public:
01960     typedef Int24Bus            TypeName;
01961     typedef Int24Bus            OriginalType;
01962     typedef Int24Bus const&     PassType;
01963     typedef float               IndexType;
01964     static inline int  getTypeCode() { return TypeCode::Int24Bus; }
01965     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01966     typedef int PeakType;
01967     typedef double ScaleType;
01968 };
01969 
01970 template<>
01971 class TypeUtilityBase<const Int24Bus>
01972 {
01973 public:
01974     typedef const Int24Bus      TypeName;
01975     typedef Int24Bus            OriginalType;
01976     typedef Int24Bus const&     PassType;
01977     typedef float               IndexType;
01978     static inline int  getTypeCode() { return TypeCode::Int24Bus; }
01979     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01980     typedef int PeakType;
01981     typedef double ScaleType;
01982 };
01983 
01984 template<>
01985 class TypeUtilityBase<LongBus>
01986 {
01987 public:
01988     typedef LongBus             TypeName;
01989     typedef LongBus             OriginalType;
01990     typedef LongBus const&      PassType;
01991     typedef float               IndexType;
01992     static inline int  getTypeCode() { return TypeCode::LongBus; }
01993     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
01994     typedef int PeakType;
01995     typedef double ScaleType;
01996 };
01997 
01998 template<>
01999 class TypeUtilityBase<const LongBus>
02000 {
02001 public:
02002     typedef const LongBus       TypeName;
02003     typedef LongBus             OriginalType;
02004     typedef LongBus const&      PassType;
02005     typedef float               IndexType;
02006     static inline int  getTypeCode() { return TypeCode::LongBus; }
02007     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02008     typedef int PeakType;
02009     typedef double ScaleType;
02010 };
02011 
02012 template<>
02013 class TypeUtilityBase<FloatUnits>
02014 {
02015 public:
02016     typedef FloatUnits          TypeName;
02017     typedef FloatUnits          OriginalType;
02018     typedef FloatUnits const&   PassType;
02019     typedef float               IndexType;
02020     static inline int  getTypeCode() { return TypeCode::FloatUnits; }
02021     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02022     typedef int PeakType;
02023     typedef double ScaleType;
02024 };
02025 
02026 template<>
02027 class TypeUtilityBase<const FloatUnits>
02028 {
02029 public:
02030     typedef const FloatUnits    TypeName;
02031     typedef FloatUnits          OriginalType;
02032     typedef FloatUnits const&   PassType;
02033     typedef float               IndexType;
02034     static inline int  getTypeCode() { return TypeCode::FloatUnits; }
02035     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02036     typedef int PeakType;
02037     typedef double ScaleType;
02038 };
02039 
02040 template<>
02041 class TypeUtilityBase<DoubleUnits>
02042 {
02043 public:
02044     typedef DoubleUnits             TypeName;
02045     typedef DoubleUnits             OriginalType;
02046     typedef DoubleUnits const&      PassType;
02047     typedef double                  IndexType;
02048     static inline int  getTypeCode() { return TypeCode::DoubleUnits; }
02049     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02050     typedef int PeakType;
02051     typedef double ScaleType;
02052 };
02053 
02054 template<>
02055 class TypeUtilityBase<const DoubleUnits>
02056 {
02057 public:
02058     typedef const DoubleUnits       TypeName;
02059     typedef DoubleUnits             OriginalType;
02060     typedef DoubleUnits const&      PassType;
02061     typedef double                  IndexType;
02062     static inline int  getTypeCode() { return TypeCode::DoubleUnits; }
02063     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02064     typedef int PeakType;
02065     typedef double ScaleType;
02066 };
02067 
02068 template<>
02069 class TypeUtilityBase<IntUnits>
02070 {
02071 public:
02072     typedef IntUnits            TypeName;
02073     typedef IntUnits            OriginalType;
02074     typedef IntUnits const&     PassType;
02075     typedef float               IndexType;
02076     static inline int  getTypeCode() { return TypeCode::IntUnits; }
02077     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02078     typedef int PeakType;
02079     typedef double ScaleType;
02080 };
02081 
02082 template<>
02083 class TypeUtilityBase<const IntUnits>
02084 {
02085 public:
02086     typedef const IntUnits      TypeName;
02087     typedef IntUnits            OriginalType;
02088     typedef IntUnits const&     PassType;
02089     typedef float               IndexType;
02090     static inline int  getTypeCode() { return TypeCode::IntUnits; }
02091     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02092     typedef int PeakType;
02093     typedef double ScaleType;
02094 };
02095 
02096 template<>
02097 class TypeUtilityBase<ShortUnits>
02098 {
02099 public:
02100     typedef ShortUnits          TypeName;
02101     typedef ShortUnits          OriginalType;
02102     typedef ShortUnits const&   PassType;
02103     typedef float               IndexType;
02104     static inline int  getTypeCode() { return TypeCode::ShortUnits; }
02105     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02106     typedef int PeakType;
02107     typedef double ScaleType;
02108 };
02109 
02110 template<>
02111 class TypeUtilityBase<const ShortUnits>
02112 {
02113 public:
02114     typedef const ShortUnits    TypeName;
02115     typedef ShortUnits          OriginalType;
02116     typedef ShortUnits const&   PassType;
02117     typedef float               IndexType;
02118     static inline int  getTypeCode() { return TypeCode::ShortUnits; }
02119     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02120     typedef int PeakType;
02121     typedef double ScaleType;
02122 };
02123 
02124 template<>
02125 class TypeUtilityBase<Int24Units>
02126 {
02127 public:
02128     typedef Int24Units          TypeName;
02129     typedef Int24Units          OriginalType;
02130     typedef Int24Units const&   PassType;
02131     typedef float               IndexType;
02132     static inline int  getTypeCode() { return TypeCode::Int24Units; }
02133     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02134     typedef int PeakType;
02135     typedef double ScaleType;
02136 };
02137 
02138 template<>
02139 class TypeUtilityBase<const Int24Units>
02140 {
02141 public:
02142     typedef const Int24Units    TypeName;
02143     typedef Int24Units          OriginalType;
02144     typedef Int24Units const&   PassType;
02145     typedef float               IndexType;
02146     static inline int  getTypeCode() { return TypeCode::Int24Units; }
02147     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02148     typedef int PeakType;
02149     typedef double ScaleType;
02150 };
02151 
02152 template<>
02153 class TypeUtilityBase<LongUnits>
02154 {
02155 public:
02156     typedef LongUnits           TypeName;
02157     typedef LongUnits           OriginalType;
02158     typedef LongUnits const&    PassType;
02159     typedef float               IndexType;
02160     static inline int  getTypeCode() { return TypeCode::LongUnits; }
02161     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02162     typedef int PeakType;
02163     typedef double ScaleType;
02164 };
02165 
02166 template<>
02167 class TypeUtilityBase<const LongUnits>
02168 {
02169 public:
02170     typedef const LongUnits     TypeName;
02171     typedef LongUnits           OriginalType;
02172     typedef LongUnits const&    PassType;
02173     typedef float               IndexType;
02174     static inline int  getTypeCode() { return TypeCode::LongUnits; }
02175     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02176     typedef int PeakType;
02177     typedef double ScaleType;
02178 };
02179 
02180 template<>
02181 class TypeUtilityBase<FloatBusses>
02182 {
02183 public:
02184     typedef FloatBusses         TypeName;
02185     typedef FloatBusses         OriginalType;
02186     typedef FloatBusses const&  PassType;
02187     typedef float               IndexType;
02188     static inline int  getTypeCode() { return TypeCode::FloatBusses; }
02189     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02190     typedef int PeakType;
02191     typedef double ScaleType;
02192 };
02193 
02194 template<>
02195 class TypeUtilityBase<const FloatBusses>
02196 {
02197 public:
02198     typedef const FloatBusses   TypeName;
02199     typedef FloatBusses         OriginalType;
02200     typedef FloatBusses const&  PassType;
02201     typedef float               IndexType;
02202     static inline int  getTypeCode() { return TypeCode::FloatBusses; }
02203     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02204     typedef int PeakType;
02205     typedef double ScaleType;
02206 };
02207 
02208 template<>
02209 class TypeUtilityBase<DoubleBusses>
02210 {
02211 public:
02212     typedef DoubleBusses TypeName;
02213     typedef DoubleBusses            OriginalType;
02214     typedef DoubleBusses const&     PassType;
02215     typedef double IndexType;
02216     static inline int  getTypeCode() { return TypeCode::DoubleBusses; }
02217     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02218     typedef int PeakType;
02219     typedef double ScaleType;
02220 };
02221 
02222 template<>
02223 class TypeUtilityBase<const DoubleBusses>
02224 {
02225 public:
02226     typedef const DoubleBusses      TypeName;
02227     typedef DoubleBusses            OriginalType;
02228     typedef DoubleBusses const&     PassType;
02229     typedef double                  IndexType;
02230     static inline int  getTypeCode() { return TypeCode::DoubleBusses; }
02231     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02232     typedef int PeakType;
02233     typedef double ScaleType;
02234 };
02235 
02236 template<>
02237 class TypeUtilityBase<IntBusses>
02238 {
02239 public:
02240     typedef IntBusses           TypeName;
02241     typedef IntBusses           OriginalType;
02242     typedef IntBusses const&    PassType;
02243     typedef float               IndexType;
02244     static inline int  getTypeCode() { return TypeCode::IntBusses; }
02245     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02246     typedef int PeakType;
02247     typedef double ScaleType;
02248 };
02249 
02250 template<>
02251 class TypeUtilityBase<const IntBusses>
02252 {
02253 public:
02254     typedef const IntBusses     TypeName;
02255     typedef IntBusses           OriginalType;
02256     typedef IntBusses const&    PassType;
02257     typedef float               IndexType;
02258     static inline int  getTypeCode() { return TypeCode::IntBusses; }
02259     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02260     typedef int PeakType;
02261     typedef double ScaleType;
02262 };
02263 
02264 template<>
02265 class TypeUtilityBase<ShortBusses>
02266 {
02267 public:
02268     typedef ShortBusses         TypeName;
02269     typedef ShortBusses         OriginalType;
02270     typedef ShortBusses const&  PassType;
02271     typedef float               IndexType;
02272     static inline int  getTypeCode() { return TypeCode::ShortBusses; }
02273     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02274     typedef int PeakType;
02275     typedef double ScaleType;
02276 };
02277 
02278 template<>
02279 class TypeUtilityBase<const ShortBusses>
02280 {
02281 public:
02282     typedef const ShortBusses   TypeName;
02283     typedef ShortBusses         OriginalType;
02284     typedef ShortBusses const&  PassType;
02285     typedef float               IndexType;
02286     static inline int  getTypeCode() { return TypeCode::ShortBusses; }
02287     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02288     typedef int PeakType;
02289     typedef double ScaleType;
02290 };
02291 
02292 template<>
02293 class TypeUtilityBase<Int24Busses>
02294 {
02295 public:
02296     typedef Int24Busses         TypeName;
02297     typedef Int24Busses         OriginalType;
02298     typedef Int24Busses const&  PassType;
02299     typedef float               IndexType;
02300     static inline int  getTypeCode() { return TypeCode::Int24Busses; }
02301     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02302     typedef int PeakType;
02303     typedef double ScaleType;
02304 };
02305 
02306 template<>
02307 class TypeUtilityBase<const Int24Busses>
02308 {
02309 public:
02310     typedef const Int24Busses   TypeName;
02311     typedef Int24Busses         OriginalType;
02312     typedef Int24Busses const&  PassType;
02313     typedef float               IndexType;
02314     static inline int  getTypeCode() { return TypeCode::Int24Busses; }
02315     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02316     typedef int PeakType;
02317     typedef double ScaleType;
02318 };
02319 
02320 template<>
02321 class TypeUtilityBase<LongBusses>
02322 {
02323 public:
02324     typedef LongBusses          TypeName;
02325     typedef LongBusses          OriginalType;
02326     typedef LongBusses const&   PassType;
02327     typedef float               IndexType;
02328     static inline int  getTypeCode() { return TypeCode::LongBusses; }
02329     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02330     typedef int PeakType;
02331     typedef double ScaleType;
02332 };
02333 
02334 template<>
02335 class TypeUtilityBase<const LongBusses>
02336 {
02337 public:
02338     typedef const LongBusses    TypeName;
02339     typedef LongBusses          OriginalType;
02340     typedef LongBusses const&   PassType;
02341     typedef float               IndexType;
02342     static inline int  getTypeCode() { return TypeCode::LongBusses; }
02343     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02344     typedef int PeakType;
02345     typedef double ScaleType;
02346 };
02347 
02348 template<>
02349 class TypeUtilityBase<FloatBreakpoints>
02350 {
02351 public:
02352     typedef FloatBreakpoints            TypeName;
02353     typedef FloatBreakpoints            OriginalType;
02354     typedef FloatBreakpoints const&     PassType;
02355     typedef float                       IndexType;
02356     static inline int  getTypeCode() { return TypeCode::FloatBreakpoints; }
02357     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02358     typedef int PeakType;
02359     typedef double ScaleType;
02360 };
02361 
02362 template<>
02363 class TypeUtilityBase<const FloatBreakpoints>
02364 {
02365 public:
02366     typedef const FloatBreakpoints      TypeName;
02367     typedef FloatBreakpoints            OriginalType;
02368     typedef FloatBreakpoints const&     PassType;
02369     typedef float                       IndexType;
02370     static inline int  getTypeCode() { return TypeCode::FloatBreakpoints; }
02371     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02372     typedef int PeakType;
02373     typedef double ScaleType;
02374 };
02375 
02376 template<>
02377 class TypeUtilityBase<DoubleBreakpoints>
02378 {
02379 public:
02380     typedef DoubleBreakpoints           TypeName;
02381     typedef DoubleBreakpoints           OriginalType;
02382     typedef DoubleBreakpoints const&    PassType;
02383     typedef double                      IndexType;
02384     static inline int  getTypeCode() { return TypeCode::DoubleBreakpoints; }
02385     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02386     typedef int PeakType;
02387     typedef double ScaleType;
02388 };
02389 
02390 template<>
02391 class TypeUtilityBase<const DoubleBreakpoints>
02392 {
02393 public:
02394     typedef const DoubleBreakpoints     TypeName;
02395     typedef DoubleBreakpoints           OriginalType;
02396     typedef DoubleBreakpoints const&    PassType;
02397     typedef double                      IndexType;
02398     static inline int  getTypeCode() { return TypeCode::DoubleBreakpoints; }
02399     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02400     typedef int PeakType;
02401     typedef double ScaleType;
02402 };
02403 
02404 template<>
02405 class TypeUtilityBase<IntBreakpoints>
02406 {
02407 public:
02408     typedef IntBreakpoints              TypeName;
02409     typedef IntBreakpoints              OriginalType;
02410     typedef IntBreakpoints const&       PassType;
02411     typedef float                       IndexType;
02412     static inline int  getTypeCode() { return TypeCode::IntBreakpoints; }
02413     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02414     typedef int PeakType;
02415     typedef double ScaleType;
02416 };
02417 
02418 template<>
02419 class TypeUtilityBase<const IntBreakpoints>
02420 {
02421 public:
02422     typedef const IntBreakpoints        TypeName;
02423     typedef IntBreakpoints              OriginalType;
02424     typedef IntBreakpoints const&       PassType;
02425     typedef float                       IndexType;
02426     static inline int  getTypeCode() { return TypeCode::IntBreakpoints; }
02427     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02428     typedef int PeakType;
02429     typedef double ScaleType;
02430 };
02431 
02432 template<>
02433 class TypeUtilityBase<ShortBreakpoints>
02434 {
02435 public:
02436     typedef ShortBreakpoints            TypeName;
02437     typedef ShortBreakpoints            OriginalType;
02438     typedef ShortBreakpoints const&     PassType;
02439     typedef float                       IndexType;
02440     static inline int  getTypeCode() { return TypeCode::ShortBreakpoints; }
02441     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02442     typedef int PeakType;
02443     typedef double ScaleType;
02444 };
02445 
02446 template<>
02447 class TypeUtilityBase<const ShortBreakpoints>
02448 {
02449 public:
02450     typedef const ShortBreakpoints      TypeName;
02451     typedef ShortBreakpoints            OriginalType;
02452     typedef ShortBreakpoints const&     PassType;
02453     typedef float                       IndexType;
02454     static inline int  getTypeCode() { return TypeCode::ShortBreakpoints; }
02455     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02456     typedef int PeakType;
02457     typedef double ScaleType;
02458 };
02459 
02460 template<>
02461 class TypeUtilityBase<Int24Breakpoints>
02462 {
02463 public:
02464     typedef Int24Breakpoints            TypeName;
02465     typedef Int24Breakpoints            OriginalType;
02466     typedef Int24Breakpoints const&     PassType;
02467     typedef float                       IndexType;
02468     static inline int  getTypeCode() { return TypeCode::Int24Breakpoints; }
02469     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02470     typedef int PeakType;
02471     typedef double ScaleType;
02472 };
02473 
02474 template<>
02475 class TypeUtilityBase<const Int24Breakpoints>
02476 {
02477 public:
02478     typedef const Int24Breakpoints      TypeName;
02479     typedef Int24Breakpoints            OriginalType;
02480     typedef Int24Breakpoints const&     PassType;
02481     typedef float                       IndexType;
02482     static inline int  getTypeCode() { return TypeCode::Int24Breakpoints; }
02483     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02484     typedef int PeakType;
02485     typedef double ScaleType;
02486 };
02487 
02488 template<>
02489 class TypeUtilityBase<LongBreakpoints>
02490 {
02491 public:
02492     typedef LongBreakpoints             TypeName;
02493     typedef LongBreakpoints             OriginalType;
02494     typedef LongBreakpoints const&      PassType;
02495     typedef float                       IndexType;
02496     static inline int  getTypeCode() { return TypeCode::LongBreakpoints; }
02497     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02498     typedef int PeakType;
02499     typedef double ScaleType;
02500 };
02501 
02502 template<>
02503 class TypeUtilityBase<const LongBreakpoints>
02504 {
02505 public:
02506     typedef const LongBreakpoints       TypeName;
02507     typedef LongBreakpoints             OriginalType;
02508     typedef LongBreakpoints const&      PassType;
02509     typedef float                       IndexType;
02510     static inline int  getTypeCode() { return TypeCode::LongBreakpoints; }
02511     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02512     typedef int PeakType;
02513     typedef double ScaleType;
02514 };
02515 
02516 template<>
02517 class TypeUtilityBase<FloatWavetable>
02518 {
02519 public:
02520     typedef FloatWavetable              TypeName;
02521     typedef FloatWavetable              OriginalType;
02522     typedef FloatWavetable const&       PassType;
02523     typedef float                       IndexType;
02524     static inline int  getTypeCode() { return TypeCode::FloatWavetable; }
02525     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02526     typedef int PeakType;
02527     typedef double ScaleType;
02528 };
02529 
02530 template<>
02531 class TypeUtilityBase<const FloatWavetable>
02532 {
02533 public:
02534     typedef const FloatWavetable        TypeName;
02535     typedef FloatWavetable              OriginalType;
02536     typedef FloatWavetable const&       PassType;
02537     typedef float                       IndexType;
02538     static inline int  getTypeCode() { return TypeCode::FloatWavetable; }
02539     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02540     typedef int PeakType;
02541     typedef double ScaleType;
02542 };
02543 
02544 template<>
02545 class TypeUtilityBase<DoubleWavetable>
02546 {
02547 public:
02548     typedef DoubleWavetable             TypeName;
02549     typedef DoubleWavetable             OriginalType;
02550     typedef DoubleWavetable const&      PassType;
02551     typedef double                      IndexType;
02552     static inline int  getTypeCode() { return TypeCode::DoubleWavetable; }
02553     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02554     typedef int PeakType;
02555     typedef double ScaleType;
02556 };
02557 
02558 template<>
02559 class TypeUtilityBase<const DoubleWavetable>
02560 {
02561 public:
02562     typedef const DoubleWavetable       TypeName;
02563     typedef DoubleWavetable             OriginalType;
02564     typedef DoubleWavetable const&      PassType;
02565     typedef double                      IndexType;
02566     static inline int  getTypeCode() { return TypeCode::DoubleWavetable; }
02567     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02568     typedef int PeakType;
02569     typedef double ScaleType;
02570 };
02571 
02572 template<>
02573 class TypeUtilityBase<IntWavetable>
02574 {
02575 public:
02576     typedef IntWavetable            TypeName;
02577     typedef IntWavetable            OriginalType;
02578     typedef IntWavetable const&     PassType;
02579     typedef float                   IndexType;
02580     static inline int  getTypeCode() { return TypeCode::IntWavetable; }
02581     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02582     typedef int PeakType;
02583     typedef double ScaleType;
02584 };
02585 
02586 template<>
02587 class TypeUtilityBase<const IntWavetable>
02588 {
02589 public:
02590     typedef const IntWavetable      TypeName;
02591     typedef IntWavetable            OriginalType;
02592     typedef IntWavetable const&     PassType;
02593     typedef float                   IndexType;
02594     static inline int  getTypeCode() { return TypeCode::IntWavetable; }
02595     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02596     typedef int PeakType;
02597     typedef double ScaleType;
02598 };
02599 
02600 template<>
02601 class TypeUtilityBase<ShortWavetable>
02602 {
02603 public:
02604     typedef ShortWavetable              TypeName;
02605     typedef ShortWavetable              OriginalType;
02606     typedef ShortWavetable const&       PassType;
02607     typedef float                       IndexType;
02608     static inline int  getTypeCode() { return TypeCode::ShortWavetable; }
02609     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02610     typedef int PeakType;
02611     typedef double ScaleType;
02612 };
02613 
02614 template<>
02615 class TypeUtilityBase<const ShortWavetable>
02616 {
02617 public:
02618     typedef const ShortWavetable        TypeName;
02619     typedef ShortWavetable              OriginalType;
02620     typedef ShortWavetable const&       PassType;
02621     typedef float                       IndexType;
02622     static inline int  getTypeCode() { return TypeCode::ShortWavetable; }
02623     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02624     typedef int PeakType;
02625     typedef double ScaleType;
02626 };
02627 
02628 template<>
02629 class TypeUtilityBase<Int24Wavetable>
02630 {
02631 public:
02632     typedef Int24Wavetable              TypeName;
02633     typedef Int24Wavetable              OriginalType;
02634     typedef Int24Wavetable const&       PassType;
02635     typedef float                       IndexType;
02636     static inline int  getTypeCode() { return TypeCode::Int24Wavetable; }
02637     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02638     typedef int PeakType;
02639     typedef double ScaleType;
02640 };
02641 
02642 template<>
02643 class TypeUtilityBase<const Int24Wavetable>
02644 {
02645 public:
02646     typedef const Int24Wavetable        TypeName;
02647     typedef Int24Wavetable              OriginalType;
02648     typedef Int24Wavetable const&       PassType;
02649     typedef float                       IndexType;
02650     static inline int  getTypeCode() { return TypeCode::Int24Wavetable; }
02651     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02652     typedef int PeakType;
02653     typedef double ScaleType;
02654 };
02655 
02656 template<>
02657 class TypeUtilityBase<LongWavetable>
02658 {
02659 public:
02660     typedef LongWavetable               TypeName;
02661     typedef LongWavetable               OriginalType;
02662     typedef LongWavetable const&        PassType;
02663     typedef float                       IndexType;
02664     static inline int  getTypeCode() { return TypeCode::LongWavetable; }
02665     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02666     typedef int PeakType;
02667     typedef double ScaleType;
02668 };
02669 
02670 template<>
02671 class TypeUtilityBase<const LongWavetable>
02672 {
02673 public:
02674     typedef const LongWavetable         TypeName;
02675     typedef LongWavetable               OriginalType;
02676     typedef LongWavetable const&        PassType;
02677     typedef float                       IndexType;
02678     static inline int  getTypeCode() { return TypeCode::LongWavetable; }
02679     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02680     typedef int PeakType;
02681     typedef double ScaleType;
02682 };
02683 
02684 template<>
02685 class TypeUtilityBase<FloatSignal>
02686 {
02687 public:
02688     typedef FloatSignal              TypeName;
02689     typedef FloatSignal              OriginalType;
02690     typedef FloatSignal const&       PassType;
02691     typedef float                    IndexType;
02692     static inline int  getTypeCode() { return TypeCode::FloatSignal; }
02693     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02694     typedef int PeakType;
02695     typedef double ScaleType;
02696 };
02697 
02698 template<>
02699 class TypeUtilityBase<const FloatSignal>
02700 {
02701 public:
02702     typedef const FloatSignal        TypeName;
02703     typedef FloatSignal              OriginalType;
02704     typedef FloatSignal const&       PassType;
02705     typedef float                    IndexType;
02706     static inline int  getTypeCode() { return TypeCode::FloatSignal; }
02707     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02708     typedef int PeakType;
02709     typedef double ScaleType;
02710 };
02711 
02712 template<>
02713 class TypeUtilityBase<DoubleSignal>
02714 {
02715 public:
02716     typedef DoubleSignal             TypeName;
02717     typedef DoubleSignal             OriginalType;
02718     typedef DoubleSignal const&      PassType;
02719     typedef double                   IndexType;
02720     static inline int  getTypeCode() { return TypeCode::DoubleSignal; }
02721     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02722     typedef int PeakType;
02723     typedef double ScaleType;
02724 };
02725 
02726 template<>
02727 class TypeUtilityBase<const DoubleSignal>
02728 {
02729 public:
02730     typedef const DoubleSignal       TypeName;
02731     typedef DoubleSignal             OriginalType;
02732     typedef DoubleSignal const&      PassType;
02733     typedef double                   IndexType;
02734     static inline int  getTypeCode() { return TypeCode::DoubleSignal; }
02735     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02736     typedef int PeakType;
02737     typedef double ScaleType;
02738 };
02739 
02740 template<>
02741 class TypeUtilityBase<IntSignal>
02742 {
02743 public:
02744     typedef IntSignal            TypeName;
02745     typedef IntSignal            OriginalType;
02746     typedef IntSignal const&     PassType;
02747     typedef float                IndexType;
02748     static inline int  getTypeCode() { return TypeCode::IntSignal; }
02749     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02750     typedef int PeakType;
02751     typedef double ScaleType;
02752 };
02753 
02754 template<>
02755 class TypeUtilityBase<const IntSignal>
02756 {
02757 public:
02758     typedef const IntSignal      TypeName;
02759     typedef IntSignal            OriginalType;
02760     typedef IntSignal const&     PassType;
02761     typedef float                IndexType;
02762     static inline int  getTypeCode() { return TypeCode::IntSignal; }
02763     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02764     typedef int PeakType;
02765     typedef double ScaleType;
02766 };
02767 
02768 template<>
02769 class TypeUtilityBase<ShortSignal>
02770 {
02771 public:
02772     typedef ShortSignal              TypeName;
02773     typedef ShortSignal              OriginalType;
02774     typedef ShortSignal const&       PassType;
02775     typedef float                    IndexType;
02776     static inline int  getTypeCode() { return TypeCode::ShortSignal; }
02777     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02778     typedef int PeakType;
02779     typedef double ScaleType;
02780 };
02781 
02782 template<>
02783 class TypeUtilityBase<const ShortSignal>
02784 {
02785 public:
02786     typedef const ShortSignal        TypeName;
02787     typedef ShortSignal              OriginalType;
02788     typedef ShortSignal const&       PassType;
02789     typedef float                    IndexType;
02790     static inline int  getTypeCode() { return TypeCode::ShortSignal; }
02791     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02792     typedef int PeakType;
02793     typedef double ScaleType;
02794 };
02795 
02796 template<>
02797 class TypeUtilityBase<Int24Signal>
02798 {
02799 public:
02800     typedef Int24Signal              TypeName;
02801     typedef Int24Signal              OriginalType;
02802     typedef Int24Signal const&       PassType;
02803     typedef float                    IndexType;
02804     static inline int  getTypeCode() { return TypeCode::Int24Signal; }
02805     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02806     typedef int PeakType;
02807     typedef double ScaleType;
02808 };
02809 
02810 template<>
02811 class TypeUtilityBase<const Int24Signal>
02812 {
02813 public:
02814     typedef const Int24Signal        TypeName;
02815     typedef Int24Signal              OriginalType;
02816     typedef Int24Signal const&       PassType;
02817     typedef float                    IndexType;
02818     static inline int  getTypeCode() { return TypeCode::Int24Signal; }
02819     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02820     typedef int PeakType;
02821     typedef double ScaleType;
02822 };
02823 
02824 template<>
02825 class TypeUtilityBase<LongSignal>
02826 {
02827 public:
02828     typedef LongSignal               TypeName;
02829     typedef LongSignal               OriginalType;
02830     typedef LongSignal const&        PassType;
02831     typedef float                    IndexType;
02832     static inline int  getTypeCode() { return TypeCode::LongSignal; }
02833     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02834     typedef int PeakType;
02835     typedef double ScaleType;
02836 };
02837 
02838 template<>
02839 class TypeUtilityBase<const LongSignal>
02840 {
02841 public:
02842     typedef const LongSignal         TypeName;
02843     typedef LongSignal               OriginalType;
02844     typedef LongSignal const&        PassType;
02845     typedef float                    IndexType;
02846     static inline int  getTypeCode() { return TypeCode::LongSignal; }
02847     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02848     typedef int PeakType;
02849     typedef double ScaleType;
02850 };
02851 
02852 
02853 //------------------------------------------------------------------------------
02854 
02855 template<>
02856 class TypeUtilityBase<FloatArrayVariable>
02857 {
02858 public:
02859     typedef FloatArrayVariable              TypeName;
02860     typedef FloatArrayVariable              OriginalType;
02861     typedef FloatArrayVariable const&       PassType;
02862     typedef float                   IndexType;
02863     static inline int  getTypeCode() { return TypeCode::FloatArrayVariable; }
02864     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02865     typedef int PeakType;
02866     typedef double ScaleType;
02867 };
02868 
02869 template<>
02870 class TypeUtilityBase<const FloatArrayVariable>
02871 {
02872 public:
02873     typedef const FloatArrayVariable        TypeName;
02874     typedef FloatArrayVariable              OriginalType;
02875     typedef FloatArrayVariable const&       PassType;
02876     typedef float                           IndexType;
02877     static inline int  getTypeCode() { return TypeCode::FloatArrayVariable; }
02878     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02879     typedef int PeakType;
02880     typedef double ScaleType;
02881 };
02882 
02883 
02884 template<>
02885 class TypeUtilityBase<DoubleArrayVariable>
02886 {
02887 public:
02888     typedef DoubleArrayVariable             TypeName;
02889     typedef DoubleArrayVariable             OriginalType;
02890     typedef DoubleArrayVariable const&      PassType;
02891     typedef double                  IndexType;
02892     static inline int  getTypeCode() { return TypeCode::DoubleArrayVariable; }
02893     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02894     typedef int PeakType;
02895     typedef double ScaleType;
02896 };
02897 
02898 template<>
02899 class TypeUtilityBase<const DoubleArrayVariable>
02900 {
02901 public:
02902     typedef const DoubleArrayVariable       TypeName;
02903     typedef DoubleArrayVariable             OriginalType;
02904     typedef DoubleArrayVariable const&      PassType;
02905     typedef double                          IndexType;
02906     static inline int  getTypeCode() { return TypeCode::DoubleArrayVariable; }
02907     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02908     typedef int PeakType;
02909     typedef double ScaleType;
02910 };
02911 
02912 template<>
02913 class TypeUtilityBase<IntArrayVariable>
02914 {
02915 public:
02916     typedef IntArrayVariable            TypeName;
02917     typedef IntArrayVariable            OriginalType;
02918     typedef IntArrayVariable const&     PassType;
02919     typedef float                       IndexType;
02920     static inline int  getTypeCode() { return TypeCode::IntArrayVariable; }
02921     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02922     typedef int PeakType;
02923     typedef double ScaleType;
02924 };
02925 
02926 template<>
02927 class TypeUtilityBase<const IntArrayVariable>
02928 {
02929 public:
02930     typedef const IntArrayVariable      TypeName;
02931     typedef IntArrayVariable            OriginalType;
02932     typedef IntArrayVariable const&     PassType;
02933     typedef float                       IndexType;
02934     static inline int  getTypeCode() { return TypeCode::IntArrayVariable; }
02935     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02936     typedef int PeakType;
02937     typedef double ScaleType;
02938 };
02939 
02940 template<>
02941 class TypeUtilityBase<ShortArrayVariable>
02942 {
02943 public:
02944     typedef ShortArrayVariable          TypeName;
02945     typedef ShortArrayVariable          OriginalType;
02946     typedef ShortArrayVariable const&   PassType;
02947     typedef float                       IndexType;
02948     static inline int  getTypeCode() { return TypeCode::ShortArrayVariable; }
02949     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02950     typedef int PeakType;
02951     typedef double ScaleType;
02952 };
02953 
02954 template<>
02955 class TypeUtilityBase<const ShortArrayVariable>
02956 {
02957 public:
02958     typedef const ShortArrayVariable    TypeName;
02959     typedef ShortArrayVariable          OriginalType;
02960     typedef ShortArrayVariable const&   PassType;
02961     typedef float                       IndexType;
02962     static inline int  getTypeCode() { return TypeCode::ShortArrayVariable; }
02963     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02964     typedef int PeakType;
02965     typedef double ScaleType;
02966 };
02967 
02968 template<>
02969 class TypeUtilityBase<Int24ArrayVariable>
02970 {
02971 public:
02972     typedef Int24ArrayVariable          TypeName;
02973     typedef Int24ArrayVariable          OriginalType;
02974     typedef Int24ArrayVariable const&   PassType;
02975     typedef float                       IndexType;
02976     static inline int  getTypeCode() { return TypeCode::Int24ArrayVariable; }
02977     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02978     typedef int PeakType;
02979     typedef double ScaleType;
02980 };
02981 
02982 template<>
02983 class TypeUtilityBase<const Int24ArrayVariable>
02984 {
02985 public:
02986     typedef const Int24ArrayVariable    TypeName;
02987     typedef Int24ArrayVariable          OriginalType;
02988     typedef Int24ArrayVariable const&   PassType;
02989     typedef float                       IndexType;
02990     static inline int  getTypeCode() { return TypeCode::Int24ArrayVariable; }
02991     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
02992     typedef int PeakType;
02993     typedef double ScaleType;
02994 };
02995 
02996 template<>
02997 class TypeUtilityBase<LongArrayVariable>
02998 {
02999 public:
03000     typedef LongArrayVariable           TypeName;
03001     typedef LongArrayVariable           OriginalType;
03002     typedef LongArrayVariable const&    PassType;
03003     typedef float                       IndexType;
03004     static inline int  getTypeCode() { return TypeCode::LongArrayVariable; }
03005     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03006     typedef int PeakType;
03007     typedef double ScaleType;
03008 };
03009 
03010 template<>
03011 class TypeUtilityBase<const LongArrayVariable>
03012 {
03013 public:
03014     typedef const LongArrayVariable     TypeName;
03015     typedef LongArrayVariable           OriginalType;
03016     typedef LongArrayVariable const&    PassType;
03017     typedef float                       IndexType;
03018     static inline int  getTypeCode() { return TypeCode::LongArrayVariable; }
03019     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03020     typedef int PeakType;
03021     typedef double ScaleType;
03022 };
03023 
03024 template<>
03025 class TypeUtilityBase<CharArrayVariable>
03026 {
03027 public:
03028     typedef CharArrayVariable           TypeName;
03029     typedef CharArrayVariable           OriginalType;
03030     typedef CharArrayVariable const&    PassType;
03031     typedef float                       IndexType;
03032     static inline int  getTypeCode() { return TypeCode::CharArrayVariable; }
03033     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03034     typedef int PeakType;
03035     typedef double ScaleType;
03036 };
03037 
03038 template<>
03039 class TypeUtilityBase<const CharArrayVariable>
03040 {
03041 public:
03042     typedef const CharArrayVariable     TypeName;
03043     typedef CharArrayVariable           OriginalType;
03044     typedef CharArrayVariable const&    PassType;
03045     typedef float                       IndexType;
03046     static inline int  getTypeCode() { return TypeCode::CharArrayVariable; }
03047     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03048     typedef int PeakType;
03049     typedef double ScaleType;
03050 };
03051 
03052 template<>
03053 class TypeUtilityBase<BoolArrayVariable>
03054 {
03055 public:
03056     typedef BoolArrayVariable           TypeName;
03057     typedef BoolArrayVariable           OriginalType;
03058     typedef BoolArrayVariable const&    PassType;
03059     typedef float                       IndexType;
03060     static inline int  getTypeCode() { return TypeCode::BoolArrayVariable; }
03061     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03062     typedef int PeakType;
03063     typedef double ScaleType;
03064 };
03065 
03066 template<>
03067 class TypeUtilityBase<const BoolArrayVariable>
03068 {
03069 public:
03070     typedef const BoolArrayVariable     TypeName;
03071     typedef BoolArrayVariable           OriginalType;
03072     typedef BoolArrayVariable const&    PassType;
03073     typedef float                       IndexType;
03074     static inline int  getTypeCode() { return TypeCode::BoolArrayVariable; }
03075     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03076     typedef int PeakType;
03077     typedef double ScaleType;
03078 };
03079 
03080 template<>
03081 class TypeUtilityBase<plonk::TextVariable>
03082 {
03083 public:
03084     typedef TextVariable         TypeName;
03085     typedef TextVariable         OriginalType;
03086     typedef TextVariable const&  PassType;
03087     typedef int                  IndexType;
03088     static inline int  getTypeCode() { return TypeCode::TextVariable; }
03089     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03090     typedef int PeakType;
03091     typedef double ScaleType;
03092 };
03093 
03094 template<>
03095 class TypeUtilityBase<const plonk::TextVariable>
03096 {
03097 public:
03098     typedef const TextVariable   TypeName;
03099     typedef TextVariable         OriginalType;
03100     typedef TextVariable const&  PassType;
03101     typedef int                  IndexType;
03102     static inline int  getTypeCode() { return TypeCode::TextVariable; }
03103     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03104     typedef int PeakType;
03105     typedef double ScaleType;
03106 };
03107 
03108 template<>
03109 class TypeUtilityBase<TextArrayVariable>
03110 {
03111 public:
03112     typedef TextArrayVariable           TypeName;
03113     typedef TextArrayVariable           OriginalType;
03114     typedef TextArrayVariable const&    PassType;
03115     typedef int                         IndexType;
03116     static inline int  getTypeCode() { return TypeCode::TextArrayVariable; }
03117     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03118     typedef int PeakType;
03119     typedef double ScaleType;
03120 };
03121 
03122 template<>
03123 class TypeUtilityBase<const TextArrayVariable>
03124 {
03125 public:
03126     typedef const TextArrayVariable     TypeName;
03127     typedef TextArrayVariable           OriginalType;
03128     typedef TextArrayVariable const&    PassType;
03129     typedef int                         IndexType;
03130     static inline int  getTypeCode() { return TypeCode::TextArrayVariable; }
03131     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03132     typedef int PeakType;
03133     typedef double ScaleType;
03134 };
03135 
03136 template<>
03137 class TypeUtilityBase<FloatChannelVariable>
03138 {
03139 public:
03140     typedef FloatChannelVariable        TypeName;
03141     typedef FloatChannelVariable        OriginalType;
03142     typedef FloatChannelVariable const& PassType;
03143     typedef float                       IndexType;
03144     static inline int  getTypeCode() { return TypeCode::FloatChannelVariable; }
03145     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03146     typedef int PeakType;
03147     typedef double ScaleType;
03148 };
03149 
03150 template<>
03151 class TypeUtilityBase<const FloatChannelVariable>
03152 {
03153 public:
03154     typedef const FloatChannelVariable  TypeName;
03155     typedef FloatChannelVariable        OriginalType;
03156     typedef FloatChannelVariable const& PassType;
03157     typedef float                       IndexType;
03158     static inline int  getTypeCode() { return TypeCode::FloatChannelVariable; }
03159     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03160     typedef int PeakType;
03161     typedef double ScaleType;
03162 };
03163 
03164 template<>
03165 class TypeUtilityBase<DoubleChannelVariable>
03166 {
03167 public:
03168     typedef DoubleChannelVariable           TypeName;
03169     typedef DoubleChannelVariable           OriginalType;
03170     typedef DoubleChannelVariable const&    PassType;
03171     typedef double                          IndexType;
03172     static inline int  getTypeCode() { return TypeCode::DoubleChannelVariable; }
03173     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03174     typedef int PeakType;
03175     typedef double ScaleType;
03176 };
03177 
03178 template<>
03179 class TypeUtilityBase<const DoubleChannelVariable>
03180 {
03181 public:
03182     typedef const DoubleChannelVariable     TypeName;
03183     typedef DoubleChannelVariable           OriginalType;
03184     typedef DoubleChannelVariable const&    PassType;
03185     typedef double                          IndexType;
03186     static inline int  getTypeCode() { return TypeCode::DoubleChannelVariable; }
03187     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03188     typedef int PeakType;
03189     typedef double ScaleType;
03190 };
03191 
03192 template<>
03193 class TypeUtilityBase<IntChannelVariable>
03194 {
03195 public:
03196     typedef IntChannelVariable              TypeName;
03197     typedef IntChannelVariable              OriginalType;
03198     typedef IntChannelVariable const&       PassType;
03199     typedef float                           IndexType;
03200     static inline int  getTypeCode() { return TypeCode::IntChannelVariable; }
03201     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03202     typedef int PeakType;
03203     typedef double ScaleType;
03204 };
03205 
03206 template<>
03207 class TypeUtilityBase<const IntChannelVariable>
03208 {
03209 public:
03210     typedef const IntChannelVariable        TypeName;
03211     typedef IntChannelVariable              OriginalType;
03212     typedef IntChannelVariable const&       PassType;
03213     typedef float                           IndexType;
03214     static inline int  getTypeCode() { return TypeCode::IntChannelVariable; }
03215     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03216     typedef int PeakType;
03217     typedef double ScaleType;
03218 };
03219 
03220 template<>
03221 class TypeUtilityBase<ShortChannelVariable>
03222 {
03223 public:
03224     typedef ShortChannelVariable            TypeName;
03225     typedef ShortChannelVariable            OriginalType;
03226     typedef ShortChannelVariable const&     PassType;
03227     typedef float                           IndexType;
03228     static inline int  getTypeCode() { return TypeCode::ShortChannelVariable; }
03229     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03230     typedef int PeakType;
03231     typedef double ScaleType;
03232 };
03233 
03234 template<>
03235 class TypeUtilityBase<const ShortChannelVariable>
03236 {
03237 public:
03238     typedef const ShortChannelVariable      TypeName;
03239     typedef ShortChannelVariable            OriginalType;
03240     typedef ShortChannelVariable const&     PassType;
03241     typedef float                           IndexType;
03242     static inline int  getTypeCode() { return TypeCode::ShortChannelVariable; }
03243     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03244     typedef int PeakType;
03245     typedef double ScaleType;
03246 };
03247 
03248 template<>
03249 class TypeUtilityBase<Int24ChannelVariable>
03250 {
03251 public:
03252     typedef Int24ChannelVariable            TypeName;
03253     typedef Int24ChannelVariable            OriginalType;
03254     typedef Int24ChannelVariable const&     PassType;
03255     typedef float                           IndexType;
03256     static inline int  getTypeCode() { return TypeCode::Int24ChannelVariable; }
03257     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03258     typedef int PeakType;
03259     typedef double ScaleType;
03260 };
03261 
03262 template<>
03263 class TypeUtilityBase<const Int24ChannelVariable>
03264 {
03265 public:
03266     typedef const Int24ChannelVariable      TypeName;
03267     typedef Int24ChannelVariable            OriginalType;
03268     typedef Int24ChannelVariable const&     PassType;
03269     typedef float                           IndexType;
03270     static inline int  getTypeCode() { return TypeCode::Int24ChannelVariable; }
03271     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03272     typedef int PeakType;
03273     typedef double ScaleType;
03274 };
03275 
03276 template<>
03277 class TypeUtilityBase<LongChannelVariable>
03278 {
03279 public:
03280     typedef LongChannelVariable             TypeName;
03281     typedef LongChannelVariable             OriginalType;
03282     typedef LongChannelVariable const&      PassType;
03283     typedef float                           IndexType;
03284     static inline int  getTypeCode() { return TypeCode::LongChannelVariable; }
03285     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03286     typedef int PeakType;
03287     typedef double ScaleType;
03288 };
03289 
03290 template<>
03291 class TypeUtilityBase<const LongChannelVariable>
03292 {
03293 public:
03294     typedef const LongChannelVariable       TypeName;
03295     typedef LongChannelVariable             OriginalType;
03296     typedef LongChannelVariable const&      PassType;
03297     typedef float                           IndexType;
03298     static inline int  getTypeCode() { return TypeCode::LongChannelVariable; }
03299     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03300     typedef int PeakType;
03301     typedef double ScaleType;
03302 };
03303 
03304 template<>
03305 class TypeUtilityBase<FloatUnitVariable>
03306 {
03307 public:
03308     typedef FloatUnitVariable               TypeName;
03309     typedef FloatUnitVariable               OriginalType;
03310     typedef FloatUnitVariable const&        PassType;
03311     typedef float                           IndexType;
03312     static inline int  getTypeCode() { return TypeCode::FloatUnitVariable; }
03313     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03314     typedef int PeakType;
03315     typedef double ScaleType;
03316 };
03317 
03318 template<>
03319 class TypeUtilityBase<const FloatUnitVariable>
03320 {
03321 public:
03322     typedef const FloatUnitVariable         TypeName;
03323     typedef FloatUnitVariable               OriginalType;
03324     typedef FloatUnitVariable const&        PassType;
03325     typedef float                           IndexType;
03326     static inline int  getTypeCode() { return TypeCode::FloatUnitVariable; }
03327     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03328     typedef int PeakType;
03329     typedef double ScaleType;
03330 };
03331 
03332 template<>
03333 class TypeUtilityBase<DoubleUnitVariable>
03334 {
03335 public:
03336     typedef DoubleUnitVariable              TypeName;
03337     typedef DoubleUnitVariable              OriginalType;
03338     typedef DoubleUnitVariable const&       PassType;
03339     typedef double                          IndexType;
03340     static inline int  getTypeCode() { return TypeCode::DoubleUnitVariable; }
03341     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03342     typedef int PeakType;
03343     typedef double ScaleType;
03344 };
03345 
03346 template<>
03347 class TypeUtilityBase<const DoubleUnitVariable>
03348 {
03349 public:
03350     typedef const DoubleUnitVariable        TypeName;
03351     typedef DoubleUnitVariable              OriginalType;
03352     typedef DoubleUnitVariable const&       PassType;
03353     typedef double                          IndexType;
03354     static inline int  getTypeCode() { return TypeCode::DoubleUnitVariable; }
03355     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03356     typedef int PeakType;
03357     typedef double ScaleType;
03358 };
03359 
03360 template<>
03361 class TypeUtilityBase<IntUnitVariable>
03362 {
03363 public:
03364     typedef IntUnitVariable             TypeName;
03365     typedef IntUnitVariable             OriginalType;
03366     typedef IntUnitVariable const&      PassType;
03367     typedef float                       IndexType;
03368     static inline int  getTypeCode() { return TypeCode::IntUnitVariable; }
03369     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03370     typedef int PeakType;
03371     typedef double ScaleType;
03372 };
03373 
03374 template<>
03375 class TypeUtilityBase<const IntUnitVariable>
03376 {
03377 public:
03378     typedef const IntUnitVariable       TypeName;
03379     typedef IntUnitVariable             OriginalType;
03380     typedef IntUnitVariable const&      PassType;
03381     typedef float                       IndexType;
03382     static inline int  getTypeCode() { return TypeCode::IntUnitVariable; }
03383     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03384     typedef int PeakType;
03385     typedef double ScaleType;
03386 };
03387 
03388 template<>
03389 class TypeUtilityBase<ShortUnitVariable>
03390 {
03391 public:
03392     typedef ShortUnitVariable           TypeName;
03393     typedef ShortUnitVariable           OriginalType;
03394     typedef ShortUnitVariable const&    PassType;
03395     typedef float                       IndexType;
03396     static inline int  getTypeCode() { return TypeCode::ShortUnitVariable; }
03397     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03398     typedef int PeakType;
03399     typedef double ScaleType;
03400 };
03401 
03402 template<>
03403 class TypeUtilityBase<const ShortUnitVariable>
03404 {
03405 public:
03406     typedef const ShortUnitVariable     TypeName;
03407     typedef ShortUnitVariable           OriginalType;
03408     typedef ShortUnitVariable const&    PassType;
03409     typedef float                       IndexType;
03410     static inline int  getTypeCode() { return TypeCode::ShortUnitVariable; }
03411     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03412     typedef int PeakType;
03413     typedef double ScaleType;
03414 };
03415 
03416 template<>
03417 class TypeUtilityBase<Int24UnitVariable>
03418 {
03419 public:
03420     typedef Int24UnitVariable           TypeName;
03421     typedef Int24UnitVariable           OriginalType;
03422     typedef Int24UnitVariable const&    PassType;
03423     typedef float                       IndexType;
03424     static inline int  getTypeCode() { return TypeCode::Int24UnitVariable; }
03425     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03426     typedef int PeakType;
03427     typedef double ScaleType;
03428 };
03429 
03430 template<>
03431 class TypeUtilityBase<const Int24UnitVariable>
03432 {
03433 public:
03434     typedef const Int24UnitVariable     TypeName;
03435     typedef Int24UnitVariable           OriginalType;
03436     typedef Int24UnitVariable const&    PassType;
03437     typedef float                       IndexType;
03438     static inline int  getTypeCode() { return TypeCode::Int24UnitVariable; }
03439     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03440     typedef int PeakType;
03441     typedef double ScaleType;
03442 };
03443 
03444 template<>
03445 class TypeUtilityBase<LongUnitVariable>
03446 {
03447 public:
03448     typedef LongUnitVariable            TypeName;
03449     typedef LongUnitVariable            OriginalType;
03450     typedef LongUnitVariable const&     PassType;
03451     typedef float                       IndexType;
03452     static inline int  getTypeCode() { return TypeCode::LongUnitVariable; }
03453     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03454     typedef int PeakType;
03455     typedef double ScaleType;
03456 };
03457 
03458 template<>
03459 class TypeUtilityBase<const LongUnitVariable>
03460 {
03461 public:
03462     typedef const LongUnitVariable      TypeName;
03463     typedef LongUnitVariable            OriginalType;
03464     typedef LongUnitVariable const&     PassType;
03465     typedef float               IndexType;
03466     static inline int  getTypeCode() { return TypeCode::LongUnitVariable; }
03467     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03468     typedef int PeakType;
03469     typedef double ScaleType;
03470 };
03471 
03472 template<>
03473 class TypeUtilityBase<FloatBusVariable>
03474 {
03475 public:
03476     typedef FloatBusVariable            TypeName;
03477     typedef FloatBusVariable            OriginalType;
03478     typedef FloatBusVariable const&     PassType;
03479     typedef float                       IndexType;
03480     static inline int  getTypeCode() { return TypeCode::FloatBusVariable; }
03481     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03482     typedef int PeakType;
03483     typedef double ScaleType;
03484 };
03485 
03486 template<>
03487 class TypeUtilityBase<const FloatBusVariable>
03488 {
03489 public:
03490     typedef const FloatBusVariable      TypeName;
03491     typedef FloatBusVariable            OriginalType;
03492     typedef FloatBusVariable const&     PassType;
03493     typedef float                       IndexType;
03494     static inline int  getTypeCode() { return TypeCode::FloatBusVariable; }
03495     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03496     typedef int PeakType;
03497     typedef double ScaleType;
03498 };
03499 
03500 template<>
03501 class TypeUtilityBase<DoubleBusVariable>
03502 {
03503 public:
03504     typedef DoubleBusVariable           TypeName;
03505     typedef DoubleBusVariable           OriginalType;
03506     typedef DoubleBusVariable const&    PassType;
03507     typedef double                      IndexType;
03508     static inline int  getTypeCode() { return TypeCode::DoubleBusVariable; }
03509     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03510     typedef int PeakType;
03511     typedef double ScaleType;
03512 };
03513 
03514 template<>
03515 class TypeUtilityBase<const DoubleBusVariable>
03516 {
03517 public:
03518     typedef const DoubleBusVariable     TypeName;
03519     typedef DoubleBusVariable           OriginalType;
03520     typedef DoubleBusVariable const&    PassType;
03521     typedef double                      IndexType;
03522     static inline int  getTypeCode() { return TypeCode::DoubleBusVariable; }
03523     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03524     typedef int PeakType;
03525     typedef double ScaleType;
03526 };
03527 
03528 template<>
03529 class TypeUtilityBase<IntBusVariable>
03530 {
03531 public:
03532     typedef IntBusVariable              TypeName;
03533     typedef IntBusVariable              OriginalType;
03534     typedef IntBusVariable const&       PassType;
03535     typedef float                       IndexType;
03536     static inline int  getTypeCode() { return TypeCode::IntBusVariable; }
03537     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03538     typedef int PeakType;
03539     typedef double ScaleType;
03540 };
03541 
03542 template<>
03543 class TypeUtilityBase<const IntBusVariable>
03544 {
03545 public:
03546     typedef const IntBusVariable        TypeName;
03547     typedef IntBusVariable              OriginalType;
03548     typedef IntBusVariable const&       PassType;
03549     typedef float                       IndexType;
03550     static inline int  getTypeCode() { return TypeCode::IntBusVariable; }
03551     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03552     typedef int PeakType;
03553     typedef double ScaleType;
03554 };
03555 
03556 template<>
03557 class TypeUtilityBase<ShortBusVariable>
03558 {
03559 public:
03560     typedef ShortBusVariable            TypeName;
03561     typedef ShortBusVariable            OriginalType;
03562     typedef ShortBusVariable const&     PassType;
03563     typedef float                       IndexType;
03564     static inline int  getTypeCode() { return TypeCode::ShortBusVariable; }
03565     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03566     typedef int PeakType;
03567     typedef double ScaleType;
03568 };
03569 
03570 template<>
03571 class TypeUtilityBase<const ShortBusVariable>
03572 {
03573 public:
03574     typedef const ShortBusVariable      TypeName;
03575     typedef ShortBusVariable            OriginalType;
03576     typedef ShortBusVariable const&     PassType;
03577     typedef float                       IndexType;
03578     static inline int  getTypeCode() { return TypeCode::ShortBusVariable; }
03579     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03580     typedef int PeakType;
03581     typedef double ScaleType;
03582 };
03583 
03584 template<>
03585 class TypeUtilityBase<Int24BusVariable>
03586 {
03587 public:
03588     typedef Int24BusVariable            TypeName;
03589     typedef Int24BusVariable            OriginalType;
03590     typedef Int24BusVariable const&     PassType;
03591     typedef float                       IndexType;
03592     static inline int  getTypeCode() { return TypeCode::Int24BusVariable; }
03593     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03594     typedef int PeakType;
03595     typedef double ScaleType;
03596 };
03597 
03598 template<>
03599 class TypeUtilityBase<const Int24BusVariable>
03600 {
03601 public:
03602     typedef const Int24BusVariable      TypeName;
03603     typedef Int24BusVariable            OriginalType;
03604     typedef Int24BusVariable const&     PassType;
03605     typedef float                       IndexType;
03606     static inline int  getTypeCode() { return TypeCode::Int24BusVariable; }
03607     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03608     typedef int PeakType;
03609     typedef double ScaleType;
03610 };
03611 
03612 template<>
03613 class TypeUtilityBase<LongBusVariable>
03614 {
03615 public:
03616     typedef LongBusVariable             TypeName;
03617     typedef LongBusVariable             OriginalType;
03618     typedef LongBusVariable const&      PassType;
03619     typedef float                       IndexType;
03620     static inline int  getTypeCode() { return TypeCode::LongBusVariable; }
03621     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03622     typedef int PeakType;
03623     typedef double ScaleType;
03624 };
03625 
03626 template<>
03627 class TypeUtilityBase<const LongBusVariable>
03628 {
03629 public:
03630     typedef const LongBusVariable       TypeName;
03631     typedef LongBusVariable             OriginalType;
03632     typedef LongBusVariable const&      PassType;
03633     typedef float                       IndexType;
03634     static inline int  getTypeCode() { return TypeCode::LongBusVariable; }
03635     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03636     typedef int PeakType;
03637     typedef double ScaleType;
03638 };
03639 
03640 template<>
03641 class TypeUtilityBase<FloatUnitsVariable>
03642 {
03643 public:
03644     typedef FloatUnitsVariable          TypeName;
03645     typedef FloatUnitsVariable          OriginalType;
03646     typedef FloatUnitsVariable const&   PassType;
03647     typedef float                       IndexType;
03648     static inline int  getTypeCode() { return TypeCode::FloatUnitsVariable; }
03649     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03650     typedef int PeakType;
03651     typedef double ScaleType;
03652 };
03653 
03654 template<>
03655 class TypeUtilityBase<const FloatUnitsVariable>
03656 {
03657 public:
03658     typedef const FloatUnitsVariable    TypeName;
03659     typedef FloatUnitsVariable          OriginalType;
03660     typedef FloatUnitsVariable const&   PassType;
03661     typedef float                       IndexType;
03662     static inline int  getTypeCode() { return TypeCode::FloatUnitsVariable; }
03663     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03664     typedef int PeakType;
03665     typedef double ScaleType;
03666 };
03667 
03668 template<>
03669 class TypeUtilityBase<DoubleUnitsVariable>
03670 {
03671 public:
03672     typedef DoubleUnitsVariable             TypeName;
03673     typedef DoubleUnitsVariable             OriginalType;
03674     typedef DoubleUnitsVariable const&      PassType;
03675     typedef double                          IndexType;
03676     static inline int  getTypeCode() { return TypeCode::DoubleUnitsVariable; }
03677     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03678     typedef int PeakType;
03679     typedef double ScaleType;
03680 };
03681 
03682 template<>
03683 class TypeUtilityBase<const DoubleUnitsVariable>
03684 {
03685 public:
03686     typedef const DoubleUnitsVariable       TypeName;
03687     typedef DoubleUnitsVariable             OriginalType;
03688     typedef DoubleUnitsVariable const&      PassType;
03689     typedef double                          IndexType;
03690     static inline int  getTypeCode() { return TypeCode::DoubleUnitsVariable; }
03691     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03692     typedef int PeakType;
03693     typedef double ScaleType;
03694 };
03695 
03696 template<>
03697 class TypeUtilityBase<IntUnitsVariable>
03698 {
03699 public:
03700     typedef IntUnitsVariable            TypeName;
03701     typedef IntUnitsVariable            OriginalType;
03702     typedef IntUnitsVariable const&     PassType;
03703     typedef float                       IndexType;
03704     static inline int  getTypeCode() { return TypeCode::IntUnitsVariable; }
03705     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03706     typedef int PeakType;
03707     typedef double ScaleType;
03708 };
03709 
03710 template<>
03711 class TypeUtilityBase<const IntUnitsVariable>
03712 {
03713 public:
03714     typedef const IntUnitsVariable      TypeName;
03715     typedef IntUnitsVariable            OriginalType;
03716     typedef IntUnitsVariable const&     PassType;
03717     typedef float                       IndexType;
03718     static inline int  getTypeCode() { return TypeCode::IntUnitsVariable; }
03719     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03720     typedef int PeakType;
03721     typedef double ScaleType;
03722 };
03723 
03724 template<>
03725 class TypeUtilityBase<ShortUnitsVariable>
03726 {
03727 public:
03728     typedef ShortUnitsVariable          TypeName;
03729     typedef ShortUnitsVariable          OriginalType;
03730     typedef ShortUnitsVariable const&   PassType;
03731     typedef float                       IndexType;
03732     static inline int  getTypeCode() { return TypeCode::ShortUnitsVariable; }
03733     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03734     typedef int PeakType;
03735     typedef double ScaleType;
03736 };
03737 
03738 template<>
03739 class TypeUtilityBase<const ShortUnitsVariable>
03740 {
03741 public:
03742     typedef const ShortUnitsVariable    TypeName;
03743     typedef ShortUnitsVariable          OriginalType;
03744     typedef ShortUnitsVariable const&   PassType;
03745     typedef float                       IndexType;
03746     static inline int  getTypeCode() { return TypeCode::ShortUnitsVariable; }
03747     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03748     typedef int PeakType;
03749     typedef double ScaleType;
03750 };
03751 
03752 template<>
03753 class TypeUtilityBase<Int24UnitsVariable>
03754 {
03755 public:
03756     typedef Int24UnitsVariable          TypeName;
03757     typedef Int24UnitsVariable          OriginalType;
03758     typedef Int24UnitsVariable const&   PassType;
03759     typedef float                       IndexType;
03760     static inline int  getTypeCode() { return TypeCode::Int24UnitsVariable; }
03761     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03762     typedef int PeakType;
03763     typedef double ScaleType;
03764 };
03765 
03766 template<>
03767 class TypeUtilityBase<const Int24UnitsVariable>
03768 {
03769 public:
03770     typedef const Int24UnitsVariable    TypeName;
03771     typedef Int24UnitsVariable          OriginalType;
03772     typedef Int24UnitsVariable const&   PassType;
03773     typedef float                       IndexType;
03774     static inline int  getTypeCode() { return TypeCode::Int24UnitsVariable; }
03775     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03776     typedef int PeakType;
03777     typedef double ScaleType;
03778 };
03779 
03780 template<>
03781 class TypeUtilityBase<LongUnitsVariable>
03782 {
03783 public:
03784     typedef LongUnitsVariable           TypeName;
03785     typedef LongUnitsVariable           OriginalType;
03786     typedef LongUnitsVariable const&    PassType;
03787     typedef float                       IndexType;
03788     static inline int  getTypeCode() { return TypeCode::LongUnitsVariable; }
03789     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03790     typedef int PeakType;
03791     typedef double ScaleType;
03792 };
03793 
03794 template<>
03795 class TypeUtilityBase<const LongUnitsVariable>
03796 {
03797 public:
03798     typedef const LongUnitsVariable     TypeName;
03799     typedef LongUnitsVariable           OriginalType;
03800     typedef LongUnitsVariable const&    PassType;
03801     typedef float               IndexType;
03802     static inline int  getTypeCode() { return TypeCode::LongUnitsVariable; }
03803     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03804     typedef int PeakType;
03805     typedef double ScaleType;
03806 };
03807 
03808 template<>
03809 class TypeUtilityBase<FloatBussesVariable>
03810 {
03811 public:
03812     typedef FloatBussesVariable         TypeName;
03813     typedef FloatBussesVariable         OriginalType;
03814     typedef FloatBussesVariable const&  PassType;
03815     typedef float                       IndexType;
03816     static inline int  getTypeCode() { return TypeCode::FloatBussesVariable; }
03817     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03818     typedef int PeakType;
03819     typedef double ScaleType;
03820 };
03821 
03822 template<>
03823 class TypeUtilityBase<const FloatBussesVariable>
03824 {
03825 public:
03826     typedef const FloatBussesVariable   TypeName;
03827     typedef FloatBussesVariable         OriginalType;
03828     typedef FloatBussesVariable const&  PassType;
03829     typedef float                       IndexType;
03830     static inline int  getTypeCode() { return TypeCode::FloatBussesVariable; }
03831     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03832     typedef int PeakType;
03833     typedef double ScaleType;
03834 };
03835 
03836 template<>
03837 class TypeUtilityBase<DoubleBussesVariable>
03838 {
03839 public:
03840     typedef DoubleBussesVariable TypeName;
03841     typedef DoubleBussesVariable            OriginalType;
03842     typedef DoubleBussesVariable const&     PassType;
03843     typedef double                          IndexType;
03844     static inline int  getTypeCode() { return TypeCode::DoubleBussesVariable; }
03845     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03846     typedef int PeakType;
03847     typedef double ScaleType;
03848 };
03849 
03850 template<>
03851 class TypeUtilityBase<const DoubleBussesVariable>
03852 {
03853 public:
03854     typedef const DoubleBussesVariable      TypeName;
03855     typedef DoubleBussesVariable            OriginalType;
03856     typedef DoubleBussesVariable const&     PassType;
03857     typedef double                          IndexType;
03858     static inline int  getTypeCode() { return TypeCode::DoubleBussesVariable; }
03859     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03860     typedef int PeakType;
03861     typedef double ScaleType;
03862 };
03863 
03864 template<>
03865 class TypeUtilityBase<IntBussesVariable>
03866 {
03867 public:
03868     typedef IntBussesVariable           TypeName;
03869     typedef IntBussesVariable           OriginalType;
03870     typedef IntBussesVariable const&    PassType;
03871     typedef float                       IndexType;
03872     static inline int  getTypeCode() { return TypeCode::IntBussesVariable; }
03873     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03874     typedef int PeakType;
03875     typedef double ScaleType;
03876 };
03877 
03878 template<>
03879 class TypeUtilityBase<const IntBussesVariable>
03880 {
03881 public:
03882     typedef const IntBussesVariable     TypeName;
03883     typedef IntBussesVariable           OriginalType;
03884     typedef IntBussesVariable const&    PassType;
03885     typedef float                       IndexType;
03886     static inline int  getTypeCode() { return TypeCode::IntBussesVariable; }
03887     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03888     typedef int PeakType;
03889     typedef double ScaleType;
03890 };
03891 
03892 template<>
03893 class TypeUtilityBase<ShortBussesVariable>
03894 {
03895 public:
03896     typedef ShortBussesVariable         TypeName;
03897     typedef ShortBussesVariable         OriginalType;
03898     typedef ShortBussesVariable const&  PassType;
03899     typedef float                       IndexType;
03900     static inline int  getTypeCode() { return TypeCode::ShortBussesVariable; }
03901     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03902     typedef int PeakType;
03903     typedef double ScaleType;
03904 };
03905 
03906 template<>
03907 class TypeUtilityBase<const ShortBussesVariable>
03908 {
03909 public:
03910     typedef const ShortBussesVariable   TypeName;
03911     typedef ShortBussesVariable         OriginalType;
03912     typedef ShortBussesVariable const&  PassType;
03913     typedef float                       IndexType;
03914     static inline int  getTypeCode() { return TypeCode::ShortBussesVariable; }
03915     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03916     typedef int PeakType;
03917     typedef double ScaleType;
03918 };
03919 
03920 template<>
03921 class TypeUtilityBase<Int24BussesVariable>
03922 {
03923 public:
03924     typedef Int24BussesVariable         TypeName;
03925     typedef Int24BussesVariable         OriginalType;
03926     typedef Int24BussesVariable const&  PassType;
03927     typedef float                       IndexType;
03928     static inline int  getTypeCode() { return TypeCode::Int24BussesVariable; }
03929     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03930     typedef int PeakType;
03931     typedef double ScaleType;
03932 };
03933 
03934 template<>
03935 class TypeUtilityBase<const Int24BussesVariable>
03936 {
03937 public:
03938     typedef const Int24BussesVariable   TypeName;
03939     typedef Int24BussesVariable         OriginalType;
03940     typedef Int24BussesVariable const&  PassType;
03941     typedef float                       IndexType;
03942     static inline int  getTypeCode() { return TypeCode::Int24BussesVariable; }
03943     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03944     typedef int PeakType;
03945     typedef double ScaleType;
03946 };
03947 
03948 template<>
03949 class TypeUtilityBase<LongBussesVariable>
03950 {
03951 public:
03952     typedef LongBussesVariable          TypeName;
03953     typedef LongBussesVariable          OriginalType;
03954     typedef LongBussesVariable const&   PassType;
03955     typedef float                       IndexType;
03956     static inline int  getTypeCode() { return TypeCode::LongBussesVariable; }
03957     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03958     typedef int PeakType;
03959     typedef double ScaleType;
03960 };
03961 
03962 template<>
03963 class TypeUtilityBase<const LongBussesVariable>
03964 {
03965 public:
03966     typedef const LongBussesVariable    TypeName;
03967     typedef LongBussesVariable          OriginalType;
03968     typedef LongBussesVariable const&   PassType;
03969     typedef float                       IndexType;
03970     static inline int  getTypeCode() { return TypeCode::LongBussesVariable; }
03971     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03972     typedef int PeakType;
03973     typedef double ScaleType;
03974 };
03975 
03976 template<>
03977 class TypeUtilityBase<FloatBreakpointsVariable>
03978 {
03979 public:
03980     typedef FloatBreakpointsVariable            TypeName;
03981     typedef FloatBreakpointsVariable            OriginalType;
03982     typedef FloatBreakpointsVariable const&     PassType;
03983     typedef float                               IndexType;
03984     static inline int  getTypeCode() { return TypeCode::FloatBreakpointsVariable; }
03985     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
03986     typedef int PeakType;
03987     typedef double ScaleType;
03988 };
03989 
03990 template<>
03991 class TypeUtilityBase<const FloatBreakpointsVariable>
03992 {
03993 public:
03994     typedef const FloatBreakpointsVariable      TypeName;
03995     typedef FloatBreakpointsVariable            OriginalType;
03996     typedef FloatBreakpointsVariable const&     PassType;
03997     typedef float                               IndexType;
03998     static inline int  getTypeCode() { return TypeCode::FloatBreakpointsVariable; }
03999     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04000     typedef int PeakType;
04001     typedef double ScaleType;
04002 };
04003 
04004 template<>
04005 class TypeUtilityBase<DoubleBreakpointsVariable>
04006 {
04007 public:
04008     typedef DoubleBreakpointsVariable           TypeName;
04009     typedef DoubleBreakpointsVariable           OriginalType;
04010     typedef DoubleBreakpointsVariable const&    PassType;
04011     typedef double                              IndexType;
04012     static inline int  getTypeCode() { return TypeCode::DoubleBreakpointsVariable; }
04013     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04014     typedef int PeakType;
04015     typedef double ScaleType;
04016 };
04017 
04018 template<>
04019 class TypeUtilityBase<const DoubleBreakpointsVariable>
04020 {
04021 public:
04022     typedef const DoubleBreakpointsVariable     TypeName;
04023     typedef DoubleBreakpointsVariable           OriginalType;
04024     typedef DoubleBreakpointsVariable const&    PassType;
04025     typedef double                              IndexType;
04026     static inline int  getTypeCode() { return TypeCode::DoubleBreakpointsVariable; }
04027     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04028     typedef int PeakType;
04029     typedef double ScaleType;
04030 };
04031 
04032 template<>
04033 class TypeUtilityBase<IntBreakpointsVariable>
04034 {
04035 public:
04036     typedef IntBreakpointsVariable              TypeName;
04037     typedef IntBreakpointsVariable              OriginalType;
04038     typedef IntBreakpointsVariable const&       PassType;
04039     typedef float                               IndexType;
04040     static inline int  getTypeCode() { return TypeCode::IntBreakpointsVariable; }
04041     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04042     typedef int PeakType;
04043     typedef double ScaleType;
04044 };
04045 
04046 template<>
04047 class TypeUtilityBase<const IntBreakpointsVariable>
04048 {
04049 public:
04050     typedef const IntBreakpointsVariable        TypeName;
04051     typedef IntBreakpointsVariable              OriginalType;
04052     typedef IntBreakpointsVariable const&       PassType;
04053     typedef float                               IndexType;
04054     static inline int  getTypeCode() { return TypeCode::IntBreakpointsVariable; }
04055     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04056     typedef int PeakType;
04057     typedef double ScaleType;
04058 };
04059 
04060 template<>
04061 class TypeUtilityBase<ShortBreakpointsVariable>
04062 {
04063 public:
04064     typedef ShortBreakpointsVariable            TypeName;
04065     typedef ShortBreakpointsVariable            OriginalType;
04066     typedef ShortBreakpointsVariable const&     PassType;
04067     typedef float                               IndexType;
04068     static inline int  getTypeCode() { return TypeCode::ShortBreakpointsVariable; }
04069     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04070     typedef int PeakType;
04071     typedef double ScaleType;
04072 };
04073 
04074 template<>
04075 class TypeUtilityBase<const ShortBreakpointsVariable>
04076 {
04077 public:
04078     typedef const ShortBreakpointsVariable      TypeName;
04079     typedef ShortBreakpointsVariable            OriginalType;
04080     typedef ShortBreakpointsVariable const&     PassType;
04081     typedef float                               IndexType;
04082     static inline int  getTypeCode() { return TypeCode::ShortBreakpointsVariable; }
04083     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04084     typedef int PeakType;
04085     typedef double ScaleType;
04086 };
04087 
04088 template<>
04089 class TypeUtilityBase<Int24BreakpointsVariable>
04090 {
04091 public:
04092     typedef Int24BreakpointsVariable            TypeName;
04093     typedef Int24BreakpointsVariable            OriginalType;
04094     typedef Int24BreakpointsVariable const&     PassType;
04095     typedef float                               IndexType;
04096     static inline int  getTypeCode() { return TypeCode::Int24BreakpointsVariable; }
04097     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04098     typedef int PeakType;
04099     typedef double ScaleType;
04100 };
04101 
04102 template<>
04103 class TypeUtilityBase<const Int24BreakpointsVariable>
04104 {
04105 public:
04106     typedef const Int24BreakpointsVariable      TypeName;
04107     typedef Int24BreakpointsVariable            OriginalType;
04108     typedef Int24BreakpointsVariable const&     PassType;
04109     typedef float                               IndexType;
04110     static inline int  getTypeCode() { return TypeCode::Int24BreakpointsVariable; }
04111     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04112     typedef int PeakType;
04113     typedef double ScaleType;
04114 };
04115 
04116 template<>
04117 class TypeUtilityBase<LongBreakpointsVariable>
04118 {
04119 public:
04120     typedef LongBreakpointsVariable             TypeName;
04121     typedef LongBreakpointsVariable             OriginalType;
04122     typedef LongBreakpointsVariable const&      PassType;
04123     typedef float                               IndexType;
04124     static inline int  getTypeCode() { return TypeCode::LongBreakpointsVariable; }
04125     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04126     typedef int PeakType;
04127     typedef double ScaleType;
04128 };
04129 
04130 template<>
04131 class TypeUtilityBase<const LongBreakpointsVariable>
04132 {
04133 public:
04134     typedef const LongBreakpointsVariable       TypeName;
04135     typedef LongBreakpointsVariable             OriginalType;
04136     typedef LongBreakpointsVariable const&      PassType;
04137     typedef float                               IndexType;
04138     static inline int  getTypeCode() { return TypeCode::LongBreakpointsVariable; }
04139     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04140     typedef int PeakType;
04141     typedef double ScaleType;
04142 };
04143 
04144 template<>
04145 class TypeUtilityBase<FloatWavetableVariable>
04146 {
04147 public:
04148     typedef FloatWavetableVariable              TypeName;
04149     typedef FloatWavetableVariable              OriginalType;
04150     typedef FloatWavetableVariable const&       PassType;
04151     typedef float                               IndexType;
04152     static inline int  getTypeCode() { return TypeCode::FloatWavetableVariable; }
04153     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04154     typedef int PeakType;
04155     typedef double ScaleType;
04156 };
04157 
04158 template<>
04159 class TypeUtilityBase<const FloatWavetableVariable>
04160 {
04161 public:
04162     typedef const FloatWavetableVariable        TypeName;
04163     typedef FloatWavetableVariable              OriginalType;
04164     typedef FloatWavetableVariable const&       PassType;
04165     typedef float                               IndexType;
04166     static inline int  getTypeCode() { return TypeCode::FloatWavetableVariable; }
04167     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04168     typedef int PeakType;
04169     typedef double ScaleType;
04170 };
04171 
04172 template<>
04173 class TypeUtilityBase<DoubleWavetableVariable>
04174 {
04175 public:
04176     typedef DoubleWavetableVariable             TypeName;
04177     typedef DoubleWavetableVariable             OriginalType;
04178     typedef DoubleWavetableVariable const&      PassType;
04179     typedef double                              IndexType;
04180     static inline int  getTypeCode() { return TypeCode::DoubleWavetableVariable; }
04181     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04182     typedef int PeakType;
04183     typedef double ScaleType;
04184 };
04185 
04186 template<>
04187 class TypeUtilityBase<const DoubleWavetableVariable>
04188 {
04189 public:
04190     typedef const DoubleWavetableVariable       TypeName;
04191     typedef DoubleWavetableVariable             OriginalType;
04192     typedef DoubleWavetableVariable const&      PassType;
04193     typedef double                              IndexType;
04194     static inline int  getTypeCode() { return TypeCode::DoubleWavetableVariable; }
04195     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04196     typedef int PeakType;
04197     typedef double ScaleType;
04198 };
04199 
04200 template<>
04201 class TypeUtilityBase<IntWavetableVariable>
04202 {
04203 public:
04204     typedef IntWavetableVariable            TypeName;
04205     typedef IntWavetableVariable            OriginalType;
04206     typedef IntWavetableVariable const&     PassType;
04207     typedef float                           IndexType;
04208     static inline int  getTypeCode() { return TypeCode::IntWavetableVariable; }
04209     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04210     typedef int PeakType;
04211     typedef double ScaleType;
04212 };
04213 
04214 template<>
04215 class TypeUtilityBase<const IntWavetableVariable>
04216 {
04217 public:
04218     typedef const IntWavetableVariable      TypeName;
04219     typedef IntWavetableVariable            OriginalType;
04220     typedef IntWavetableVariable const&     PassType;
04221     typedef float                           IndexType;
04222     static inline int  getTypeCode() { return TypeCode::IntWavetableVariable; }
04223     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04224     typedef int PeakType;
04225     typedef double ScaleType;
04226 };
04227 
04228 template<>
04229 class TypeUtilityBase<ShortWavetableVariable>
04230 {
04231 public:
04232     typedef ShortWavetableVariable              TypeName;
04233     typedef ShortWavetableVariable              OriginalType;
04234     typedef ShortWavetableVariable const&       PassType;
04235     typedef float                               IndexType;
04236     static inline int  getTypeCode() { return TypeCode::ShortWavetableVariable; }
04237     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04238     typedef int PeakType;
04239     typedef double ScaleType;
04240 };
04241 
04242 template<>
04243 class TypeUtilityBase<const ShortWavetableVariable>
04244 {
04245 public:
04246     typedef const ShortWavetableVariable        TypeName;
04247     typedef ShortWavetableVariable              OriginalType;
04248     typedef ShortWavetableVariable const&       PassType;
04249     typedef float                               IndexType;
04250     static inline int  getTypeCode() { return TypeCode::ShortWavetableVariable; }
04251     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04252     typedef int PeakType;
04253     typedef double ScaleType;
04254 };
04255 
04256 template<>
04257 class TypeUtilityBase<Int24WavetableVariable>
04258 {
04259 public:
04260     typedef Int24WavetableVariable              TypeName;
04261     typedef Int24WavetableVariable              OriginalType;
04262     typedef Int24WavetableVariable const&       PassType;
04263     typedef float                               IndexType;
04264     static inline int  getTypeCode() { return TypeCode::Int24WavetableVariable; }
04265     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04266     typedef int PeakType;
04267     typedef double ScaleType;
04268 };
04269 
04270 template<>
04271 class TypeUtilityBase<const Int24WavetableVariable>
04272 {
04273 public:
04274     typedef const Int24WavetableVariable        TypeName;
04275     typedef Int24WavetableVariable              OriginalType;
04276     typedef Int24WavetableVariable const&       PassType;
04277     typedef float                               IndexType;
04278     static inline int  getTypeCode() { return TypeCode::Int24WavetableVariable; }
04279     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04280     typedef int PeakType;
04281     typedef double ScaleType;
04282 };
04283 
04284 template<>
04285 class TypeUtilityBase<LongWavetableVariable>
04286 {
04287 public:
04288     typedef LongWavetableVariable               TypeName;
04289     typedef LongWavetableVariable               OriginalType;
04290     typedef LongWavetableVariable const&        PassType;
04291     typedef float                               IndexType;
04292     static inline int  getTypeCode() { return TypeCode::LongWavetableVariable; }
04293     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04294     typedef int PeakType;
04295     typedef double ScaleType;
04296 };
04297 
04298 template<>
04299 class TypeUtilityBase<const LongWavetableVariable>
04300 {
04301 public:
04302     typedef const LongWavetableVariable         TypeName;
04303     typedef LongWavetableVariable               OriginalType;
04304     typedef LongWavetableVariable const&        PassType;
04305     typedef float                               IndexType;
04306     static inline int  getTypeCode() { return TypeCode::LongWavetableVariable; }
04307     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04308     typedef int PeakType;
04309     typedef double ScaleType;
04310 };
04311 
04312 template<>
04313 class TypeUtilityBase<FloatSignalVariable>
04314 {
04315 public:
04316     typedef FloatSignalVariable              TypeName;
04317     typedef FloatSignalVariable              OriginalType;
04318     typedef FloatSignalVariable const&       PassType;
04319     typedef float                            IndexType;
04320     static inline int  getTypeCode() { return TypeCode::FloatSignalVariable; }
04321     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04322     typedef int PeakType;
04323     typedef double ScaleType;
04324 };
04325 
04326 template<>
04327 class TypeUtilityBase<const FloatSignalVariable>
04328 {
04329 public:
04330     typedef const FloatSignalVariable        TypeName;
04331     typedef FloatSignalVariable              OriginalType;
04332     typedef FloatSignalVariable const&       PassType;
04333     typedef float                            IndexType;
04334     static inline int  getTypeCode() { return TypeCode::FloatSignalVariable; }
04335     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04336     typedef int PeakType;
04337     typedef double ScaleType;
04338 };
04339 
04340 template<>
04341 class TypeUtilityBase<DoubleSignalVariable>
04342 {
04343 public:
04344     typedef DoubleSignalVariable             TypeName;
04345     typedef DoubleSignalVariable             OriginalType;
04346     typedef DoubleSignalVariable const&      PassType;
04347     typedef double                           IndexType;
04348     static inline int  getTypeCode() { return TypeCode::DoubleSignalVariable; }
04349     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04350     typedef int PeakType;
04351     typedef double ScaleType;
04352 };
04353 
04354 template<>
04355 class TypeUtilityBase<const DoubleSignalVariable>
04356 {
04357 public:
04358     typedef const DoubleSignalVariable       TypeName;
04359     typedef DoubleSignalVariable             OriginalType;
04360     typedef DoubleSignalVariable const&      PassType;
04361     typedef double                           IndexType;
04362     static inline int  getTypeCode() { return TypeCode::DoubleSignalVariable; }
04363     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04364     typedef int PeakType;
04365     typedef double ScaleType;
04366 };
04367 
04368 template<>
04369 class TypeUtilityBase<IntSignalVariable>
04370 {
04371 public:
04372     typedef IntSignalVariable            TypeName;
04373     typedef IntSignalVariable            OriginalType;
04374     typedef IntSignalVariable const&     PassType;
04375     typedef float                        IndexType;
04376     static inline int  getTypeCode() { return TypeCode::IntSignalVariable; }
04377     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04378     typedef int PeakType;
04379     typedef double ScaleType;
04380 };
04381 
04382 template<>
04383 class TypeUtilityBase<const IntSignalVariable>
04384 {
04385 public:
04386     typedef const IntSignalVariable      TypeName;
04387     typedef IntSignalVariable            OriginalType;
04388     typedef IntSignalVariable const&     PassType;
04389     typedef float                        IndexType;
04390     static inline int  getTypeCode() { return TypeCode::IntSignalVariable; }
04391     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04392     typedef int PeakType;
04393     typedef double ScaleType;
04394 };
04395 
04396 template<>
04397 class TypeUtilityBase<ShortSignalVariable>
04398 {
04399 public:
04400     typedef ShortSignalVariable              TypeName;
04401     typedef ShortSignalVariable              OriginalType;
04402     typedef ShortSignalVariable const&       PassType;
04403     typedef float                            IndexType;
04404     static inline int  getTypeCode() { return TypeCode::ShortSignalVariable; }
04405     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04406     typedef int PeakType;
04407     typedef double ScaleType;
04408 };
04409 
04410 template<>
04411 class TypeUtilityBase<const ShortSignalVariable>
04412 {
04413 public:
04414     typedef const ShortSignalVariable        TypeName;
04415     typedef ShortSignalVariable              OriginalType;
04416     typedef ShortSignalVariable const&       PassType;
04417     typedef float                            IndexType;
04418     static inline int  getTypeCode() { return TypeCode::ShortSignalVariable; }
04419     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04420     typedef int PeakType;
04421     typedef double ScaleType;
04422 };
04423 
04424 template<>
04425 class TypeUtilityBase<Int24SignalVariable>
04426 {
04427 public:
04428     typedef Int24SignalVariable              TypeName;
04429     typedef Int24SignalVariable              OriginalType;
04430     typedef Int24SignalVariable const&       PassType;
04431     typedef float                            IndexType;
04432     static inline int  getTypeCode() { return TypeCode::Int24SignalVariable; }
04433     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04434     typedef int PeakType;
04435     typedef double ScaleType;
04436 };
04437 
04438 template<>
04439 class TypeUtilityBase<const Int24SignalVariable>
04440 {
04441 public:
04442     typedef const Int24SignalVariable        TypeName;
04443     typedef Int24SignalVariable              OriginalType;
04444     typedef Int24SignalVariable const&       PassType;
04445     typedef float                            IndexType;
04446     static inline int  getTypeCode() { return TypeCode::Int24SignalVariable; }
04447     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04448     typedef int PeakType;
04449     typedef double ScaleType;
04450 };
04451 
04452 template<>
04453 class TypeUtilityBase<LongSignalVariable>
04454 {
04455 public:
04456     typedef LongSignalVariable               TypeName;
04457     typedef LongSignalVariable               OriginalType;
04458     typedef LongSignalVariable const&        PassType;
04459     typedef float                            IndexType;
04460     static inline int  getTypeCode() { return TypeCode::LongSignalVariable; }
04461     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04462     typedef int PeakType;
04463     typedef double ScaleType;
04464 };
04465 
04466 template<>
04467 class TypeUtilityBase<const LongSignalVariable>
04468 {
04469 public:
04470     typedef const LongSignalVariable         TypeName;
04471     typedef LongSignalVariable               OriginalType;
04472     typedef LongSignalVariable const&        PassType;
04473     typedef float                            IndexType;
04474     static inline int  getTypeCode() { return TypeCode::LongSignalVariable; }
04475     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04476     typedef int PeakType;
04477     typedef double ScaleType;
04478 };
04479 
04480 template<>
04481 class TypeUtilityBase<AudioFileReader>
04482 {
04483 public:
04484     typedef AudioFileReader               TypeName;
04485     typedef AudioFileReader               OriginalType;
04486     typedef AudioFileReader const&        PassType;
04487     typedef void                          IndexType;
04488     static inline int  getTypeCode() { return TypeCode::AudioFileReader; }
04489     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04490     typedef int PeakType;
04491     typedef double ScaleType;
04492 };
04493 
04494 template<>
04495 class TypeUtilityBase<const AudioFileReader>
04496 {
04497 public:
04498     typedef const AudioFileReader         TypeName;
04499     typedef AudioFileReader               OriginalType;
04500     typedef AudioFileReader const&        PassType;
04501     typedef void                          IndexType;
04502     static inline int  getTypeCode() { return TypeCode::AudioFileReader; }
04503     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04504     typedef int PeakType;
04505     typedef double ScaleType;
04506 };
04507 
04508 template<>
04509 class TypeUtilityBase<FloatUnitQueue>
04510 {
04511 public:
04512     typedef FloatUnitQueue               TypeName;
04513     typedef FloatUnitQueue               OriginalType;
04514     typedef FloatUnitQueue const&        PassType;
04515     typedef float                        IndexType;
04516     static inline int  getTypeCode() { return TypeCode::FloatUnitQueue; }
04517     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04518     typedef int PeakType;
04519     typedef double ScaleType;
04520 };
04521 
04522 template<>
04523 class TypeUtilityBase<const FloatUnitQueue>
04524 {
04525 public:
04526     typedef const FloatUnitQueue         TypeName;
04527     typedef FloatUnitQueue               OriginalType;
04528     typedef FloatUnitQueue const&        PassType;
04529     typedef float                        IndexType;
04530     static inline int  getTypeCode() { return TypeCode::FloatUnitQueue; }
04531     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04532     typedef int PeakType;
04533     typedef double ScaleType;
04534 };
04535 
04536 template<>
04537 class TypeUtilityBase<DoubleUnitQueue>
04538 {
04539 public:
04540     typedef DoubleUnitQueue              TypeName;
04541     typedef DoubleUnitQueue              OriginalType;
04542     typedef DoubleUnitQueue const&       PassType;
04543     typedef double                  IndexType;
04544     static inline int  getTypeCode() { return TypeCode::DoubleUnitQueue; }
04545     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04546     typedef int PeakType;
04547     typedef double ScaleType;
04548 };
04549 
04550 template<>
04551 class TypeUtilityBase<const DoubleUnitQueue>
04552 {
04553 public:
04554     typedef const DoubleUnitQueue        TypeName;
04555     typedef DoubleUnitQueue              OriginalType;
04556     typedef DoubleUnitQueue const&       PassType;
04557     typedef double                  IndexType;
04558     static inline int  getTypeCode() { return TypeCode::DoubleUnitQueue; }
04559     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04560     typedef int PeakType;
04561     typedef double ScaleType;
04562 };
04563 
04564 template<>
04565 class TypeUtilityBase<IntUnitQueue>
04566 {
04567 public:
04568     typedef IntUnitQueue             TypeName;
04569     typedef IntUnitQueue             OriginalType;
04570     typedef IntUnitQueue const&      PassType;
04571     typedef float               IndexType;
04572     static inline int  getTypeCode() { return TypeCode::IntUnitQueue; }
04573     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04574     typedef int PeakType;
04575     typedef double ScaleType;
04576 };
04577 
04578 template<>
04579 class TypeUtilityBase<const IntUnitQueue>
04580 {
04581 public:
04582     typedef const IntUnitQueue       TypeName;
04583     typedef IntUnitQueue             OriginalType;
04584     typedef IntUnitQueue const&      PassType;
04585     typedef float               IndexType;
04586     static inline int  getTypeCode() { return TypeCode::IntUnitQueue; }
04587     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04588     typedef int PeakType;
04589     typedef double ScaleType;
04590 };
04591 
04592 template<>
04593 class TypeUtilityBase<ShortUnitQueue>
04594 {
04595 public:
04596     typedef ShortUnitQueue           TypeName;
04597     typedef ShortUnitQueue           OriginalType;
04598     typedef ShortUnitQueue const&    PassType;
04599     typedef float               IndexType;
04600     static inline int  getTypeCode() { return TypeCode::ShortUnitQueue; }
04601     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04602     typedef int PeakType;
04603     typedef double ScaleType;
04604 };
04605 
04606 template<>
04607 class TypeUtilityBase<const ShortUnitQueue>
04608 {
04609 public:
04610     typedef const ShortUnitQueue     TypeName;
04611     typedef ShortUnitQueue           OriginalType;
04612     typedef ShortUnitQueue const&    PassType;
04613     typedef float               IndexType;
04614     static inline int  getTypeCode() { return TypeCode::ShortUnitQueue; }
04615     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04616     typedef int PeakType;
04617     typedef double ScaleType;
04618 };
04619 
04620 template<>
04621 class TypeUtilityBase<Int24UnitQueue>
04622 {
04623 public:
04624     typedef Int24UnitQueue           TypeName;
04625     typedef Int24UnitQueue           OriginalType;
04626     typedef Int24UnitQueue const&    PassType;
04627     typedef float               IndexType;
04628     static inline int  getTypeCode() { return TypeCode::Int24UnitQueue; }
04629     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04630     typedef int PeakType;
04631     typedef double ScaleType;
04632 };
04633 
04634 template<>
04635 class TypeUtilityBase<const Int24UnitQueue>
04636 {
04637 public:
04638     typedef const Int24UnitQueue     TypeName;
04639     typedef Int24UnitQueue           OriginalType;
04640     typedef Int24UnitQueue const&    PassType;
04641     typedef float               IndexType;
04642     static inline int  getTypeCode() { return TypeCode::Int24UnitQueue; }
04643     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04644     typedef int PeakType;
04645     typedef double ScaleType;
04646 };
04647 
04648 template<>
04649 class TypeUtilityBase<LongUnitQueue>
04650 {
04651 public:
04652     typedef LongUnitQueue            TypeName;
04653     typedef LongUnitQueue            OriginalType;
04654     typedef LongUnitQueue const&     PassType;
04655     typedef float               IndexType;
04656     static inline int  getTypeCode() { return TypeCode::LongUnitQueue; }
04657     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04658     typedef int PeakType;
04659     typedef double ScaleType;
04660 };
04661 
04662 template<>
04663 class TypeUtilityBase<const LongUnitQueue>
04664 {
04665 public:
04666     typedef const LongUnitQueue      TypeName;
04667     typedef LongUnitQueue            OriginalType;
04668     typedef LongUnitQueue const&     PassType;
04669     typedef float               IndexType;
04670     static inline int  getTypeCode() { return TypeCode::LongUnitQueue; }
04671     static inline const OriginalType& getNull() { return TypeUtilityBase<const OriginalType&>::getNull(); }
04672     typedef int PeakType;
04673     typedef double ScaleType;
04674 };
04675 
04676 //------------------------------------------------------------------------------
04677 
04680 template<class Type>
04681 class TypeUtility : public TypeUtilityBase<Type>
04682 {
04683 public:
04684     typedef typename TypeUtilityBase<Type>::TypeName        TypeName;
04685     typedef typename TypeUtilityBase<Type>::PeakType        PeakType;
04686     typedef typename TypeUtilityBase<Type>::ScaleType       ScaleType;
04687     typedef typename TypeUtilityBase<Type>::OriginalType    OriginalType;
04688     typedef typename TypeUtilityBase<Type>::PassType        PassType;
04689     typedef typename TypeUtilityBase<Type>::IndexType       IndexType;
04690     
04691     static inline Text getTypeName()                 { return TypeCode::getName (TypeUtility<Type>::getTypeCode()); }
04692     static inline const PeakType& getTypePeak()      { static PeakType v = (PeakType)TypeCode::getPeak (TypeUtility<Type>::getTypeCode()); return v; }
04693     static inline const ScaleType& getTypeScale()    { static ScaleType v = Math<ScaleType>::get1() / ScaleType (getTypePeak()); return v; }
04694     static inline double getTypeEpsilon()            { return TypeCode::getEpsilon (TypeUtility<Type>::getTypeCode()); }
04695     static inline Text getIndexTypeName()            { return TypeCode::getName (TypeUtility<IndexType>::getTypeCode()); }
04696 
04697     static inline bool isUnknown() throw()           { return TypeCode::isUnknown (TypeUtility<Type>::getTypeCode()); }
04698     static inline bool isDynamic() throw()           { return TypeCode::isDynamic (TypeUtility<Type>::getTypeCode()); }    
04699     static inline bool isBuiltIn() throw()           { return TypeCode::isBuiltIn (TypeUtility<Type>::getTypeCode()); }
04700     static inline bool isVariable() throw()          { return TypeCode::isVariable (TypeUtility<Type>::getTypeCode()); }
04701     static inline bool isAtomicVariable() throw()    { return TypeCode::isAtomicVariable (TypeUtility<Type>::getTypeCode()); }
04702     static inline bool isArray() throw()             { return TypeCode::isArray (TypeUtility<Type>::getTypeCode()); }
04703     static inline bool isChannel() throw()           { return TypeCode::isChannel (TypeUtility<Type>::getTypeCode()); }
04704     static inline bool isUnit() throw()              { return TypeCode::isUnit (TypeUtility<Type>::getTypeCode()); }
04705     static inline bool isBus() throw()               { return TypeCode::isBus (TypeUtility<Type>::getTypeCode()); }
04706     static inline bool isUnits() throw()             { return TypeCode::isUnits (TypeUtility<Type>::getTypeCode()); }
04707     static inline bool isBusses() throw()            { return TypeCode::isBusses (TypeUtility<Type>::getTypeCode()); }
04708     static inline bool isWavetable() throw()         { return TypeCode::isWavetable (TypeUtility<Type>::getTypeCode()); }
04709     static inline bool isSignal() throw()            { return TypeCode::isSignal (TypeUtility<Type>::getTypeCode()); }
04710     static inline bool isAudioFileReader() throw()   { return TypeCode::isAudioFileReader (TypeUtility<Type>::getTypeCode()); }
04711     static inline bool isUnitQueue() throw()         { return TypeCode::isUnitQueue (TypeUtility<Type>::getTypeCode()); }
04712     
04713     static inline bool isFloatType() throw()         { return TypeCode::isFloatType (TypeUtility<Type>::getTypeCode()); }
04714     static inline bool isDoubleType() throw()        { return TypeCode::isDoubleType (TypeUtility<Type>::getTypeCode()); }
04715     static inline bool isIntType() throw()           { return TypeCode::isIntType (TypeUtility<Type>::getTypeCode()); }
04716     static inline bool isInt24Type() throw()         { return TypeCode::isInt24Type (TypeUtility<Type>::getTypeCode()); }
04717     static inline bool isLongType() throw()          { return TypeCode::isLongType (TypeUtility<Type>::getTypeCode()); }
04718     static inline bool isShortType() throw()         { return TypeCode::isShortType (TypeUtility<Type>::getTypeCode()); }
04719     static inline bool isCharType() throw()          { return TypeCode::isCharType (TypeUtility<Type>::getTypeCode()); }
04720     static inline bool isBoolType() throw()          { return TypeCode::isBoolType (TypeUtility<Type>::getTypeCode()); }
04721     
04722     static inline bool isFloatOrDoubleType() throw() { return TypeCode::isFloatOrDoubleType (TypeUtility<Type>::getTypeCode()); }
04723     static inline bool isIntegralType() throw()      { return TypeCode::isIntegralType (TypeUtility<Type>::getTypeCode()); }
04724 };
04725 
04726 
04727 
04728 
04729 #endif // PLONK_TYPEUTILITY_H
 All Classes Functions Typedefs Enumerations Enumerator Properties