]> git.saurik.com Git - cycript.git/blobdiff - Parser.hpp
Remove and compress some dead code in CYDisplayOutput.
[cycript.git] / Parser.hpp
index afb2c6635e261ac5642b4f7fd8d5667c5bc5eb27..bff219b7e6bce06372ca4760f20f06fb955eb22b 100644 (file)
@@ -469,17 +469,41 @@ enum CYState {
     CYNewLine
 };
 
     CYNewLine
 };
 
+class CYStream :
+    public std::istream
+{
+  private:
+    class CYBuffer :
+        public std::streambuf
+    {
+      public:
+        CYBuffer(const char *start, const char *end) {
+            setg(const_cast<char *>(start), const_cast<char *>(start), const_cast<char *>(end));
+        }
+    } buffer_;
+
+  public:
+    CYStream(const char *start, const char *end) :
+        std::istream(&buffer_),
+        buffer_(start, end)
+    {
+    }
+};
+
 class CYDriver {
   public:
     void *scanner_;
 
     CYState state_;
 class CYDriver {
   public:
     void *scanner_;
 
     CYState state_;
-    bool nobrace_;
     std::stack<bool> in_;
 
     std::stack<bool> in_;
 
-    const char *data_;
-    size_t size_;
-    FILE *file_;
+    struct {
+        bool AtImplementation;
+        bool Function;
+        bool OpenBrace;
+    } no_;
+
+    std::istream &data_;
 
     bool strict_;
 
 
     bool strict_;
 
@@ -534,7 +558,7 @@ class CYDriver {
     void ScannerDestroy();
 
   public:
     void ScannerDestroy();
 
   public:
-    CYDriver(const std::string &filename = "");
+    CYDriver(std::istream &data, const std::string &filename = "");
     ~CYDriver();
 
     Condition GetCondition();
     ~CYDriver();
 
     Condition GetCondition();