Changeset 104829 in webkit
- Timestamp:
- Jan 12, 2012 8:40:10 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r104828 r104829 1 2012-01-12 Peter Rybin <peter.rybin@gmail.com> 2 3 Web Inspector: CodeGeneratorInspector.py: generate array types. 4 https://bugs.webkit.org/show_bug.cgi?id=75284 5 6 Reviewed by Yury Semikhatsky. 7 8 New classes are generated for ecah array type instance. 9 10 * inspector/CodeGeneratorInspector.py: 11 (ArrayBinding): 12 (ArrayBinding.get_code_generator): 13 (ArrayBinding.get_code_generator.CodeGenerator): 14 (ArrayBinding.get_code_generator.CodeGenerator.generate_type_builder): 15 (ArrayBinding.get_code_generator.CodeGenerator.generate_type_builder.AdHocTypeContext): 16 (ArrayBinding.get_code_generator.CodeGenerator.generate_type_builder.AdHocTypeContext.get_type_name_fix): 17 (ArrayBinding.get_code_generator.CodeGenerator.generate_type_builder.AdHocTypeContext.get_type_name_fix.NameFix): 18 (ArrayBinding.get_code_generator.CodeGenerator.generate_type_builder.AdHocTypeContext.get_type_name_fix.NameFix.output_comment): 19 (ArrayBinding.get_code_generator.CodeGenerator.generate_type_builder.AdHocTypeContext.call_generate_type_builder): 20 (ArrayBinding.get_code_generator.CodeGenerator.generate_forward_declaration): 21 (ArrayBinding.get_code_generator.CodeGenerator.register_use): 22 (ArrayBinding.get_in_c_type_text): 23 (ArrayBinding.get_setter_value_expression_pattern): 24 (ArrayBinding.reduce_to_raw_type): 25 (RawTypeBinding): 26 (RawTypeBinding.__init__): 27 (RawTypeBinding.get_code_generator): 28 (RawTypeBinding.get_in_c_type_text): 29 (RawTypeBinding.get_setter_value_expression_pattern): 30 (RawTypeBinding.reduce_to_raw_type): 31 (TypeData.__init__): 32 (TypeData.get_binding): 33 * inspector/InspectorValues.h: 34 1 35 2012-01-12 Pierre Rossi <pierre.rossi@gmail.com> 2 36 -
trunk/Source/WebCore/inspector/CodeGeneratorInspector.py
r104716 r104829 899 899 return PlainObjectBinding 900 900 elif json_typable["type"] == "array": 901 if "items" in json_typable: 902 903 class CodeGenerator: 904 @staticmethod 905 def generate_type_builder(writer, forward_listener): 906 907 class AdHocTypeContext: 908 @staticmethod 909 def get_type_name_fix(): 910 class NameFix: 911 class_name = fixed_type_name.class_name + "Item" 912 901 902 class ArrayBinding: 903 @staticmethod 904 def get_code_generator(): 905 906 class CodeGenerator: 907 @staticmethod 908 def generate_type_builder(writer, forward_listener): 909 helper.write_doc(writer) 910 class_name = fixed_type_name.class_name 911 fixed_type_name.output_comment(writer) 912 writer.newline("class ") 913 writer.append(class_name) 914 writer.append(" : public InspectorArray {\n") 915 writer.newline("private:\n") 916 writer.newline(" %s() { }\n" % fixed_type_name.class_name) 917 writer.append("\n") 918 writer.newline("public:\n") 919 ad_hoc_type_writer = writer.insert_writer(" ") 920 921 if "items" in json_typable: 922 923 class AdHocTypeContext: 913 924 @staticmethod 914 def output_comment(writer): 915 fixed_type_name.output_comment(writer) 916 writer.newline("// Named as an item of array.\n") 917 918 return NameFix 919 920 @staticmethod 921 def call_generate_type_builder(code_generator): 922 code_generator.generate_type_builder(writer, forward_listener) 923 924 resolve_param_type(json_typable["items"], context_domain_name, AdHocTypeContext) 925 926 @staticmethod 927 def register_use(forward_listener): 928 pass 929 930 default_binding_code_generator = CodeGenerator 931 932 else: 933 default_binding_code_generator = None 925 def get_type_name_fix(): 926 class NameFix: 927 class_name = "Item" 928 929 @staticmethod 930 def output_comment(writer): 931 pass 932 933 return NameFix 934 935 @staticmethod 936 def call_generate_type_builder(code_generator): 937 code_generator.generate_type_builder(ad_hoc_type_writer, forward_listener) 938 939 item_type_binding = resolve_param_type(json_typable["items"], context_domain_name, AdHocTypeContext) 940 else: 941 item_type_binding = RawTypeBinding(RawTypes.Any) 942 943 for item_type_opt in MethodGenerateModes.get_modes(item_type_binding): 944 writer.newline(" void addItem") 945 writer.append("(%s value)\n" % item_type_opt.get_c_param_type_text(item_type_binding)) 946 writer.newline(" {\n") 947 writer.newline(" this->push%s(%s);\n" 948 % (item_type_binding.reduce_to_raw_type().get_setter_name(), 949 item_type_opt.get_setter_value_expression(item_type_binding, "value"))) 950 writer.newline(" }\n") 951 952 writer.append("\n") 953 writer.newline(" static PassRefPtr<%s> create() {\n" % fixed_type_name.class_name) 954 writer.newline(" return adoptRef(new %s());\n" % fixed_type_name.class_name) 955 writer.newline(" }\n") 956 957 code_generator = item_type_binding.get_code_generator() 958 if code_generator: 959 code_generator.register_use(forward_listener) 960 961 writer.newline("};\n\n") 962 963 @staticmethod 964 def generate_forward_declaration(writer): 965 class_name = fixed_type_name.class_name 966 writer.newline("class ") 967 writer.append(class_name) 968 writer.append(";\n") 969 970 @staticmethod 971 def register_use(forward_listener): 972 helper.add_to_forward_listener(forward_listener) 973 974 return CodeGenerator 975 976 @classmethod 977 def get_in_c_type_text(cls, optional): 978 return "PassRefPtr<%s%s>" % (helper.full_name_prefix, fixed_type_name.class_name) 979 980 @staticmethod 981 def get_setter_value_expression_pattern(): 982 return None 983 984 @staticmethod 985 def reduce_to_raw_type(): 986 return RawTypes.Array 987 988 return ArrayBinding 934 989 935 990 raw_type = RawTypes.get(json_typable["type"]) 936 991 937 class RawTypesBinding:938 @staticmethod 939 def get_code_generator(): 940 return default_binding_code_generator 941 942 @classmethod943 def get_in_c_type_text(cls, optional): 944 return cls.reduce_to_raw_type().get_c_param_type(ParamType.EVENT, optional).get_text()945 946 @staticmethod 947 def get_setter_value_expression_pattern():948 return None949 950 @staticmethod951 def reduce_to_raw_type():952 return raw_type 953 954 return RawTypesBinding992 return RawTypeBinding(raw_type) 993 994 995 class RawTypeBinding: 996 def __init__(self, raw_type): 997 self.raw_type_ = raw_type 998 999 def get_code_generator(self): 1000 return None 1001 1002 def get_in_c_type_text(self, optional): 1003 return self.raw_type_.get_c_param_type(ParamType.EVENT, optional).get_text() 1004 1005 def get_setter_value_expression_pattern(self): 1006 return None 1007 1008 def reduce_to_raw_type(self): 1009 return self.raw_type_ 955 1010 956 1011 … … 967 1022 raw_type = RawTypes.get(json_type_name) 968 1023 self.raw_type_ = raw_type 969 self.binding_ = TypeBindings.create_named_type_declaration(json_type, json_domain["domain"], self) 1024 self.binding_being_resolved_ = False 1025 self.binding_ = None 970 1026 971 1027 def get_raw_type(self): … … 973 1029 974 1030 def get_binding(self): 1031 if not self.binding_: 1032 if self.binding_being_resolved_: 1033 raise Error("Type %s is already being resolved" % self.json_type_["type"]) 1034 # Resolve only lazily, because resolving one named type may require resolving some other named type. 1035 self.binding_being_resolved_ = True 1036 try: 1037 self.binding_ = TypeBindings.create_named_type_declaration(self.json_type_, self.json_domain_["domain"], self) 1038 finally: 1039 self.binding_being_resolved_ = False 1040 975 1041 return self.binding_ 976 1042 -
trunk/Source/WebCore/inspector/InspectorValues.h
r102440 r104829 245 245 const_iterator end() const { return m_data.end(); } 246 246 247 pr ivate:247 protected: 248 248 InspectorArray(); 249 250 private: 249 251 Vector<RefPtr<InspectorValue> > m_data; 250 252 };
Note: See TracChangeset
for help on using the changeset viewer.