00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __GZ_ARGUMENT_H__
00023 #define __GZ_ARGUMENT_H__
00024
00025
00026
00027
00028
00029 class gzString;
00030
00031 class gzArgument
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