00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _FunctionWrapper_incl_
00020 #define _FunctionWrapper_incl_
00021
00022 #include <rel/SmartPtr.h>
00023
00024 namespace rel
00025 {
00026 class TypeStream;
00027 typedef OpaqueValue (*TypeStreamArgFunction)(const TypeStream *);
00028 struct TypeStreamArgFunctionWrapper { };
00029 OpaqueValue functionWrapper( TypeStreamArgFunction function );
00030
00031 typedef OpaqueValue (*NullArgFunction)();
00032 struct NullArgFunctionWrapper { };
00033 OpaqueValue functionWrapper( NullArgFunction function );
00034
00035
00036
00037 template<>
00038 bool smartPtrInterpret<TypeStreamArgFunctionWrapper>(
00039 TypeStreamArgFunctionWrapper *value,
00040 const std::type_info &resultType,
00041 const OpaqueValue *args,
00042 OpaqueValue *output);
00043
00044 template<>
00045 bool smartPtrInterpret<NullArgFunctionWrapper>(
00046 NullArgFunctionWrapper *value,
00047 const std::type_info &resultType,
00048 const OpaqueValue *args,
00049 OpaqueValue *output);
00050
00051
00052
00053 }
00054
00055
00056
00057 #endif