Index: runtime/vm/json.h |
=================================================================== |
--- runtime/vm/json.h (revision 7329) |
+++ runtime/vm/json.h (working copy) |
@@ -1,128 +0,0 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-#ifndef VM_JSON_H_ |
-#define VM_JSON_H_ |
- |
-#include "vm/allocation.h" |
-#include "vm/globals.h" |
- |
-namespace dart { |
- |
- |
-// A low level interface to tokenize JSON strings. |
-class JSONScanner : ValueObject { |
- public: |
- enum Token { |
- TokenIllegal = 0, |
- TokenLBrace, |
- TokenRBrace, |
- TokenLBrack, |
- TokenRBrack, |
- TokenColon, |
- TokenComma, |
- TokenString, |
- TokenInteger, |
- TokenTrue, |
- TokenFalse, |
- TokenNull, |
- TokenEOM |
- }; |
- explicit JSONScanner(const char* json_text); |
- |
- void SetText(const char* json_text); |
- void Scan(); |
- Token CurrentToken() const { return token_; } |
- bool EOM() const { return token_ == TokenEOM; } |
- const char* TokenChars() const { return token_start_; } |
- int TokenLen() const { return token_length_; } |
- bool IsStringLiteral(const char* literal) const; |
- void Skip(Token matching_token); |
- |
- private: |
- bool IsLetter(char ch) const; |
- bool IsDigit(char ch) const; |
- bool IsLiteral(const char* literal); |
- void ScanNumber(); |
- void ScanString(); |
- void Recognize(Token t); |
- |
- const char* current_pos_; |
- const char* token_start_; |
- int token_length_; |
- Token token_; |
-}; |
- |
- |
-// JSONReader is a higher level interface that allows for lookup of |
-// name-value pairs in JSON objects. |
-class JSONReader : ValueObject { |
- public: |
- enum JSONType { |
- kString, |
- kInteger, |
- kObject, |
- kArray, |
- kLiteral, |
- kNone |
- }; |
- |
- explicit JSONReader(const char* json_object); |
- void Set(const char* json_object); |
- |
- // Returns true if a pair with the given name was found. |
- bool Seek(const char* name); |
- |
- // Returns true if a syntax error was found. |
- bool Error() const { return error_; } |
- |
- JSONType Type() const; |
- const char* ValueChars() const { |
- return (Type() != kNone) ? scanner_.TokenChars() : NULL; |
- } |
- int ValueLen() const { |
- return (Type() != kNone) ? scanner_.TokenLen() : 0; |
- } |
- bool IsStringLiteral(const char* literal) const { |
- return scanner_.IsStringLiteral(literal); |
- } |
- bool IsTrue() const { |
- return scanner_.CurrentToken() == JSONScanner::TokenTrue; |
- } |
- bool IsFalse() const { |
- return scanner_.CurrentToken() == JSONScanner::TokenFalse; |
- } |
- bool IsNull() const { |
- return scanner_.CurrentToken() == JSONScanner::TokenNull; |
- } |
- |
- private: |
- JSONScanner scanner_; |
- const char* json_object_; |
- bool error_; |
-}; |
- |
- |
-// TextBuffer maintains a dynamic character buffer with a printf-style way to |
-// append text. |
-class TextBuffer : ValueObject { |
- public: |
- explicit TextBuffer(intptr_t buf_size); |
- ~TextBuffer(); |
- |
- intptr_t Printf(const char* format, ...); |
- void Clear(); |
- |
- char* buf() { return buf_; } |
- |
- private: |
- void GrowBuffer(intptr_t len); |
- char* buf_; |
- intptr_t buf_size_; |
- intptr_t msg_len_; |
-}; |
- |
-} // namespace dart |
- |
-#endif // VM_JSON_H_ |