X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/b3378a02d0a811be38e530933fb9a57a3012a823..c44063e0c2da92d76816f163c34caa8cc3e710b7:/ObjectiveC/Syntax.hpp diff --git a/ObjectiveC/Syntax.hpp b/ObjectiveC/Syntax.hpp index a5e826d..580ea3a 100644 --- a/ObjectiveC/Syntax.hpp +++ b/ObjectiveC/Syntax.hpp @@ -1,5 +1,5 @@ /* Cycript - Optimizing JavaScript Compiler/Runtime - * Copyright (C) 2009-2010 Jay Freeman (saurik) + * Copyright (C) 2009-2012 Jay Freeman (saurik) */ /* GNU Lesser General Public License, Version 3 {{{ */ @@ -24,6 +24,22 @@ #include "Parser.hpp" +struct CYBox : + CYExpression +{ + CYExpression *value_; + + CYBox(CYExpression *value) : + value_(value) + { + } + + CYPrecedence(1) + + virtual CYExpression *Replace(CYContext &context); + virtual void Output(CYOutput &out, CYFlags flags) const; +}; + struct CYSelectorPart : CYNext, CYThing @@ -61,6 +77,16 @@ struct CYSelector : struct CYField : CYNext { + CYExpression *type_; + CYIdentifier *name_; + + CYField(CYExpression *type, CYIdentifier *name, CYField *next = NULL) : + CYNext(next), + type_(type), + name_(name) + { + } + CYStatement *Replace(CYContext &context) const; void Output(CYOutput &out) const; }; @@ -82,6 +108,7 @@ struct CYMessageParameter : CYFunctionParameter *Parameters(CYContext &context) const; CYSelector *Selector(CYContext &context) const; CYSelectorPart *SelectorPart(CYContext &context) const; + CYExpression *TypeSignature(CYContext &context) const; }; struct CYMessage : @@ -102,6 +129,8 @@ struct CYMessage : CYStatement *Replace(CYContext &context, bool replace) const; void Output(CYOutput &out, bool replace) const; + + CYExpression *TypeSignature(CYContext &context) const; }; struct CYProtocol :