Changeset 106469 in webkit


Ignore:
Timestamp:
Feb 1, 2012 9:22:02 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Web Inspector: CodeGeneratorInspector.py: move type builder code to dedicated InspectorTypeBuilder .h/.cpp
https://bugs.webkit.org/show_bug.cgi?id=77471

Patch by Peter Rybin <peter.rybin@gmail.com> on 2012-02-01
Reviewed by Yury Semikhatsky.

Code is moved physically to other file -- generator is changed accrodingly.

  • inspector/CodeGeneratorInspector.py:

(String):
(provides):
(typename):
(Array):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r106468 r106469  
     12012-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
    1162012-02-01  Yury Semikhatsky  <yurys@chromium.org>
    217
  • trunk/Source/WebCore/inspector/CodeGeneratorInspector.py

    r106360 r106469  
    16441644#if ENABLE(INSPECTOR)
    16451645
    1646 namespace TypeBuilder {
    1647 
    1648 // This class provides "Traits" type for the input type T. It is programmed using C++ template specialization
    1649 // 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 TypeBuilder
    1719 
    17201646class InspectorFrontend {
    17211647public:
     
    21802106$methods
    21812107
     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
     2124namespace WebCore {
     2125
     2126namespace 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.
     2130template<typename T>
     2131struct ArrayItemHelper {
     2132    typedef typename T::ItemTraits Traits;
     2133};
     2134
     2135template<typename T>
     2136class Array : public InspectorArray {
     2137private:
     2138    Array() { }
     2139
     2140public:
     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
     2161struct 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
     2173template<>
     2174struct ArrayItemHelper<String> {
     2175    struct Traits {
     2176        static void pushRaw(InspectorArray* array, const String& value)
     2177        {
     2178            array->pushString(value);
     2179        }
     2180    };
     2181};
     2182
     2183template<>
     2184struct 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
     2195String 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
     2217namespace WebCore {
     2218
    21822219namespace TypeBuilder {
    21832220
     
    21862223
    21872224String getEnumConstantValue(int code) {
    2188     // Test variable from generated sources, declared in InspectorTypeBuilder.h and defined in InspectorTypeBuilder.cpp
    2189     ASSERT(typeBuilderTestVariable);
    21902225    return enum_constant_values[code];
    21912226}
     
    22082243
    22092244#endif // """ + VALIDATOR_IFDEF_NAME + """
    2210 
    2211 } // namespace WebCore
    2212 
    2213 #endif // ENABLE(INSPECTOR)
    2214 """)
    2215 
    2216     typebuilder_h = string.Template(file_header_ +
    2217 """
    2218 #ifndef InspectorTypeBuilder_h
    2219 #define InspectorTypeBuilder_h
    2220 
    2221 namespace WebCore {
    2222 
    2223 // FIXME: move here TypeBuilder namespace from InspectorFrontend.h
    2224 
    2225 // FIXME: Used to test that we don't miss .cpp file. Remove once tested.
    2226 extern bool typeBuilderTestVariable;
    2227 
    2228 } // namespace WebCore
    2229 #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.cpp
    2244 
    2245 // FIXME: Used to test that we don't miss .cpp file. Remove once tested.
    2246 bool typeBuilderTestVariable = true;
    22472245
    22482246} // namespace WebCore
     
    28192817
    28202818frontend_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, "")))
    28252821
    28262822frontend_cpp_file.write(Templates.frontend_cpp.substitute(None,
    28272823    constructorInit=join(Generator.frontend_constructor_init_list, ""),
    2828     methods=join(Generator.frontend_method_list, "\n"),
     2824    methods=join(Generator.frontend_method_list, "\n")))
     2825
     2826typebuilder_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
     2830typebuilder_cpp_file.write(Templates.typebuilder_cpp.substitute(None,
    28292831    enumConstantValues=EnumConstants.get_enum_constant_code(),
    28302832    validatorCode=join(flatten_list(Generator.validator_impl_list), "")))
    28312833
    2832 typebuilder_h_file.write(Templates.typebuilder_h.substitute(None))
    2833 
    2834 typebuilder_cpp_file.write(Templates.typebuilder_cpp.substitute(None))
    2835 
    28362834backend_js_file.write(Templates.backend_js.substitute(None,
    28372835    domainInitializers=join(Generator.backend_js_domain_initializer_list, "")))
Note: See TracChangeset for help on using the changeset viewer.