00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef UTAP_LIBPARSER_HH
00023 #define UTAP_LIBPARSER_HH
00024
00025 #include <functional>
00026
00027 #include "utap/builder.h"
00028
00029 #define MAXLEN 64
00030
00031 enum syntax_t { SYNTAX_OLD = 1,
00032 SYNTAX_NEW = 2,
00033 SYNTAX_PROPERTY = 4,
00034 SYNTAX_GUIDING = 8 };
00035
00036
00037
00038
00039 template <typename ReturnType, typename CalleeType, typename ArgType>
00040 class other_mem_fun_t
00041 {
00042 typedef ReturnType (CalleeType::*function_t) (ArgType);
00043 CalleeType *m_callee;
00044 function_t m_pfn;
00045
00046 public:
00047 other_mem_fun_t(CalleeType *callee, function_t pfn)
00048 : m_callee(callee), m_pfn(pfn)
00049 {
00050 }
00051
00052 ReturnType operator() (ArgType arg) const
00053 {
00054 return (m_callee->*m_pfn)(arg);
00055 }
00056 };
00057
00058 template <typename ReturnType, typename CalleeType, typename ArgType>
00059 other_mem_fun_t<ReturnType, CalleeType, ArgType>
00060 other_mem_fun(CalleeType *callee, ReturnType (CalleeType::* pfn)(ArgType))
00061 {
00062 return other_mem_fun_t<ReturnType, CalleeType, ArgType>(callee, pfn);
00063 }
00064
00065
00066 extern bool isKeyword(const char *id, uint32_t syntax);
00067
00068 #endif