5 #include <OperatorAnnotation.h>
6 #include <CPPAstInterface.h>
10 :
public MapDescriptor<StringDescriptor, SymbolicValDescriptor, ';', '{', '}'>
16 MapDescriptor<StringDescriptor, SymbolicValDescriptor,
';',
'{',
'}'>
21 CollectPair<StringDescriptor, SymbolicValDescriptor, '='>,
22 ';',
'{',
'}'>
::read(*
this, in);
27 void replace_val( MapObject<SymbolicVal, SymbolicVal>& repl);
29 bool has_value(
const std::string&
name, SymbolicValDescriptor* r = 0)
const;
34 typedef TypeAnnotCollection< HasValueDescriptor >
BaseClass;
36 {
return annotName ==
"has_value"; }
39 { std::cerr <<
"has_value: \n"; BaseClass::Dump(); }
41 const SymbolicVal& exp, AstNodePtr* objp,
42 SymbolicFunction::Arguments* argsp,
45 const AstNodePtr& exp, AstNodePtr* objp,
46 AstInterface::AstNodeList* args,
52 :
public OPDescriptorTemp
53 <ContainerDescriptor< std::list <RestrictValueDescriptor>, RestrictValueDescriptor, ';', '{', '}'> >
55 typedef OPDescriptorTemp
59 void replace_val( MapObject<SymbolicVal, SymbolicVal>& repl);
63 :
public OperatorAnnotCollection<RestrictValueOpDescriptor>
66 {
return annotName ==
"restrict_value"; }
70 std::cerr <<
"restrict_value: \n";
71 OperatorAnnotCollection<RestrictValueOpDescriptor>::Dump();
87 Collect2Object< AstNodePtr, HasValueDescriptor>* desc = 0,
88 MapObject<SymbolicVal, SymbolicVal>* valMap = 0,
89 Map2Object<AstInterface*, AstNodePtr, AstNodePtr> *codegen = 0);
91 AstNodePtr* obj=0, std::string*
name = 0,
92 AstInterface::AstNodeList* args=0,