Changeset 106469 in webkit
- Timestamp:
- Feb 1, 2012 9:22:02 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r106468 r106469 1 2012-02-01 Peter Rybin <peter.rybin@gmail.com> 2 3 Web Inspector: CodeGeneratorInspector.py: move type builder code to dedicated InspectorTypeBuilder .h/.cpp 4 https://bugs.webkit.org/show_bug.cgi?id=77471 5 6 Reviewed by Yury Semikhatsky. 7 8 Code is moved physically to other file -- generator is changed accrodingly. 9 10 * inspector/CodeGeneratorInspector.py: 11 (String): 12 (provides): 13 (typename): 14 (Array): 15 1 16 2012-02-01 Yury Semikhatsky <yurys@chromium.org> 2 17 -
trunk/Source/WebCore/inspector/CodeGeneratorInspector.py
r106360 r106469 1644 1644 #if ENABLE(INSPECTOR) 1645 1645 1646 namespace TypeBuilder {1647 1648 // This class provides "Traits" type for the input type T. It is programmed using C++ template specialization1649 // technique. By default it simply takes "ItemTraits" type from T, but it doesn't work with the base types.1650 template<typename T>1651 struct ArrayItemHelper {1652 typedef typename T::ItemTraits Traits;1653 };1654 1655 template<typename T>1656 class Array : public InspectorArray {1657 private:1658 Array() { }1659 1660 public:1661 void addItem(PassRefPtr<T> value)1662 {1663 ArrayItemHelper<T>::Traits::pushRefPtr(this, value);1664 }1665 1666 void addItem(T value)1667 {1668 ArrayItemHelper<T>::Traits::pushRaw(this, value);1669 }1670 1671 static PassRefPtr<Array<T> > create()1672 {1673 return adoptRef(new Array<T>());1674 }1675 1676 #if """ + VALIDATOR_IFDEF_NAME + """1677 static void assertCorrectValue(InspectorValue* value);1678 #endif // """ + VALIDATOR_IFDEF_NAME + """1679 };1680 1681 struct StructItemTraits {1682 static void pushRefPtr(InspectorArray* array, PassRefPtr<InspectorObject> value)1683 {1684 array->pushObject(value);1685 }1686 1687 template<typename T>1688 static void assertCorrectValue(InspectorValue* value) {1689 T::assertCorrectValue(value);1690 }1691 };1692 1693 template<>1694 struct ArrayItemHelper<String> {1695 struct Traits {1696 static void pushRaw(InspectorArray* array, const String& value)1697 {1698 array->pushString(value);1699 }1700 };1701 };1702 1703 template<>1704 struct ArrayItemHelper<InspectorObject> {1705 struct Traits {1706 static void pushRefPtr(InspectorArray* array, PassRefPtr<InspectorObject> value)1707 {1708 array->pushObject(value);1709 }1710 };1711 };1712 1713 ${forwards}1714 1715 String getEnumConstantValue(int code);1716 1717 ${typeBuilders}1718 } // namespace TypeBuilder1719 1720 1646 class InspectorFrontend { 1721 1647 public: … … 2180 2106 $methods 2181 2107 2108 } // namespace WebCore 2109 2110 #endif // ENABLE(INSPECTOR) 2111 """) 2112 2113 typebuilder_h = string.Template(file_header_ + 2114 """ 2115 #ifndef InspectorTypeBuilder_h 2116 #define InspectorTypeBuilder_h 2117 2118 #if ENABLE(INSPECTOR) 2119 2120 #include "InspectorValues.h" 2121 #include <PlatformString.h> 2122 #include <wtf/PassRefPtr.h> 2123 2124 namespace WebCore { 2125 2126 namespace TypeBuilder { 2127 2128 // This class provides "Traits" type for the input type T. It is programmed using C++ template specialization 2129 // technique. By default it simply takes "ItemTraits" type from T, but it doesn't work with the base types. 2130 template<typename T> 2131 struct ArrayItemHelper { 2132 typedef typename T::ItemTraits Traits; 2133 }; 2134 2135 template<typename T> 2136 class Array : public InspectorArray { 2137 private: 2138 Array() { } 2139 2140 public: 2141 void addItem(PassRefPtr<T> value) 2142 { 2143 ArrayItemHelper<T>::Traits::pushRefPtr(this, value); 2144 } 2145 2146 void addItem(T value) 2147 { 2148 ArrayItemHelper<T>::Traits::pushRaw(this, value); 2149 } 2150 2151 static PassRefPtr<Array<T> > create() 2152 { 2153 return adoptRef(new Array<T>()); 2154 } 2155 2156 #if """ + VALIDATOR_IFDEF_NAME + """ 2157 static void assertCorrectValue(InspectorValue* value); 2158 #endif // """ + VALIDATOR_IFDEF_NAME + """ 2159 }; 2160 2161 struct StructItemTraits { 2162 static void pushRefPtr(InspectorArray* array, PassRefPtr<InspectorObject> value) 2163 { 2164 array->pushObject(value); 2165 } 2166 2167 template<typename T> 2168 static void assertCorrectValue(InspectorValue* value) { 2169 T::assertCorrectValue(value); 2170 } 2171 }; 2172 2173 template<> 2174 struct ArrayItemHelper<String> { 2175 struct Traits { 2176 static void pushRaw(InspectorArray* array, const String& value) 2177 { 2178 array->pushString(value); 2179 } 2180 }; 2181 }; 2182 2183 template<> 2184 struct ArrayItemHelper<InspectorObject> { 2185 struct Traits { 2186 static void pushRefPtr(InspectorArray* array, PassRefPtr<InspectorObject> value) 2187 { 2188 array->pushObject(value); 2189 } 2190 }; 2191 }; 2192 2193 ${forwards} 2194 2195 String getEnumConstantValue(int code); 2196 2197 ${typeBuilders} 2198 } // namespace TypeBuilder 2199 2200 2201 } // namespace WebCore 2202 2203 #endif // ENABLE(INSPECTOR) 2204 2205 #endif // !defined(InspectorTypeBuilder_h) 2206 2207 """) 2208 2209 typebuilder_cpp = string.Template(file_header_ + 2210 """ 2211 2212 #include "config.h" 2213 #if ENABLE(INSPECTOR) 2214 2215 #include "InspectorTypeBuilder.h" 2216 2217 namespace WebCore { 2218 2182 2219 namespace TypeBuilder { 2183 2220 … … 2186 2223 2187 2224 String getEnumConstantValue(int code) { 2188 // Test variable from generated sources, declared in InspectorTypeBuilder.h and defined in InspectorTypeBuilder.cpp2189 ASSERT(typeBuilderTestVariable);2190 2225 return enum_constant_values[code]; 2191 2226 } … … 2208 2243 2209 2244 #endif // """ + VALIDATOR_IFDEF_NAME + """ 2210 2211 } // namespace WebCore2212 2213 #endif // ENABLE(INSPECTOR)2214 """)2215 2216 typebuilder_h = string.Template(file_header_ +2217 """2218 #ifndef InspectorTypeBuilder_h2219 #define InspectorTypeBuilder_h2220 2221 namespace WebCore {2222 2223 // FIXME: move here TypeBuilder namespace from InspectorFrontend.h2224 2225 // FIXME: Used to test that we don't miss .cpp file. Remove once tested.2226 extern bool typeBuilderTestVariable;2227 2228 } // namespace WebCore2229 #endif // !defined(InspectorTypeBuilder_h)2230 2231 """)2232 2233 typebuilder_cpp = string.Template(file_header_ +2234 """2235 2236 #include "config.h"2237 #if ENABLE(INSPECTOR)2238 2239 #include "InspectorTypeBuilder.h"2240 2241 namespace WebCore {2242 2243 // FIXME: move here TypeBuilder namespace from InspectorFrontend.cpp2244 2245 // FIXME: Used to test that we don't miss .cpp file. Remove once tested.2246 bool typeBuilderTestVariable = true;2247 2245 2248 2246 } // namespace WebCore … … 2819 2817 2820 2818 frontend_h_file.write(Templates.frontend_h.substitute(None, 2821 fieldDeclarations=join(Generator.frontend_class_field_lines, ""), 2822 domainClassList=join(Generator.frontend_domain_class_lines, ""), 2823 typeBuilders=join(flatten_list(Generator.type_builder_fragments), ""), 2824 forwards=join(Generator.type_builder_forwards, ""))) 2819 fieldDeclarations=join(Generator.frontend_class_field_lines, ""), 2820 domainClassList=join(Generator.frontend_domain_class_lines, ""))) 2825 2821 2826 2822 frontend_cpp_file.write(Templates.frontend_cpp.substitute(None, 2827 2823 constructorInit=join(Generator.frontend_constructor_init_list, ""), 2828 methods=join(Generator.frontend_method_list, "\n"), 2824 methods=join(Generator.frontend_method_list, "\n"))) 2825 2826 typebuilder_h_file.write(Templates.typebuilder_h.substitute(None, 2827 typeBuilders=join(flatten_list(Generator.type_builder_fragments), ""), 2828 forwards=join(Generator.type_builder_forwards, ""))) 2829 2830 typebuilder_cpp_file.write(Templates.typebuilder_cpp.substitute(None, 2829 2831 enumConstantValues=EnumConstants.get_enum_constant_code(), 2830 2832 validatorCode=join(flatten_list(Generator.validator_impl_list), ""))) 2831 2833 2832 typebuilder_h_file.write(Templates.typebuilder_h.substitute(None))2833 2834 typebuilder_cpp_file.write(Templates.typebuilder_cpp.substitute(None))2835 2836 2834 backend_js_file.write(Templates.backend_js.substitute(None, 2837 2835 domainInitializers=join(Generator.backend_js_domain_initializer_list, "")))
Note: See TracChangeset
for help on using the changeset viewer.