X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/d15b59f5d4f43d12719c5ce37518246058b405c6..0ced2e47fe333ec4a4b1222fa298561c5479696c:/ObjectiveC/Syntax.hpp diff --git a/ObjectiveC/Syntax.hpp b/ObjectiveC/Syntax.hpp index f101858..d8f57ec 100644 --- a/ObjectiveC/Syntax.hpp +++ b/ObjectiveC/Syntax.hpp @@ -49,7 +49,7 @@ struct CYSelectorPart : CYWord *name_; bool value_; - CYSelectorPart(CYWord *name, bool value, CYSelectorPart *next) : + CYSelectorPart(CYWord *name, bool value, CYSelectorPart *next = NULL) : CYNext(next), name_(name), value_(value) @@ -122,20 +122,41 @@ struct CYMessage : void Output(CYOutput &out, bool replace) const; }; +struct CYProtocol : + CYNext, + CYThing +{ + CYExpression *name_; + + CYProtocol(CYExpression *name, CYProtocol *next = NULL) : + CYNext(next), + name_(name) + { + } + + CYStatement *Replace(CYContext &context) const; + void Output(CYOutput &out) const; +}; + struct CYClass { CYClassName *name_; CYExpression *super_; + CYProtocol *protocols_; CYField *fields_; CYMessage *messages_; - CYClass(CYClassName *name, CYExpression *super, CYField *fields, CYMessage *messages) : + CYClass(CYClassName *name, CYExpression *super, CYProtocol *protocols, CYField *fields, CYMessage *messages) : name_(name), super_(super), + protocols_(protocols), fields_(fields), messages_(messages) { } + virtual ~CYClass() { + } + CYExpression *Replace_(CYContext &context); virtual void Output(CYOutput &out, CYFlags flags) const; }; @@ -144,8 +165,8 @@ struct CYClassExpression : CYClass, CYExpression { - CYClassExpression(CYClassName *name, CYExpression *super, CYField *fields, CYMessage *messages) : - CYClass(name, super, fields, messages) + CYClassExpression(CYClassName *name, CYExpression *super, CYProtocol *protocols, CYField *fields, CYMessage *messages) : + CYClass(name, super, protocols, fields, messages) { } @@ -159,8 +180,8 @@ struct CYClassStatement : CYClass, CYStatement { - CYClassStatement(CYClassName *name, CYExpression *super, CYField *fields, CYMessage *messages) : - CYClass(name, super, fields, messages) + CYClassStatement(CYClassName *name, CYExpression *super, CYProtocol *protocols, CYField *fields, CYMessage *messages) : + CYClass(name, super, protocols, fields, messages) { }