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.hh"
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 typedef enum {
00038 S_XTA,
00039 S_DECLARATION, S_LOCAL_DECL, S_INST, S_SYSTEM, S_PARAMETERS,
00040 S_INVARIANT, S_GUARD, S_SYNC, S_ASSIGN
00041 } xta_part_t;
00042
00043
00044
00045
00046 template <typename ReturnType, typename CalleeType, typename ArgType>
00047 class other_mem_fun_t
00048 {
00049 typedef ReturnType (CalleeType::*function_t) (ArgType);
00050 CalleeType *m_callee;
00051 function_t m_pfn;
00052
00053 public:
00054 other_mem_fun_t(CalleeType *callee, function_t pfn)
00055 : m_callee(callee), m_pfn(pfn)
00056 {
00057 }
00058
00059 ReturnType operator() (ArgType arg) const
00060 {
00061 return (m_callee->*m_pfn)(arg);
00062 }
00063 };
00064
00065 template <typename ReturnType, typename CalleeType, typename ArgType>
00066 other_mem_fun_t<ReturnType, CalleeType, ArgType>
00067 other_mem_fun(CalleeType *callee, ReturnType (CalleeType::* pfn)(ArgType))
00068 {
00069 return other_mem_fun_t<ReturnType, CalleeType, ArgType>(callee, pfn);
00070 }
00071
00072
00073
00074
00075
00076
00077
00078
00079 int32_t parseXTA(FILE *, UTAP::ParserBuilder *,
00080 UTAP::ErrorHandler *,
00081 bool newxta, xta_part_t part);
00082 int32_t parseXTA(const char *, UTAP::ParserBuilder *,
00083 UTAP::ErrorHandler *, bool newxta,
00084 xta_part_t part);
00085
00086
00087 extern bool isKeyword(const char *id, uint32_t syntax);
00088
00089 #endif