JSDOC/TokenReader.js
[gnome.introspection-doc-generator] / JSDOC / TextStream.vala
index 599ed8b..f5bb725 100644 (file)
@@ -20,46 +20,58 @@ namespace JSDOC {
         
         string text;
         int cursor;
+        int length;
         
         public TextStream (string text = "")
         {
             
             
             this.text = text;
+            this.length = text.length; // text.char_count();
             this.cursor = 0;
         }
         
-        public char look(int n = 0, out bool eof)
+        public char look(int n = 0)
         {
-            eof = false;
-                
-            if (this.cursor+n < 0 || this.cursor+n >= this.text.length) {
-                eof = true;
+                 
+            if (this.cursor+n < 0 || this.cursor+n >= this.length) {
                 return '\0';
             }
-            return  this.text[this.cursor+n];
-        },
-    
-        public char next(int n = 1,  out bool eof)
+            return this.text[this.cursor+n]; // this.text.get_char(this.cursor+n);
+        }
+        
+        public bool lookEOF(int n = 0)
+        {
+            if (this.cursor+n < 0 || this.cursor+n >= this.length) {
+                return true;
+            }
+            return  false;
+        }
+        
+        /**
+         * @param n - number of characters to return..
+         */
+        public string next(int n = 1)
         {
-            eof = false;
-            if (n < 1) {
-                return null;
+            
+            if (n < 1) { //?? eof???
+                return "\0";
             }
                 
-            var pulled = "";
-            for (var i = 0; i < n; i++) {
-                if (this.cursor+i < this.text.length) {
-                    pulled += this.text.charAt(this.cursor+i);
+            string pulled = "";
+            var i = 0;
+            while (i < n) {
+                if (this.cursor+i < this.length) {
+                    var add = this.text[this.cursor+i]; //this.text.get_char(this.cursor+i).to_string();
+                    pulled += add.to_string();
+                    i += 1;// add.length;
                 } else {
-                    eof =true;
-                    return '\0';
-                    
+                    return "";
                     
                 }
             }
             
-            this.cursor += n;
+            this.cursor += pulled.length;
             return pulled;
            
         }