GizmoBase

gzArgument.h

Go to the documentation of this file.
00001 //*****************************************************************************
00002 // File         : gzArgument.h
00003 // Module       : gzBase
00004 // Description  : Class definition of gzArgument
00005 // Author       : Anders Modén      
00006 // Product      : GizmoBase 2.1.1
00007 //      
00008 // Copyright © 2003- Saab Training Systems AB, Sweden
00009 //          
00010 // NOTE:    GizmoBase is a platform abstraction utility layer for C++. It contains 
00011 //          design patterns and C++ solutions for the advanced programmer.
00012 //
00013 //
00014 // Revision History...                          
00015 //                                  
00016 // Who  Date    Description                     
00017 //                                  
00018 // AMO  980819  Created file    
00019 //
00020 //******************************************************************************
00021 
00022 #ifndef __GZ_ARGUMENT_H__
00023 #define __GZ_ARGUMENT_H__
00024 
00025 //********************************************************************/
00026 
00027 // Argument class definition to avoid ... (ellipse args)
00028 
00029 class gzString; // Forward declaration
00030 
00031 class  gzArgument   // Shall only be used as arguments as they refer to volatile values (non references values)
00032 {
00033 public:
00034     GZ_BASE_EXPORT gzArgument(const gzDouble    &value);
00035     GZ_BASE_EXPORT gzArgument(const gzByte      &value);
00036     GZ_BASE_EXPORT gzArgument(const gzUByte     &value);
00037     GZ_BASE_EXPORT gzArgument(const gzUShort    &value);
00038     GZ_BASE_EXPORT gzArgument(const gzShort     &value);
00039     GZ_BASE_EXPORT gzArgument(const gzUInt      &value);
00040     GZ_BASE_EXPORT gzArgument(const gzInt       &value);
00041     GZ_BASE_EXPORT gzArgument(const gzULong     &value);
00042     GZ_BASE_EXPORT gzArgument(const gzLong      &value);
00043     GZ_BASE_EXPORT gzArgument(const gzVoid      *value);
00044     GZ_BASE_EXPORT gzArgument(const gzLongLong  &value);
00045     GZ_BASE_EXPORT gzArgument(const gzULongLong &value);
00046     GZ_BASE_EXPORT gzArgument(const gzString    &value);
00047 
00048     GZ_BASE_EXPORT inline gzArgument():m_type(GZ_ARG_VOID){};
00049 
00050     GZ_BASE_EXPORT operator gzDouble	() const;
00051     GZ_BASE_EXPORT operator gzVoid *	() const;
00052     GZ_BASE_EXPORT gzLongLong   getLongLong()   const;
00053     GZ_BASE_EXPORT gzULongLong  getULongLong()  const;
00054     GZ_BASE_EXPORT gzString &   getString() const;
00055 
00056     GZ_BASE_EXPORT gzBool isVoid()      const;
00057     GZ_BASE_EXPORT gzBool isDouble()    const;
00058     GZ_BASE_EXPORT gzBool isPointer()   const;
00059     GZ_BASE_EXPORT gzBool isLongLong()  const;
00060     GZ_BASE_EXPORT gzBool isULongLong() const;
00061     GZ_BASE_EXPORT gzBool isString()    const;
00062 
00063 private:
00064 
00065     enum { GZ_ARG_VOID , GZ_ARG_DOUBLE , GZ_ARG_POINTER , GZ_ARG_LONGLONG,GZ_ARG_ULONGLONG,GZ_ARG_STRING};
00066 
00067     union values
00068     {
00069         gzDouble    dvalue;
00070         gzLongLong  lvalue;
00071         gzULongLong uvalue;
00072         gzString    *string;
00073     } m_value;
00074 
00075     gzUByte  m_type;
00076 };
00077 
00078 #define ARG_DEF_DECL(n) const gzArgument &a##n=gzArgument()
00079 #define ARG_DEF_BODY(n) const gzArgument &a##n
00080 
00081 #define ARG_DECL_LIST   ARG_DEF_DECL(0) , \
00082                         ARG_DEF_DECL(1) , \
00083                         ARG_DEF_DECL(2) , \
00084                         ARG_DEF_DECL(3) , \
00085                         ARG_DEF_DECL(4) , \
00086                         ARG_DEF_DECL(5) , \
00087                         ARG_DEF_DECL(6) , \
00088                         ARG_DEF_DECL(7) , \
00089                         ARG_DEF_DECL(8) , \
00090                         ARG_DEF_DECL(9) , \
00091                         ARG_DEF_DECL(10) , \
00092                         ARG_DEF_DECL(11) , \
00093                         ARG_DEF_DECL(12) , \
00094                         ARG_DEF_DECL(13) , \
00095                         ARG_DEF_DECL(14) , \
00096                         ARG_DEF_DECL(15) 
00097 
00098 #define ARG_BODY_LIST   ARG_DEF_BODY(0) , \
00099                         ARG_DEF_BODY(1) , \
00100                         ARG_DEF_BODY(2) , \
00101                         ARG_DEF_BODY(3) , \
00102                         ARG_DEF_BODY(4) , \
00103                         ARG_DEF_BODY(5) , \
00104                         ARG_DEF_BODY(6) , \
00105                         ARG_DEF_BODY(7) , \
00106                         ARG_DEF_BODY(8) , \
00107                         ARG_DEF_BODY(9) , \
00108                         ARG_DEF_BODY(10) , \
00109                         ARG_DEF_BODY(11) , \
00110                         ARG_DEF_BODY(12) , \
00111                         ARG_DEF_BODY(13) , \
00112                         ARG_DEF_BODY(14) , \
00113                         ARG_DEF_BODY(15) 
00114 
00115 #define ARG_TRANSFER    a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15
00116 
00117 
00118 #endif // __GZ_ARGUMENT_H__
00119 
00120 
00121 
00122 
00123 
00124 
00125 

Documentation for GizmoBase generated at Wed Feb 20 11:57:53 2008 by   Saab Training Systems AB, ¸ (c) 2003-and beyond