diff options
author | Ben Murdoch <benm@google.com> | 2012-04-12 10:51:47 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2012-04-16 16:41:38 +0100 |
commit | 3ef787dbeca8a5fb1086949cda830dccee07bfbd (patch) | |
tree | 0a22edd97aa148abffdd405c585b22213fccbc82 /src/prettyprinter.h | |
parent | 85b71799222b55eb5dd74ea26efe0c64ab655c8c (diff) | |
download | android_external_v8-3ef787dbeca8a5fb1086949cda830dccee07bfbd.tar.gz android_external_v8-3ef787dbeca8a5fb1086949cda830dccee07bfbd.tar.bz2 android_external_v8-3ef787dbeca8a5fb1086949cda830dccee07bfbd.zip |
Merge V8 at 3.9.24.13
Bug: 5688872
Change-Id: Id0aa8d23375030494d3189c31774059c0f5398fc
Diffstat (limited to 'src/prettyprinter.h')
-rw-r--r-- | src/prettyprinter.h | 103 |
1 files changed, 1 insertions, 102 deletions
diff --git a/src/prettyprinter.h b/src/prettyprinter.h index a26c48e4..9ac72576 100644 --- a/src/prettyprinter.h +++ b/src/prettyprinter.h @@ -1,4 +1,4 @@ -// Copyright 2011 the V8 project authors. All rights reserved. +// Copyright 2012 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -112,107 +112,6 @@ class AstPrinter: public PrettyPrinter { int indent_; }; - -// Forward declaration of helper classes. -class TagScope; -class AttributesScope; - -// Build a C string containing a JSON representation of a function's -// AST. The representation is based on JsonML (www.jsonml.org). -class JsonAstBuilder: public PrettyPrinter { - public: - JsonAstBuilder() - : indent_(0), top_tag_scope_(NULL), attributes_scope_(NULL) { - } - virtual ~JsonAstBuilder() {} - - // Controls the indentation of subsequent lines of a tag body after - // the first line. - static const int kTagIndentSize = 2; - - // Controls the indentation of subsequent lines of an attributes - // blocks's body after the first line. - static const int kAttributesIndentSize = 1; - - // Construct a JSON representation of a function literal. - const char* BuildProgram(FunctionLiteral* program); - - // Print text indented by the current indentation level. - void PrintIndented(const char* text) { Print("%*s%s", indent_, "", text); } - - // Change the indentation level. - void increase_indent(int amount) { indent_ += amount; } - void decrease_indent(int amount) { indent_ -= amount; } - - // The builder maintains a stack of opened AST node constructors. - // Each node constructor corresponds to a JsonML tag. - TagScope* tag() { return top_tag_scope_; } - void set_tag(TagScope* scope) { top_tag_scope_ = scope; } - - // The builder maintains a pointer to the currently opened attributes - // of current AST node or NULL if the attributes are not opened. - AttributesScope* attributes() { return attributes_scope_; } - void set_attributes(AttributesScope* scope) { attributes_scope_ = scope; } - - // Add an attribute to the currently opened attributes. - void AddAttribute(const char* name, Handle<String> value); - void AddAttribute(const char* name, const char* value); - void AddAttribute(const char* name, int value); - void AddAttribute(const char* name, bool value); - - // AST node visit functions. -#define DECLARE_VISIT(type) virtual void Visit##type(type* node); - AST_NODE_LIST(DECLARE_VISIT) -#undef DECLARE_VISIT - - private: - int indent_; - TagScope* top_tag_scope_; - AttributesScope* attributes_scope_; - - // Utility function used by AddAttribute implementations. - void AddAttributePrefix(const char* name); -}; - - -// The JSON AST builder keeps a stack of open element tags (AST node -// constructors from the current iteration point to the root of the -// AST). TagScope is a helper class to manage the opening and closing -// of tags, the indentation of their bodies, and comma separating their -// contents. -class TagScope BASE_EMBEDDED { - public: - TagScope(JsonAstBuilder* builder, const char* name); - ~TagScope(); - - void use() { has_body_ = true; } - - private: - JsonAstBuilder* builder_; - TagScope* next_; - bool has_body_; -}; - - -// AttributesScope is a helper class to manage the opening and closing -// of attribute blocks, the indentation of their bodies, and comma -// separating their contents. JsonAstBuilder::AddAttribute adds an -// attribute to the currently open AttributesScope. They cannot be -// nested so the builder keeps an optional single scope rather than a -// stack. -class AttributesScope BASE_EMBEDDED { - public: - explicit AttributesScope(JsonAstBuilder* builder); - ~AttributesScope(); - - bool is_used() { return attribute_count_ > 0; } - void use() { ++attribute_count_; } - - private: - JsonAstBuilder* builder_; - int attribute_count_; -}; - #endif // DEBUG } } // namespace v8::internal |