]> git.saurik.com Git - cycript.git/blobdiff - Syntax.hpp
Port modules to typedef/extern instead of @encode.
[cycript.git] / Syntax.hpp
index e3885cf4ba7f2ec93ac09358ea33e96ab415e000..5b74e4321f798dad40d6fee1e84d05353867b230 100644 (file)
@@ -2072,6 +2072,20 @@ struct CYTypeCharacter :
     virtual void Output(CYOutput &out) const;
 };
 
+struct CYTypeInt128 :
+    CYTypeSpecifier
+{
+    CYTypeSigning signing_;
+
+    CYTypeInt128(CYTypeSigning signing) :
+        signing_(signing)
+    {
+    }
+
+    virtual CYTarget *Replace(CYContext &context);
+    virtual void Output(CYOutput &out) const;
+};
+
 struct CYTypeIntegral :
     CYTypeSpecifier
 {
@@ -2126,12 +2140,19 @@ struct CYTypeVoid :
     virtual void Output(CYOutput &out) const;
 };
 
+enum CYTypeReferenceKind {
+    CYTypeReferenceStruct,
+    CYTypeReferenceEnum,
+};
+
 struct CYTypeReference :
     CYTypeSpecifier
 {
+    CYTypeReferenceKind kind_;
     CYIdentifier *name_;
 
-    CYTypeReference(CYIdentifier *name) :
+    CYTypeReference(CYTypeReferenceKind kind, CYIdentifier *name) :
+        kind_(kind),
         name_(name)
     {
     }
@@ -2296,7 +2317,7 @@ struct CYTypedParameter :
 {
     CYTypedIdentifier *typed_;
 
-    CYTypedParameter(CYTypedIdentifier *typed, CYTypedParameter *next) :
+    CYTypedParameter(CYTypedIdentifier *typed, CYTypedParameter *next = NULL) :
         CYNext<CYTypedParameter>(next),
         typed_(typed)
     {
@@ -2571,6 +2592,38 @@ struct CYStructDefinition :
     virtual void Output(CYOutput &out, CYFlags flags) const;
 };
 
+struct CYEnumConstant :
+    CYNext<CYEnumConstant>
+{
+    CYIdentifier *name_;
+    CYNumber *value_;
+
+    CYEnumConstant(CYIdentifier *name, CYNumber *value, CYEnumConstant *next = NULL) :
+        CYNext<CYEnumConstant>(next),
+        name_(name),
+        value_(value)
+    {
+    }
+};
+
+struct CYTypeEnum :
+    CYTypeSpecifier
+{
+    CYIdentifier *name_;
+    CYTypeSpecifier *specifier_;
+    CYEnumConstant *constants_;
+
+    CYTypeEnum(CYIdentifier *name, CYTypeSpecifier *specifier, CYEnumConstant *constants) :
+        name_(name),
+        specifier_(specifier),
+        constants_(constants)
+    {
+    }
+
+    virtual CYTarget *Replace(CYContext &context);
+    virtual void Output(CYOutput &out) const;
+};
+
 namespace cy {
 namespace Syntax {