1 #ifndef CYCRIPT_OBJECTIVEC_HPP
2 #define CYCRIPT_OBJECTIVEC_HPP
6 struct CYSelectorPart :
7 CYNext<CYSelectorPart>,
13 CYSelectorPart(CYWord *name, bool value, CYSelectorPart *next) :
14 CYNext<CYSelectorPart>(next),
20 CYString *Replace(CYContext &context);
21 virtual void Output(CYOutput &out) const;
27 CYSelectorPart *name_;
29 CYSelector(CYSelectorPart *name) :
36 virtual CYExpression *Replace(CYContext &context);
37 virtual void Output(CYOutput &out, CYFlags flags) const;
43 CYStatement *Replace(CYContext &context) const;
44 void Output(CYOutput &out) const;
47 struct CYMessageParameter :
48 CYNext<CYMessageParameter>
54 CYMessageParameter(CYWord *tag, CYExpression *type, CYIdentifier *name) :
61 CYFunctionParameter *Parameters(CYContext &context) const;
62 CYSelector *Selector(CYContext &context) const;
63 CYSelectorPart *SelectorPart(CYContext &context) const;
71 CYMessageParameter *parameters_;
72 CYStatement *statements_;
74 CYMessage(bool instance, CYExpression *type, CYMessageParameter *parameter, CYStatement *statements) :
77 parameters_(parameter),
78 statements_(statements)
82 CYStatement *Replace(CYContext &context, bool replace) const;
83 void Output(CYOutput &out, bool replace) const;
92 CYClass(CYClassName *name, CYExpression *super, CYField *fields, CYMessage *messages) :
100 CYExpression *Replace_(CYContext &context);
101 virtual void Output(CYOutput &out, CYFlags flags) const;
104 struct CYClassExpression :
108 CYClassExpression(CYClassName *name, CYExpression *super, CYField *fields, CYMessage *messages) :
109 CYClass(name, super, fields, messages)
115 virtual CYExpression *Replace(CYContext &context);
116 virtual void Output(CYOutput &out, CYFlags flags) const;
119 struct CYClassStatement :
123 CYClassStatement(CYClassName *name, CYExpression *super, CYField *fields, CYMessage *messages) :
124 CYClass(name, super, fields, messages)
128 virtual CYStatement *Replace(CYContext &context);
129 virtual void Output(CYOutput &out, CYFlags flags) const;
136 CYMessage *messages_;
138 CYCategory(CYClassName *name, CYMessage *messages) :
144 virtual CYStatement *Replace(CYContext &context);
145 virtual void Output(CYOutput &out, CYFlags flags) const;
152 CYArgument *arguments_;
154 CYSend(CYExpression *self, CYArgument *arguments) :
156 arguments_(arguments)
162 virtual CYExpression *Replace(CYContext &context);
163 virtual void Output(CYOutput &out, CYFlags flags) const;
166 #endif/*CYCRIPT_OBJECTIVEC_HPP*/