| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2011 Google Inc. All rights reserved. | 2 # Copyright (c) 2011 Google Inc. All rights reserved. |
| 3 # Copyright (c) 2012 Intel Corporation. All rights reserved. | 3 # Copyright (c) 2012 Intel Corporation. All rights reserved. |
| 4 # | 4 # |
| 5 # Redistribution and use in source and binary forms, with or without | 5 # Redistribution and use in source and binary forms, with or without |
| 6 # modification, are permitted provided that the following conditions are | 6 # modification, are permitted provided that the following conditions are |
| 7 # met: | 7 # met: |
| 8 # | 8 # |
| 9 # * Redistributions of source code must retain the above copyright | 9 # * Redistributions of source code must retain the above copyright |
| 10 # notice, this list of conditions and the following disclaimer. | 10 # notice, this list of conditions and the following disclaimer. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 import CodeGeneratorInspectorStrings | 41 import CodeGeneratorInspectorStrings |
| 42 | 42 |
| 43 # Manually-filled map of type name replacements. | 43 # Manually-filled map of type name replacements. |
| 44 TYPE_NAME_FIX_MAP = { | 44 TYPE_NAME_FIX_MAP = { |
| 45 "RGBA": "Rgba", # RGBA is reported to be conflicting with a define name in
Windows CE. | 45 "RGBA": "Rgba", # RGBA is reported to be conflicting with a define name in
Windows CE. |
| 46 "": "Empty", | 46 "": "Empty", |
| 47 } | 47 } |
| 48 | 48 |
| 49 | 49 |
| 50 TYPES_WITH_RUNTIME_CAST_SET = frozenset(["Runtime.RemoteObject", "Runtime.Proper
tyDescriptor", "Runtime.InternalPropertyDescriptor", | 50 TYPES_WITH_RUNTIME_CAST_SET = frozenset(["Runtime.RemoteObject", "Runtime.Proper
tyDescriptor", "Runtime.InternalPropertyDescriptor", |
| 51 "Debugger.FunctionDetails", "Debugger.C
allFrame", "Debugger.Location", | 51 "Debugger.FunctionDetails", "Debugger.C
ollectionEntry", "Debugger.CallFrame", "Debugger.Location", |
| 52 "Canvas.TraceLog", "Canvas.ResourceStat
e"]) | 52 "Canvas.TraceLog", "Canvas.ResourceStat
e"]) |
| 53 | 53 |
| 54 TYPES_WITH_OPEN_FIELD_LIST_SET = frozenset([ | 54 TYPES_WITH_OPEN_FIELD_LIST_SET = frozenset([ |
| 55 # InspectorStyleSheet not only creat
es this property but wants to read it and modify it. | 55 # InspectorStyleSheet not only creat
es this property but wants to read it and modify it. |
| 56 "CSS.CSSProperty", | 56 "CSS.CSSProperty", |
| 57 # InspectorResourceAgent needs to up
date mime-type. | 57 # InspectorResourceAgent needs to up
date mime-type. |
| 58 "Network.Response"]) | 58 "Network.Response"]) |
| 59 | 59 |
| 60 EXACTLY_INT_SUPPORTED = False | |
| 61 | |
| 62 cmdline_parser = optparse.OptionParser() | 60 cmdline_parser = optparse.OptionParser() |
| 63 cmdline_parser.add_option("--output_dir") | 61 cmdline_parser.add_option("--output_dir") |
| 64 | 62 |
| 65 try: | 63 try: |
| 66 arg_options, arg_values = cmdline_parser.parse_args() | 64 arg_options, arg_values = cmdline_parser.parse_args() |
| 67 if (len(arg_values) != 1): | 65 if (len(arg_values) != 1): |
| 68 raise Exception("Exactly one plain argument expected (found %s)" % len(a
rg_values)) | 66 raise Exception("Exactly one plain argument expected (found %s)" % len(a
rg_values)) |
| 69 input_json_filename = arg_values[0] | 67 input_json_filename = arg_values[0] |
| 70 output_dirname = arg_options.output_dir | 68 output_dirname = arg_options.output_dir |
| 71 if not output_dirname: | 69 if not output_dirname: |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 if pos == 1: | 108 if pos == 1: |
| 111 return str[0].lower() + str[1:] | 109 return str[0].lower() + str[1:] |
| 112 if pos < len(str): | 110 if pos < len(str): |
| 113 pos -= 1 | 111 pos -= 1 |
| 114 possible_abbreviation = str[0:pos] | 112 possible_abbreviation = str[0:pos] |
| 115 if possible_abbreviation not in Capitalizer.ABBREVIATION: | 113 if possible_abbreviation not in Capitalizer.ABBREVIATION: |
| 116 raise Exception("Unknown abbreviation %s" % possible_abbreviation) | 114 raise Exception("Unknown abbreviation %s" % possible_abbreviation) |
| 117 str = possible_abbreviation.lower() + str[pos:] | 115 str = possible_abbreviation.lower() + str[pos:] |
| 118 return str | 116 return str |
| 119 | 117 |
| 120 @staticmethod | |
| 121 def camel_case_to_capitalized_with_underscores(str): | |
| 122 if len(str) == 0: | |
| 123 return str | |
| 124 output = Capitalizer.split_camel_case_(str) | |
| 125 return "_".join(output).upper() | |
| 126 | |
| 127 @staticmethod | |
| 128 def split_camel_case_(str): | |
| 129 output = [] | |
| 130 pos_being = 0 | |
| 131 pos = 1 | |
| 132 has_oneletter = False | |
| 133 while pos < len(str): | |
| 134 if str[pos].isupper(): | |
| 135 output.append(str[pos_being:pos].upper()) | |
| 136 if pos - pos_being == 1: | |
| 137 has_oneletter = True | |
| 138 pos_being = pos | |
| 139 pos += 1 | |
| 140 output.append(str[pos_being:]) | |
| 141 if has_oneletter: | |
| 142 array_pos = 0 | |
| 143 while array_pos < len(output) - 1: | |
| 144 if len(output[array_pos]) == 1: | |
| 145 array_pos_end = array_pos + 1 | |
| 146 while array_pos_end < len(output) and len(output[array_pos_e
nd]) == 1: | |
| 147 array_pos_end += 1 | |
| 148 if array_pos_end - array_pos > 1: | |
| 149 possible_abbreviation = "".join(output[array_pos:array_p
os_end]) | |
| 150 if possible_abbreviation.upper() in Capitalizer.ABBREVIA
TION: | |
| 151 output[array_pos:array_pos_end] = [possible_abbrevia
tion] | |
| 152 else: | |
| 153 array_pos = array_pos_end - 1 | |
| 154 array_pos += 1 | |
| 155 return output | |
| 156 | |
| 157 ABBREVIATION = frozenset(["XHR", "DOM", "CSS"]) | 118 ABBREVIATION = frozenset(["XHR", "DOM", "CSS"]) |
| 158 | 119 |
| 159 VALIDATOR_IFDEF_NAME = "ENABLE(ASSERT)" | 120 VALIDATOR_IFDEF_NAME = "ENABLE(ASSERT)" |
| 160 | 121 |
| 161 | 122 |
| 162 class DomainNameFixes: | 123 class DomainNameFixes: |
| 163 @classmethod | 124 @staticmethod |
| 164 def get_fixed_data(cls, domain_name): | 125 def get_fixed_data(domain_name): |
| 165 field_name_res = Capitalizer.upper_camel_case_to_lower(domain_name) + "A
gent" | 126 return Capitalizer.upper_camel_case_to_lower(domain_name) + "Agent" |
| 166 | |
| 167 class Res(object): | |
| 168 agent_field_name = field_name_res | |
| 169 | |
| 170 return Res | |
| 171 | |
| 172 | 127 |
| 173 class RawTypes(object): | 128 class RawTypes(object): |
| 174 @staticmethod | 129 @staticmethod |
| 175 def get(json_type): | 130 def get(json_type): |
| 176 if json_type == "boolean": | 131 if json_type == "boolean": |
| 177 return RawTypes.Bool | 132 return RawTypes.Bool |
| 178 elif json_type == "string": | 133 elif json_type == "string": |
| 179 return RawTypes.String | 134 return RawTypes.String |
| 180 elif json_type == "array": | 135 elif json_type == "array": |
| 181 return RawTypes.Array | 136 return RawTypes.Array |
| 182 elif json_type == "object": | 137 elif json_type == "object": |
| 183 return RawTypes.Object | 138 return RawTypes.Object |
| 184 elif json_type == "integer": | 139 elif json_type == "integer": |
| 185 return RawTypes.Int | 140 return RawTypes.Int |
| 186 elif json_type == "number": | 141 elif json_type == "number": |
| 187 return RawTypes.Number | 142 return RawTypes.Number |
| 188 elif json_type == "any": | 143 elif json_type == "any": |
| 189 return RawTypes.Any | 144 return RawTypes.Any |
| 190 else: | 145 else: |
| 191 raise Exception("Unknown type: %s" % json_type) | 146 raise Exception("Unknown type: %s" % json_type) |
| 192 | 147 |
| 193 # For output parameter all values are passed by pointer except RefPtr-based
types. | |
| 194 class OutputPassModel: | |
| 195 class ByPointer: | |
| 196 @staticmethod | |
| 197 def get_argument_prefix(): | |
| 198 return "&" | |
| 199 | |
| 200 @staticmethod | |
| 201 def get_parameter_type_suffix(): | |
| 202 return "*" | |
| 203 | |
| 204 class ByReference: | |
| 205 @staticmethod | |
| 206 def get_argument_prefix(): | |
| 207 return "" | |
| 208 | |
| 209 @staticmethod | |
| 210 def get_parameter_type_suffix(): | |
| 211 return "&" | |
| 212 | |
| 213 class BaseType(object): | 148 class BaseType(object): |
| 214 need_internal_runtime_cast_ = False | |
| 215 | |
| 216 @classmethod | |
| 217 def request_raw_internal_runtime_cast(cls): | |
| 218 if not cls.need_internal_runtime_cast_: | |
| 219 cls.need_internal_runtime_cast_ = True | |
| 220 | |
| 221 @classmethod | 149 @classmethod |
| 222 def get_raw_validator_call_text(cls): | 150 def get_raw_validator_call_text(cls): |
| 223 return "RuntimeCastHelper::assertType<JSONValue::Type%s>" % cls.get_
validate_method_params().template_type | 151 return "RuntimeCastHelper::assertType<JSONValue::Type%s>" % cls.get_
getter_name() |
| 224 | 152 |
| 225 @staticmethod | 153 @staticmethod |
| 226 def get_validate_method_params(): | 154 def get_getter_name(): |
| 227 raise Exception("Abstract method") | 155 raise Exception("Unsupported") |
| 228 | 156 |
| 229 class String(BaseType): | 157 class String(BaseType): |
| 230 @staticmethod | 158 @staticmethod |
| 231 def get_getter_name(): | 159 def get_getter_name(): |
| 232 return "String" | 160 return "String" |
| 233 | 161 |
| 234 get_setter_name = get_getter_name | 162 get_setter_name = get_getter_name |
| 235 | 163 |
| 236 @staticmethod | 164 @staticmethod |
| 237 def get_constructor_pattern(): | 165 def get_constructor_pattern(): |
| 238 return "InspectorString::create(%s)" | 166 return "InspectorString::create(%s)" |
| 239 | 167 |
| 240 @staticmethod | 168 @staticmethod |
| 241 def get_c_initializer(): | |
| 242 return "\"\"" | |
| 243 | |
| 244 @staticmethod | |
| 245 def get_validate_method_params(): | |
| 246 class ValidateMethodParams: | |
| 247 template_type = "String" | |
| 248 return ValidateMethodParams | |
| 249 | |
| 250 @staticmethod | |
| 251 def get_output_pass_model(): | |
| 252 return RawTypes.OutputPassModel.ByPointer | |
| 253 | |
| 254 @staticmethod | |
| 255 def is_heavy_value(): | 169 def is_heavy_value(): |
| 256 return True | 170 return True |
| 257 | 171 |
| 258 @staticmethod | 172 @staticmethod |
| 259 def get_array_item_raw_c_type_text(): | 173 def get_array_item_raw_c_type_text(): |
| 260 return "String" | 174 return "String" |
| 261 | 175 |
| 262 @staticmethod | 176 @staticmethod |
| 263 def get_raw_type_model(): | 177 def get_raw_type_model(): |
| 264 return TypeModel.String | 178 return TypeModel.String |
| 265 | 179 |
| 266 class Int(BaseType): | 180 class Int(BaseType): |
| 267 @staticmethod | 181 @staticmethod |
| 268 def get_getter_name(): | 182 def get_getter_name(): |
| 269 return "Int" | 183 return "Int" |
| 270 | 184 |
| 271 @staticmethod | 185 @staticmethod |
| 272 def get_setter_name(): | 186 def get_setter_name(): |
| 273 return "Number" | 187 return "Number" |
| 274 | 188 |
| 275 @staticmethod | 189 @staticmethod |
| 276 def get_constructor_pattern(): | 190 def get_constructor_pattern(): |
| 277 return "InspectorBasicValue::create(%s)" | 191 return "InspectorBasicValue::create(%s)" |
| 278 | 192 |
| 279 @staticmethod | |
| 280 def get_c_initializer(): | |
| 281 return "0" | |
| 282 | |
| 283 @classmethod | 193 @classmethod |
| 284 def get_raw_validator_call_text(cls): | 194 def get_raw_validator_call_text(cls): |
| 285 return "RuntimeCastHelper::assertInt" | 195 return "RuntimeCastHelper::assertInt" |
| 286 | 196 |
| 287 @staticmethod | 197 @staticmethod |
| 288 def get_output_pass_model(): | |
| 289 return RawTypes.OutputPassModel.ByPointer | |
| 290 | |
| 291 @staticmethod | |
| 292 def is_heavy_value(): | 198 def is_heavy_value(): |
| 293 return False | 199 return False |
| 294 | 200 |
| 295 @staticmethod | 201 @staticmethod |
| 296 def get_array_item_raw_c_type_text(): | 202 def get_array_item_raw_c_type_text(): |
| 297 return "int" | 203 return "int" |
| 298 | 204 |
| 299 @staticmethod | 205 @staticmethod |
| 300 def get_raw_type_model(): | 206 def get_raw_type_model(): |
| 301 return TypeModel.Int | 207 return TypeModel.Int |
| 302 | 208 |
| 303 class Number(BaseType): | 209 class Number(BaseType): |
| 304 @staticmethod | 210 @staticmethod |
| 305 def get_getter_name(): | 211 def get_getter_name(): |
| 306 return "Double" | 212 return "Double" |
| 307 | 213 |
| 308 @staticmethod | 214 @staticmethod |
| 309 def get_setter_name(): | 215 def get_setter_name(): |
| 310 return "Number" | 216 return "Number" |
| 311 | 217 |
| 312 @staticmethod | 218 @staticmethod |
| 313 def get_constructor_pattern(): | 219 def get_constructor_pattern(): |
| 314 return "InspectorBasicValue::create(%s)" | 220 return "InspectorBasicValue::create(%s)" |
| 315 | 221 |
| 316 @staticmethod | 222 @staticmethod |
| 317 def get_c_initializer(): | 223 def get_raw_validator_call_text(): |
| 318 return "0" | 224 return "RuntimeCastHelper::assertType<JSONValue::TypeNumber>" |
| 319 | |
| 320 @staticmethod | |
| 321 def get_validate_method_params(): | |
| 322 class ValidateMethodParams: | |
| 323 template_type = "Number" | |
| 324 return ValidateMethodParams | |
| 325 | |
| 326 @staticmethod | |
| 327 def get_output_pass_model(): | |
| 328 return RawTypes.OutputPassModel.ByPointer | |
| 329 | 225 |
| 330 @staticmethod | 226 @staticmethod |
| 331 def is_heavy_value(): | 227 def is_heavy_value(): |
| 332 return False | 228 return False |
| 333 | 229 |
| 334 @staticmethod | 230 @staticmethod |
| 335 def get_array_item_raw_c_type_text(): | 231 def get_array_item_raw_c_type_text(): |
| 336 return "double" | 232 return "double" |
| 337 | 233 |
| 338 @staticmethod | 234 @staticmethod |
| 339 def get_raw_type_model(): | 235 def get_raw_type_model(): |
| 340 return TypeModel.Number | 236 return TypeModel.Number |
| 341 | 237 |
| 342 class Bool(BaseType): | 238 class Bool(BaseType): |
| 343 @staticmethod | 239 @staticmethod |
| 344 def get_getter_name(): | 240 def get_getter_name(): |
| 345 return "Boolean" | 241 return "Boolean" |
| 346 | 242 |
| 347 get_setter_name = get_getter_name | 243 get_setter_name = get_getter_name |
| 348 | 244 |
| 349 @staticmethod | 245 @staticmethod |
| 350 def get_constructor_pattern(): | 246 def get_constructor_pattern(): |
| 351 return "InspectorBasicValue::create(%s)" | 247 return "InspectorBasicValue::create(%s)" |
| 352 | 248 |
| 353 @staticmethod | 249 @staticmethod |
| 354 def get_c_initializer(): | |
| 355 return "false" | |
| 356 | |
| 357 @staticmethod | |
| 358 def get_validate_method_params(): | |
| 359 class ValidateMethodParams: | |
| 360 template_type = "Boolean" | |
| 361 return ValidateMethodParams | |
| 362 | |
| 363 @staticmethod | |
| 364 def get_output_pass_model(): | |
| 365 return RawTypes.OutputPassModel.ByPointer | |
| 366 | |
| 367 @staticmethod | |
| 368 def is_heavy_value(): | 250 def is_heavy_value(): |
| 369 return False | 251 return False |
| 370 | 252 |
| 371 @staticmethod | 253 @staticmethod |
| 372 def get_array_item_raw_c_type_text(): | 254 def get_array_item_raw_c_type_text(): |
| 373 return "bool" | 255 return "bool" |
| 374 | 256 |
| 375 @staticmethod | 257 @staticmethod |
| 376 def get_raw_type_model(): | 258 def get_raw_type_model(): |
| 377 return TypeModel.Bool | 259 return TypeModel.Bool |
| 378 | 260 |
| 379 class Object(BaseType): | 261 class Object(BaseType): |
| 380 @staticmethod | 262 @staticmethod |
| 381 def get_getter_name(): | 263 def get_getter_name(): |
| 382 return "Object" | 264 return "Object" |
| 383 | 265 |
| 384 @staticmethod | 266 @staticmethod |
| 385 def get_setter_name(): | 267 def get_setter_name(): |
| 386 return "Value" | 268 return "Value" |
| 387 | 269 |
| 388 @staticmethod | 270 @staticmethod |
| 389 def get_constructor_pattern(): | 271 def get_constructor_pattern(): |
| 390 return "%s" | 272 return "%s" |
| 391 | 273 |
| 392 @staticmethod | 274 @staticmethod |
| 393 def get_c_initializer(): | |
| 394 return "JSONObject::create()" | |
| 395 | |
| 396 @staticmethod | |
| 397 def get_output_argument_prefix(): | 275 def get_output_argument_prefix(): |
| 398 return "" | 276 return "" |
| 399 | 277 |
| 400 @staticmethod | 278 @staticmethod |
| 401 def get_validate_method_params(): | |
| 402 class ValidateMethodParams: | |
| 403 template_type = "Object" | |
| 404 return ValidateMethodParams | |
| 405 | |
| 406 @staticmethod | |
| 407 def get_output_pass_model(): | |
| 408 return RawTypes.OutputPassModel.ByReference | |
| 409 | |
| 410 @staticmethod | |
| 411 def is_heavy_value(): | 279 def is_heavy_value(): |
| 412 return True | 280 return True |
| 413 | 281 |
| 414 @staticmethod | 282 @staticmethod |
| 415 def get_array_item_raw_c_type_text(): | 283 def get_array_item_raw_c_type_text(): |
| 416 return "JSONObject" | 284 return "JSONObject" |
| 417 | 285 |
| 418 @staticmethod | 286 @staticmethod |
| 419 def get_raw_type_model(): | 287 def get_raw_type_model(): |
| 420 return TypeModel.Object | 288 return TypeModel.Object |
| 421 | 289 |
| 422 class Any(BaseType): | 290 class Any(BaseType): |
| 423 @staticmethod | 291 @staticmethod |
| 424 def get_getter_name(): | 292 def get_getter_name(): |
| 425 return "Value" | 293 return "Value" |
| 426 | 294 |
| 427 get_setter_name = get_getter_name | 295 get_setter_name = get_getter_name |
| 428 | 296 |
| 429 @staticmethod | 297 @staticmethod |
| 430 def get_c_initializer(): | |
| 431 raise Exception("Unsupported") | |
| 432 | |
| 433 @staticmethod | |
| 434 def get_constructor_pattern(): | 298 def get_constructor_pattern(): |
| 435 raise Exception("Unsupported") | 299 raise Exception("Unsupported") |
| 436 | 300 |
| 437 @staticmethod | 301 @staticmethod |
| 438 def get_raw_validator_call_text(): | 302 def get_raw_validator_call_text(): |
| 439 return "RuntimeCastHelper::assertAny" | 303 return "RuntimeCastHelper::assertAny" |
| 440 | 304 |
| 441 @staticmethod | 305 @staticmethod |
| 442 def get_output_pass_model(): | |
| 443 return RawTypes.OutputPassModel.ByReference | |
| 444 | |
| 445 @staticmethod | |
| 446 def is_heavy_value(): | 306 def is_heavy_value(): |
| 447 return True | 307 return True |
| 448 | 308 |
| 449 @staticmethod | 309 @staticmethod |
| 450 def get_array_item_raw_c_type_text(): | 310 def get_array_item_raw_c_type_text(): |
| 451 return "JSONValue" | 311 return "JSONValue" |
| 452 | 312 |
| 453 @staticmethod | 313 @staticmethod |
| 454 def get_raw_type_model(): | 314 def get_raw_type_model(): |
| 455 return TypeModel.Any | 315 return TypeModel.Any |
| 456 | 316 |
| 457 class Array(BaseType): | 317 class Array(BaseType): |
| 458 @staticmethod | 318 @staticmethod |
| 459 def get_getter_name(): | 319 def get_getter_name(): |
| 460 return "Array" | 320 return "Array" |
| 461 | 321 |
| 462 @staticmethod | 322 @staticmethod |
| 463 def get_setter_name(): | 323 def get_setter_name(): |
| 464 return "Value" | 324 return "Value" |
| 465 | 325 |
| 466 @staticmethod | 326 @staticmethod |
| 467 def get_constructor_pattern(): | 327 def get_constructor_pattern(): |
| 468 return "%s" | 328 return "%s" |
| 469 | 329 |
| 470 @staticmethod | 330 @staticmethod |
| 471 def get_c_initializer(): | |
| 472 return "JSONArray::create()" | |
| 473 | |
| 474 @staticmethod | |
| 475 def get_output_argument_prefix(): | 331 def get_output_argument_prefix(): |
| 476 return "" | 332 return "" |
| 477 | 333 |
| 478 @staticmethod | 334 @staticmethod |
| 479 def get_validate_method_params(): | |
| 480 class ValidateMethodParams: | |
| 481 template_type = "Array" | |
| 482 return ValidateMethodParams | |
| 483 | |
| 484 @staticmethod | |
| 485 def get_output_pass_model(): | |
| 486 return RawTypes.OutputPassModel.ByReference | |
| 487 | |
| 488 @staticmethod | |
| 489 def is_heavy_value(): | 335 def is_heavy_value(): |
| 490 return True | 336 return True |
| 491 | 337 |
| 492 @staticmethod | 338 @staticmethod |
| 493 def get_array_item_raw_c_type_text(): | 339 def get_array_item_raw_c_type_text(): |
| 494 return "JSONArray" | 340 return "JSONArray" |
| 495 | 341 |
| 496 @staticmethod | 342 @staticmethod |
| 497 def get_raw_type_model(): | 343 def get_raw_type_model(): |
| 498 return TypeModel.Array | 344 return TypeModel.Array |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 def get_command_return_pass_model(self): | 508 def get_command_return_pass_model(self): |
| 663 return CommandReturnPassModel.OptOutput(self.base.get_opt_output
_type_()) | 509 return CommandReturnPassModel.OptOutput(self.base.get_opt_output
_type_()) |
| 664 | 510 |
| 665 def get_input_param_type_text(self): | 511 def get_input_param_type_text(self): |
| 666 return "const %s* const" % self.base.type_name | 512 return "const %s* const" % self.base.type_name |
| 667 | 513 |
| 668 @staticmethod | 514 @staticmethod |
| 669 def get_event_setter_expression_pattern(): | 515 def get_event_setter_expression_pattern(): |
| 670 return "*%s" | 516 return "*%s" |
| 671 | 517 |
| 672 class ExactlyInt(ValueType): | |
| 673 def __init__(self): | |
| 674 TypeModel.ValueType.__init__(self, "int", False) | |
| 675 | |
| 676 def get_input_param_type_text(self): | |
| 677 return "TypeBuilder::ExactlyInt" | |
| 678 | |
| 679 def get_opt_output_type_(self): | |
| 680 return "TypeBuilder::ExactlyInt" | |
| 681 | |
| 682 @classmethod | 518 @classmethod |
| 683 def init_class(cls): | 519 def init_class(cls): |
| 684 cls.Bool = cls.ValueType("bool", False) | 520 cls.Bool = cls.ValueType("bool", False) |
| 685 if EXACTLY_INT_SUPPORTED: | 521 cls.Int = cls.ValueType("int", False) |
| 686 cls.Int = cls.ExactlyInt() | |
| 687 else: | |
| 688 cls.Int = cls.ValueType("int", False) | |
| 689 cls.Number = cls.ValueType("double", False) | 522 cls.Number = cls.ValueType("double", False) |
| 690 cls.String = cls.ValueType("String", True,) | 523 cls.String = cls.ValueType("String", True,) |
| 691 cls.Object = cls.RefPtrBased("JSONObject") | 524 cls.Object = cls.RefPtrBased("JSONObject") |
| 692 cls.Array = cls.RefPtrBased("JSONArray") | 525 cls.Array = cls.RefPtrBased("JSONArray") |
| 693 cls.Any = cls.RefPtrBased("JSONValue") | 526 cls.Any = cls.RefPtrBased("JSONValue") |
| 694 | 527 |
| 695 TypeModel.init_class() | 528 TypeModel.init_class() |
| 696 | 529 |
| 697 | 530 |
| 698 # Collection of JSONObject class methods that are likely to be overloaded in gen
erated class. | 531 # Collection of JSONObject class methods that are likely to be overloaded in gen
erated class. |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 parts = str.split('\n') | 580 parts = str.split('\n') |
| 748 self.append(parts[0]) | 581 self.append(parts[0]) |
| 749 for p in parts[1:]: | 582 for p in parts[1:]: |
| 750 self.output.append('\n') | 583 self.output.append('\n') |
| 751 if p: | 584 if p: |
| 752 self.newline(p) | 585 self.newline(p) |
| 753 | 586 |
| 754 def get_indent(self): | 587 def get_indent(self): |
| 755 return self.indent | 588 return self.indent |
| 756 | 589 |
| 757 def get_indented(self, additional_indent): | |
| 758 return Writer(self.output, self.indent + additional_indent) | |
| 759 | |
| 760 def insert_writer(self, additional_indent): | 590 def insert_writer(self, additional_indent): |
| 761 new_output = [] | 591 new_output = [] |
| 762 self.output.append(new_output) | 592 self.output.append(new_output) |
| 763 return Writer(new_output, self.indent + additional_indent) | 593 return Writer(new_output, self.indent + additional_indent) |
| 764 | 594 |
| 765 | 595 |
| 766 class EnumConstants: | 596 class EnumConstants: |
| 767 map_ = {} | 597 map_ = {} |
| 768 constants_ = [] | 598 constants_ = [] |
| 769 | 599 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 852 if request: | 682 if request: |
| 853 cls.need_user_runtime_cast_ = True | 683 cls.need_user_runtime_cast_ = True |
| 854 request.acknowledge() | 684 request.acknowledge() |
| 855 | 685 |
| 856 @classmethod | 686 @classmethod |
| 857 def request_internal_runtime_cast(cls): | 687 def request_internal_runtime_cast(cls): |
| 858 cls.need_internal_runtime_cast_ = True | 688 cls.need_internal_runtime_cast_ = True |
| 859 | 689 |
| 860 @classmethod | 690 @classmethod |
| 861 def get_code_generator(enum_binding_cls): | 691 def get_code_generator(enum_binding_cls): |
| 862 #FIXME: generate ad-hoc enums too once we figure out how
to better implement them in C++. | |
| 863 comment_out = helper.is_ad_hoc | |
| 864 | 692 |
| 865 class CodeGenerator: | 693 class CodeGenerator: |
| 866 @staticmethod | 694 @staticmethod |
| 867 def generate_type_builder(writer, generate_context): | 695 def generate_type_builder(writer, generate_context): |
| 868 enum = json_typable["enum"] | 696 enum = json_typable["enum"] |
| 869 helper.write_doc(writer) | 697 helper.write_doc(writer) |
| 870 enum_name = fixed_type_name.class_name | 698 enum_name = fixed_type_name.class_name |
| 871 fixed_type_name.output_comment(writer) | 699 fixed_type_name.output_comment(writer) |
| 872 writer.newline("struct ") | 700 writer.newline("struct ") |
| 873 writer.append(enum_name) | 701 writer.append(enum_name) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 889 if enum_binding_cls.need_user_runtime_cast_: | 717 if enum_binding_cls.need_user_runtime_cast_: |
| 890 raise Exception("Not yet implemented") | 718 raise Exception("Not yet implemented") |
| 891 | 719 |
| 892 if enum_binding_cls.need_internal_runtime_cast_: | 720 if enum_binding_cls.need_internal_runtime_cast_: |
| 893 writer.append("#if %s\n" % VALIDATOR_IFDEF_N
AME) | 721 writer.append("#if %s\n" % VALIDATOR_IFDEF_N
AME) |
| 894 writer.newline(" static void assertCorrec
tValue(JSONValue* value);\n") | 722 writer.newline(" static void assertCorrec
tValue(JSONValue* value);\n") |
| 895 writer.append("#endif // %s\n" % VALIDATOR_
IFDEF_NAME) | 723 writer.append("#endif // %s\n" % VALIDATOR_
IFDEF_NAME) |
| 896 | 724 |
| 897 validator_writer = generate_context.validato
r_writer | 725 validator_writer = generate_context.validato
r_writer |
| 898 | 726 |
| 899 domain_fixes = DomainNameFixes.get_fixed_dat
a(context_domain_name) | |
| 900 | |
| 901 validator_writer.newline("void %s%s::assertC
orrectValue(JSONValue* value)\n" % (helper.full_name_prefix_for_impl, enum_name)
) | 727 validator_writer.newline("void %s%s::assertC
orrectValue(JSONValue* value)\n" % (helper.full_name_prefix_for_impl, enum_name)
) |
| 902 validator_writer.newline("{\n") | 728 validator_writer.newline("{\n") |
| 903 validator_writer.newline(" WTF::String s;
\n") | 729 validator_writer.newline(" WTF::String s;
\n") |
| 904 validator_writer.newline(" bool cast_res
= value->asString(&s);\n") | 730 validator_writer.newline(" bool cast_res
= value->asString(&s);\n") |
| 905 validator_writer.newline(" ASSERT(cast_re
s);\n") | 731 validator_writer.newline(" ASSERT(cast_re
s);\n") |
| 906 if len(enum) > 0: | 732 if len(enum) > 0: |
| 907 condition_list = [] | 733 condition_list = [] |
| 908 for enum_item in enum: | 734 for enum_item in enum: |
| 909 enum_pos = EnumConstants.add_constan
t(enum_item) | 735 enum_pos = EnumConstants.add_constan
t(enum_item) |
| 910 condition_list.append("s == \"%s\""
% enum_item) | 736 condition_list.append("s == \"%s\""
% enum_item) |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 996 @classmethod | 822 @classmethod |
| 997 def resolve_inner(cls, resolve_context): | 823 def resolve_inner(cls, resolve_context): |
| 998 pass | 824 pass |
| 999 | 825 |
| 1000 @staticmethod | 826 @staticmethod |
| 1001 def request_user_runtime_cast(request): | 827 def request_user_runtime_cast(request): |
| 1002 raise Exception("Unsupported") | 828 raise Exception("Unsupported") |
| 1003 | 829 |
| 1004 @staticmethod | 830 @staticmethod |
| 1005 def request_internal_runtime_cast(): | 831 def request_internal_runtime_cast(): |
| 1006 RawTypes.String.request_raw_internal_runtime_cast() | 832 pass |
| 1007 | 833 |
| 1008 @staticmethod | 834 @staticmethod |
| 1009 def get_code_generator(): | 835 def get_code_generator(): |
| 1010 class CodeGenerator: | 836 class CodeGenerator: |
| 1011 @staticmethod | 837 @staticmethod |
| 1012 def generate_type_builder(writer, generate_conte
xt): | 838 def generate_type_builder(writer, generate_conte
xt): |
| 1013 helper.write_doc(writer) | 839 helper.write_doc(writer) |
| 1014 fixed_type_name.output_comment(writer) | 840 fixed_type_name.output_comment(writer) |
| 1015 writer.newline("typedef String ") | 841 writer.newline("typedef String ") |
| 1016 writer.append(fixed_type_name.class_name) | 842 writer.append(fixed_type_name.class_name) |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1189 writer.append_multiline("\n * .set%s
(...)" % Capitalizer.lower_camel_case_to_upper(prop_data.p["name"])) | 1015 writer.append_multiline("\n * .set%s
(...)" % Capitalizer.lower_camel_case_to_upper(prop_data.p["name"])) |
| 1190 writer.append_multiline(";\n */\n") | 1016 writer.append_multiline(";\n */\n") |
| 1191 | 1017 |
| 1192 writer.newline_multiline(CodeGeneratorInspectorS
trings.class_binding_builder_part_4) | 1018 writer.newline_multiline(CodeGeneratorInspectorS
trings.class_binding_builder_part_4) |
| 1193 | 1019 |
| 1194 writer.newline(" typedef TypeBuilder::StructI
temTraits ItemTraits;\n") | 1020 writer.newline(" typedef TypeBuilder::StructI
temTraits ItemTraits;\n") |
| 1195 | 1021 |
| 1196 for prop_data in resolve_data.main_properties: | 1022 for prop_data in resolve_data.main_properties: |
| 1197 prop_name = prop_data.p["name"] | 1023 prop_name = prop_data.p["name"] |
| 1198 param_type_binding = prop_data.param_type_bi
nding | 1024 param_type_binding = prop_data.param_type_bi
nding |
| 1199 raw_type = param_type_binding.reduce_to_raw_
type() | |
| 1200 if isinstance(param_type_binding.get_type_mo
del(), TypeModel.ValueType): | 1025 if isinstance(param_type_binding.get_type_mo
del(), TypeModel.ValueType): |
| 1201 writer.append_multiline("\n void %s"
% prop_name) | 1026 writer.append_multiline("\n void %s"
% prop_name) |
| 1202 writer.append("(%s value)\n" % param_typ
e_binding.get_type_model().get_command_return_pass_model().get_output_parameter_
type()) | 1027 writer.append("(%s value)\n" % param_typ
e_binding.get_type_model().get_command_return_pass_model().get_output_parameter_
type()) |
| 1203 writer.newline(" {\n") | 1028 writer.newline(" {\n") |
| 1204 writer.newline(" JSONObjectBase::
get%s(\"%s\", value);\n" | 1029 writer.newline(" JSONObjectBase::
get%s(\"%s\", value);\n" |
| 1205 % (param_type_binding.reduce_to_raw_
type().get_setter_name(), prop_data.p["name"])) | 1030 % (param_type_binding.reduce_to_raw_
type().get_setter_name(), prop_data.p["name"])) |
| 1206 writer.newline(" }\n") | 1031 writer.newline(" }\n") |
| 1207 | 1032 |
| 1208 for prop_data in resolve_data.optional_propertie
s: | 1033 for prop_data in resolve_data.optional_propertie
s: |
| 1209 prop_name = prop_data.p["name"] | 1034 prop_name = prop_data.p["name"] |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1237 | 1062 |
| 1238 if class_binding_cls.need_internal_runtime_cast_
: | 1063 if class_binding_cls.need_internal_runtime_cast_
: |
| 1239 writer.append("#if %s\n" % VALIDATOR_IFDEF_N
AME) | 1064 writer.append("#if %s\n" % VALIDATOR_IFDEF_N
AME) |
| 1240 writer.newline(" static void assertCorrec
tValue(JSONValue* value);\n") | 1065 writer.newline(" static void assertCorrec
tValue(JSONValue* value);\n") |
| 1241 writer.append("#endif // %s\n" % VALIDATOR_
IFDEF_NAME) | 1066 writer.append("#endif // %s\n" % VALIDATOR_
IFDEF_NAME) |
| 1242 | 1067 |
| 1243 closed_field_set = (context_domain_name + ".
" + class_name) not in TYPES_WITH_OPEN_FIELD_LIST_SET | 1068 closed_field_set = (context_domain_name + ".
" + class_name) not in TYPES_WITH_OPEN_FIELD_LIST_SET |
| 1244 | 1069 |
| 1245 validator_writer = generate_context.validato
r_writer | 1070 validator_writer = generate_context.validato
r_writer |
| 1246 | 1071 |
| 1247 domain_fixes = DomainNameFixes.get_fixed_dat
a(context_domain_name) | |
| 1248 | |
| 1249 validator_writer.newline("void %s%s::assertC
orrectValue(JSONValue* value)\n" % (helper.full_name_prefix_for_impl, class_name
)) | 1072 validator_writer.newline("void %s%s::assertC
orrectValue(JSONValue* value)\n" % (helper.full_name_prefix_for_impl, class_name
)) |
| 1250 validator_writer.newline("{\n") | 1073 validator_writer.newline("{\n") |
| 1251 validator_writer.newline(" RefPtr<JSONObj
ect> object;\n") | 1074 validator_writer.newline(" RefPtr<JSONObj
ect> object;\n") |
| 1252 validator_writer.newline(" bool castRes =
value->asObject(&object);\n") | 1075 validator_writer.newline(" bool castRes =
value->asObject(&object);\n") |
| 1253 validator_writer.newline(" ASSERT_UNUSED(
castRes, castRes);\n") | 1076 validator_writer.newline(" ASSERT_UNUSED(
castRes, castRes);\n") |
| 1254 for prop_data in resolve_data.main_propertie
s: | 1077 for prop_data in resolve_data.main_propertie
s: |
| 1255 validator_writer.newline(" {\n") | 1078 validator_writer.newline(" {\n") |
| 1256 it_name = "%sPos" % prop_data.p["name"] | 1079 it_name = "%sPos" % prop_data.p["name"] |
| 1257 validator_writer.newline(" JSONOb
ject::iterator %s;\n" % it_name) | 1080 validator_writer.newline(" JSONOb
ject::iterator %s;\n" % it_name) |
| 1258 validator_writer.newline(" %s = o
bject->find(\"%s\");\n" % (it_name, prop_data.p["name"])) | 1081 validator_writer.newline(" %s = o
bject->find(\"%s\");\n" % (it_name, prop_data.p["name"])) |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1362 @classmethod | 1185 @classmethod |
| 1363 def resolve_inner(cls, resolve_context): | 1186 def resolve_inner(cls, resolve_context): |
| 1364 pass | 1187 pass |
| 1365 | 1188 |
| 1366 @staticmethod | 1189 @staticmethod |
| 1367 def request_user_runtime_cast(request): | 1190 def request_user_runtime_cast(request): |
| 1368 pass | 1191 pass |
| 1369 | 1192 |
| 1370 @staticmethod | 1193 @staticmethod |
| 1371 def request_internal_runtime_cast(): | 1194 def request_internal_runtime_cast(): |
| 1372 RawTypes.Object.request_raw_internal_runtime_cast() | 1195 pass |
| 1373 | 1196 |
| 1374 @staticmethod | 1197 @staticmethod |
| 1375 def get_code_generator(): | 1198 def get_code_generator(): |
| 1376 pass | 1199 pass |
| 1377 | 1200 |
| 1378 @staticmethod | 1201 @staticmethod |
| 1379 def get_validator_call_text(): | 1202 def get_validator_call_text(): |
| 1380 return "RuntimeCastHelper::assertType<JSONValue::TypeObj
ect>" | 1203 return "RuntimeCastHelper::assertType<JSONValue::TypeObj
ect>" |
| 1381 | 1204 |
| 1382 @classmethod | 1205 @classmethod |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1509 def __init__(self, raw_type): | 1332 def __init__(self, raw_type): |
| 1510 self.raw_type_ = raw_type | 1333 self.raw_type_ = raw_type |
| 1511 | 1334 |
| 1512 def resolve_inner(self, resolve_context): | 1335 def resolve_inner(self, resolve_context): |
| 1513 pass | 1336 pass |
| 1514 | 1337 |
| 1515 def request_user_runtime_cast(self, request): | 1338 def request_user_runtime_cast(self, request): |
| 1516 raise Exception("Unsupported") | 1339 raise Exception("Unsupported") |
| 1517 | 1340 |
| 1518 def request_internal_runtime_cast(self): | 1341 def request_internal_runtime_cast(self): |
| 1519 self.raw_type_.request_raw_internal_runtime_cast() | 1342 pass |
| 1520 | 1343 |
| 1521 def get_code_generator(self): | 1344 def get_code_generator(self): |
| 1522 return None | 1345 return None |
| 1523 | 1346 |
| 1524 def get_validator_call_text(self): | 1347 def get_validator_call_text(self): |
| 1525 return self.raw_type_.get_raw_validator_call_text() | 1348 return self.raw_type_.get_raw_validator_call_text() |
| 1526 | 1349 |
| 1527 def get_array_item_c_type_text(self): | 1350 def get_array_item_c_type_text(self): |
| 1528 return self.raw_type_.get_array_item_raw_c_type_text() | 1351 return self.raw_type_.get_array_item_raw_c_type_text() |
| 1529 | 1352 |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1796 type_builder_fragments = [] | 1619 type_builder_fragments = [] |
| 1797 type_builder_forwards = [] | 1620 type_builder_forwards = [] |
| 1798 validator_impl_list = [] | 1621 validator_impl_list = [] |
| 1799 type_builder_impl_list = [] | 1622 type_builder_impl_list = [] |
| 1800 | 1623 |
| 1801 | 1624 |
| 1802 @staticmethod | 1625 @staticmethod |
| 1803 def go(): | 1626 def go(): |
| 1804 Generator.process_types(type_map) | 1627 Generator.process_types(type_map) |
| 1805 | 1628 |
| 1806 first_cycle_guardable_list_list = [ | |
| 1807 Generator.backend_method_declaration_list, | |
| 1808 Generator.backend_method_implementation_list, | |
| 1809 Generator.backend_method_name_declaration_list, | |
| 1810 Generator.backend_method_name_declaration_index_list, | |
| 1811 Generator.backend_agent_interface_list, | |
| 1812 Generator.frontend_class_field_lines, | |
| 1813 Generator.frontend_constructor_init_list, | |
| 1814 Generator.frontend_domain_class_lines, | |
| 1815 Generator.frontend_method_list, | |
| 1816 Generator.method_handler_list, | |
| 1817 Generator.method_name_enum_list, | |
| 1818 Generator.backend_constructor_init_list, | |
| 1819 Generator.backend_virtual_setters_list, | |
| 1820 Generator.backend_setters_list, | |
| 1821 Generator.backend_field_list] | |
| 1822 | |
| 1823 for json_domain in json_api["domains"]: | 1629 for json_domain in json_api["domains"]: |
| 1824 domain_name = json_domain["domain"] | 1630 domain_name = json_domain["domain"] |
| 1825 domain_name_lower = domain_name.lower() | 1631 domain_name_lower = domain_name.lower() |
| 1826 | 1632 |
| 1827 domain_fixes = DomainNameFixes.get_fixed_data(domain_name) | 1633 agent_field_name = DomainNameFixes.get_fixed_data(domain_name) |
| 1828 | |
| 1829 agent_field_name = domain_fixes.agent_field_name | |
| 1830 | 1634 |
| 1831 frontend_method_declaration_lines = [] | 1635 frontend_method_declaration_lines = [] |
| 1832 | 1636 |
| 1833 if "events" in json_domain: | 1637 if "events" in json_domain: |
| 1834 for json_event in json_domain["events"]: | 1638 for json_event in json_domain["events"]: |
| 1835 Generator.process_event(json_event, domain_name, frontend_me
thod_declaration_lines) | 1639 Generator.process_event(json_event, domain_name, frontend_me
thod_declaration_lines) |
| 1836 | 1640 |
| 1837 Generator.frontend_class_field_lines.append(" %s m_%s;\n" % (doma
in_name, domain_name_lower)) | 1641 Generator.frontend_class_field_lines.append(" %s m_%s;\n" % (doma
in_name, domain_name_lower)) |
| 1838 if Generator.frontend_constructor_init_list: | 1642 if Generator.frontend_constructor_init_list: |
| 1839 Generator.frontend_constructor_init_list.append(" , ") | 1643 Generator.frontend_constructor_init_list.append(" , ") |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1907 backend_agent_interface_list = [] if "redirect" in json_command else Gen
erator.backend_agent_interface_list | 1711 backend_agent_interface_list = [] if "redirect" in json_command else Gen
erator.backend_agent_interface_list |
| 1908 | 1712 |
| 1909 ad_hoc_type_output = [] | 1713 ad_hoc_type_output = [] |
| 1910 backend_agent_interface_list.append(ad_hoc_type_output) | 1714 backend_agent_interface_list.append(ad_hoc_type_output) |
| 1911 ad_hoc_type_writer = Writer(ad_hoc_type_output, " ") | 1715 ad_hoc_type_writer = Writer(ad_hoc_type_output, " ") |
| 1912 | 1716 |
| 1913 backend_agent_interface_list.append(" virtual void %s(ErrorString
*" % json_command_name) | 1717 backend_agent_interface_list.append(" virtual void %s(ErrorString
*" % json_command_name) |
| 1914 | 1718 |
| 1915 method_in_code = "" | 1719 method_in_code = "" |
| 1916 method_out_code = "" | 1720 method_out_code = "" |
| 1917 result_object_declaration = "" | |
| 1918 agent_call_param_list = ["&error"] | 1721 agent_call_param_list = ["&error"] |
| 1919 agent_call_params_declaration_list = [" ErrorString error;"] | 1722 agent_call_params_declaration_list = [" ErrorString error;"] |
| 1920 send_response_call_params_list = ["error"] | 1723 send_response_call_params_list = ["error"] |
| 1921 request_message_param = "" | 1724 request_message_param = "" |
| 1922 normal_response_cook_text = "" | 1725 normal_response_cook_text = "" |
| 1923 error_type_binding = None | 1726 error_type_binding = None |
| 1924 if "error" in json_command: | 1727 if "error" in json_command: |
| 1925 json_error = json_command["error"] | 1728 json_error = json_command["error"] |
| 1926 error_type_binding = Generator.resolve_type_and_generate_ad_hoc(json
_error, json_command_name + "Error", json_command_name, domain_name, ad_hoc_type
_writer, agent_interface_name + "::") | 1729 error_type_binding = Generator.resolve_type_and_generate_ad_hoc(json
_error, json_command_name + "Error", json_command_name, domain_name, ad_hoc_type
_writer, agent_interface_name + "::") |
| 1927 error_type_model = error_type_binding.get_type_model().get_optional(
) | 1730 error_type_model = error_type_binding.get_type_model().get_optional(
) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1940 | 1743 |
| 1941 for json_parameter in json_params: | 1744 for json_parameter in json_params: |
| 1942 json_param_name = json_parameter["name"] | 1745 json_param_name = json_parameter["name"] |
| 1943 param_raw_type = resolve_param_raw_type(json_parameter, domain_n
ame) | 1746 param_raw_type = resolve_param_raw_type(json_parameter, domain_n
ame) |
| 1944 | 1747 |
| 1945 getter_name = param_raw_type.get_getter_name() | 1748 getter_name = param_raw_type.get_getter_name() |
| 1946 | 1749 |
| 1947 optional = json_parameter.get("optional") | 1750 optional = json_parameter.get("optional") |
| 1948 | 1751 |
| 1949 non_optional_type_model = param_raw_type.get_raw_type_model() | 1752 non_optional_type_model = param_raw_type.get_raw_type_model() |
| 1950 if optional: | |
| 1951 type_model = non_optional_type_model.get_optional() | |
| 1952 else: | |
| 1953 type_model = non_optional_type_model | |
| 1954 | 1753 |
| 1955 if optional: | 1754 if optional: |
| 1956 code = (" bool %s_valueFound = false;\n" | 1755 code = (" bool %s_valueFound = false;\n" |
| 1957 " %s in_%s = get%s(paramsContainerPtr, \"%s\", &%
s_valueFound, protocolErrors);\n" % | 1756 " %s in_%s = get%s(paramsContainerPtr, \"%s\", &%
s_valueFound, protocolErrors);\n" % |
| 1958 (json_param_name, non_optional_type_model.get_command
_return_pass_model().get_return_var_type(), json_param_name, getter_name, json_p
aram_name, json_param_name)) | 1757 (json_param_name, non_optional_type_model.get_command
_return_pass_model().get_return_var_type(), json_param_name, getter_name, json_p
aram_name, json_param_name)) |
| 1959 param = "%s_valueFound ? &in_%s : 0" % (json_param_name, jso
n_param_name) | 1758 param = "%s_valueFound ? &in_%s : 0" % (json_param_name, jso
n_param_name) |
| 1960 # FIXME: pass optional refptr-values as PassRefPtr | 1759 # FIXME: pass optional refptr-values as PassRefPtr |
| 1961 formal_param_type_pattern = "const %s*" | 1760 formal_param_type_pattern = "const %s*" |
| 1962 else: | 1761 else: |
| 1963 code = (" %s in_%s = get%s(paramsContainerPtr, \"%s\", 0,
protocolErrors);\n" % | 1762 code = (" %s in_%s = get%s(paramsContainerPtr, \"%s\", 0,
protocolErrors);\n" % |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1981 | 1780 |
| 1982 decl_parameter_list = [] | 1781 decl_parameter_list = [] |
| 1983 Generator.generate_send_method(json_command.get("returns"), json_com
mand_name, domain_name, ad_hoc_type_writer, | 1782 Generator.generate_send_method(json_command.get("returns"), json_com
mand_name, domain_name, ad_hoc_type_writer, |
| 1984 decl_parameter_list, | 1783 decl_parameter_list, |
| 1985 Generator.CallbackMethodStructTemplat
e, | 1784 Generator.CallbackMethodStructTemplat
e, |
| 1986 Generator.backend_method_implementati
on_list, Templates.callback_main_methods, | 1785 Generator.backend_method_implementati
on_list, Templates.callback_main_methods, |
| 1987 {"callbackName": callback_name, "agen
tName": agent_interface_name}) | 1786 {"callbackName": callback_name, "agen
tName": agent_interface_name}) |
| 1988 | 1787 |
| 1989 callback_writer.newline("class " + callback_name + " : public Callba
ckBase {\n") | 1788 callback_writer.newline("class " + callback_name + " : public Callba
ckBase {\n") |
| 1990 callback_writer.newline("public:\n") | 1789 callback_writer.newline("public:\n") |
| 1991 callback_writer.newline(" " + callback_name + "(PassRefPtr<Inspec
torBackendDispatcherImpl>, int id);\n") | 1790 callback_writer.newline(" " + callback_name + "(PassRefPtrWillBeR
awPtr<InspectorBackendDispatcherImpl>, int id);\n") |
| 1992 callback_writer.newline(" void sendSuccess(" + ", ".join(decl_par
ameter_list) + ");\n") | 1791 callback_writer.newline(" void sendSuccess(" + ", ".join(decl_par
ameter_list) + ");\n") |
| 1993 error_part_writer = callback_writer.insert_writer("") | 1792 error_part_writer = callback_writer.insert_writer("") |
| 1994 callback_writer.newline("};\n") | 1793 callback_writer.newline("};\n") |
| 1995 | 1794 |
| 1996 if error_type_binding: | 1795 if error_type_binding: |
| 1997 annotated_type = error_type_model.get_input_param_type_text() | 1796 annotated_type = error_type_model.get_input_param_type_text() |
| 1998 error_part_writer.newline(" void sendFailure(const ErrorStrin
g&, %s);\n" % annotated_type) | 1797 error_part_writer.newline(" void sendFailure(const ErrorStrin
g&, %s);\n" % annotated_type) |
| 1999 error_part_writer.newline(" using CallbackBase::sendFailure;\
n") | 1798 error_part_writer.newline(" using CallbackBase::sendFailure;\
n") |
| 2000 | 1799 |
| 2001 assigment_value = error_type_model.get_event_setter_expression_p
attern() % "errorData" | 1800 assigment_value = error_type_model.get_event_setter_expression_p
attern() % "errorData" |
| 2002 assigment_value = error_type_binding.reduce_to_raw_type().get_co
nstructor_pattern() % assigment_value | 1801 assigment_value = error_type_binding.reduce_to_raw_type().get_co
nstructor_pattern() % assigment_value |
| 2003 | 1802 |
| 2004 Generator.backend_method_implementation_list.append(Templates.ca
llback_failure_method.substitute(None, | 1803 Generator.backend_method_implementation_list.append(Templates.ca
llback_failure_method.substitute(None, |
| 2005 agentName=agent_interface_name, | 1804 agentName=agent_interface_name, |
| 2006 callbackName=callback_name, | 1805 callbackName=callback_name, |
| 2007 parameter=annotated_type + " errorData", | 1806 parameter=annotated_type + " errorData", |
| 2008 argument=assigment_value)) | 1807 argument=assigment_value)) |
| 2009 | 1808 |
| 2010 ad_hoc_type_output.append(callback_output) | 1809 ad_hoc_type_output.append(callback_output) |
| 2011 | 1810 |
| 2012 method_out_code += " RefPtr<" + agent_interface_name + "::" + cal
lback_name + "> callback = adoptRef(new " + agent_interface_name + "::" + callba
ck_name + "(this, callId));\n" | 1811 method_out_code += " RefPtrWillBeRawPtr<" + agent_interface_name
+ "::" + callback_name + "> callback = adoptRefWillBeNoop(new " + agent_interfac
e_name + "::" + callback_name + "(this, callId));\n" |
| 2013 agent_call_param_list.append("callback") | 1812 agent_call_param_list.append("callback") |
| 2014 normal_response_cook_text += " if (!error.length()) \n" | 1813 normal_response_cook_text += " if (!error.length()) \n" |
| 2015 normal_response_cook_text += " return;\n" | 1814 normal_response_cook_text += " return;\n" |
| 2016 normal_response_cook_text += " callback->disable();\n" | 1815 normal_response_cook_text += " callback->disable();\n" |
| 2017 backend_agent_interface_list.append(", PassRefPtr<%s> callback" % ca
llback_name) | 1816 backend_agent_interface_list.append(", PassRefPtrWillBeRawPtr<%s> ca
llback" % callback_name) |
| 2018 else: | 1817 else: |
| 2019 if "returns" in json_command: | 1818 if "returns" in json_command: |
| 2020 method_out_code += "\n" | 1819 method_out_code += "\n" |
| 2021 agent_call_params_declaration_list.append(" RefPtr<JSONObject
> result = JSONObject::create();") | 1820 agent_call_params_declaration_list.append(" RefPtr<JSONObject
> result = JSONObject::create();") |
| 2022 send_response_call_params_list.append("result") | 1821 send_response_call_params_list.append("result") |
| 2023 response_cook_list = [] | 1822 response_cook_list = [] |
| 2024 for json_return in json_command["returns"]: | 1823 for json_return in json_command["returns"]: |
| 2025 | 1824 |
| 2026 json_return_name = json_return["name"] | 1825 json_return_name = json_return["name"] |
| 2027 | 1826 |
| 2028 optional = bool(json_return.get("optional")) | 1827 optional = bool(json_return.get("optional")) |
| 2029 | 1828 |
| 2030 return_type_binding = Generator.resolve_param_type_and_gener
ate_ad_hoc(json_return, json_command_name, domain_name, ad_hoc_type_writer, agen
t_interface_name + "::") | 1829 return_type_binding = Generator.resolve_param_type_and_gener
ate_ad_hoc(json_return, json_command_name, domain_name, ad_hoc_type_writer, agen
t_interface_name + "::") |
| 2031 | 1830 |
| 2032 raw_type = return_type_binding.reduce_to_raw_type() | 1831 raw_type = return_type_binding.reduce_to_raw_type() |
| 2033 setter_type = raw_type.get_setter_name() | 1832 setter_type = raw_type.get_setter_name() |
| 2034 initializer = raw_type.get_c_initializer() | |
| 2035 | 1833 |
| 2036 type_model = return_type_binding.get_type_model() | 1834 type_model = return_type_binding.get_type_model() |
| 2037 if optional: | 1835 if optional: |
| 2038 type_model = type_model.get_optional() | 1836 type_model = type_model.get_optional() |
| 2039 | 1837 |
| 2040 code = " %s out_%s;\n" % (type_model.get_command_return_p
ass_model().get_return_var_type(), json_return_name) | 1838 code = " %s out_%s;\n" % (type_model.get_command_return_p
ass_model().get_return_var_type(), json_return_name) |
| 2041 param = "%sout_%s" % (type_model.get_command_return_pass_mod
el().get_output_argument_prefix(), json_return_name) | 1839 param = "%sout_%s" % (type_model.get_command_return_pass_mod
el().get_output_argument_prefix(), json_return_name) |
| 2042 var_name = "out_%s" % json_return_name | 1840 var_name = "out_%s" % json_return_name |
| 2043 setter_argument = type_model.get_command_return_pass_model()
.get_output_to_raw_expression() % var_name | 1841 setter_argument = type_model.get_command_return_pass_model()
.get_output_to_raw_expression() % var_name |
| 2044 if return_type_binding.get_setter_value_expression_pattern()
: | 1842 if return_type_binding.get_setter_value_expression_pattern()
: |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2063 agent_call_param_list.append(param) | 1861 agent_call_param_list.append(param) |
| 2064 | 1862 |
| 2065 normal_response_cook_text += "".join(response_cook_list) | 1863 normal_response_cook_text += "".join(response_cook_list) |
| 2066 | 1864 |
| 2067 if len(normal_response_cook_text) != 0: | 1865 if len(normal_response_cook_text) != 0: |
| 2068 normal_response_cook_text = " if (!error.length()) {\n" +
normal_response_cook_text + " }" | 1866 normal_response_cook_text = " if (!error.length()) {\n" +
normal_response_cook_text + " }" |
| 2069 | 1867 |
| 2070 # Redirect to another agent's implementation. | 1868 # Redirect to another agent's implementation. |
| 2071 agent_field = "m_" + agent_field_name | 1869 agent_field = "m_" + agent_field_name |
| 2072 if "redirect" in json_command: | 1870 if "redirect" in json_command: |
| 2073 domain_fixes = DomainNameFixes.get_fixed_data(json_command.get("redi
rect")) | 1871 agent_field = "m_" + DomainNameFixes.get_fixed_data(json_command.get
("redirect")) |
| 2074 agent_field = "m_" + domain_fixes.agent_field_name | |
| 2075 | 1872 |
| 2076 Generator.backend_method_implementation_list.append(Templates.backend_me
thod.substitute(None, | 1873 Generator.backend_method_implementation_list.append(Templates.backend_me
thod.substitute(None, |
| 2077 domainName=domain_name, methodName=json_command_name, | 1874 domainName=domain_name, methodName=json_command_name, |
| 2078 agentField=agent_field, | 1875 agentField=agent_field, |
| 2079 methodCode="".join([method_in_code, method_out_code]), | 1876 methodCode="".join([method_in_code, method_out_code]), |
| 2080 agentCallParamsDeclaration="\n".join(agent_call_params_declaration_l
ist), | 1877 agentCallParamsDeclaration="\n".join(agent_call_params_declaration_l
ist), |
| 2081 agentCallParams=", ".join(agent_call_param_list), | 1878 agentCallParams=", ".join(agent_call_param_list), |
| 2082 requestMessageObject=request_message_param, | 1879 requestMessageObject=request_message_param, |
| 2083 responseCook=normal_response_cook_text, | 1880 responseCook=normal_response_cook_text, |
| 2084 sendResponseCallParams=", ".join(send_response_call_params_list), | 1881 sendResponseCallParams=", ".join(send_response_call_params_list), |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2204 def process_types(type_map): | 2001 def process_types(type_map): |
| 2205 output = Generator.type_builder_fragments | 2002 output = Generator.type_builder_fragments |
| 2206 | 2003 |
| 2207 class GenerateContext: | 2004 class GenerateContext: |
| 2208 validator_writer = Writer(Generator.validator_impl_list, "") | 2005 validator_writer = Writer(Generator.validator_impl_list, "") |
| 2209 cpp_writer = Writer(Generator.type_builder_impl_list, "") | 2006 cpp_writer = Writer(Generator.type_builder_impl_list, "") |
| 2210 | 2007 |
| 2211 def generate_all_domains_code(out, type_data_callback): | 2008 def generate_all_domains_code(out, type_data_callback): |
| 2212 writer = Writer(out, "") | 2009 writer = Writer(out, "") |
| 2213 for domain_data in type_map.domains(): | 2010 for domain_data in type_map.domains(): |
| 2214 domain_fixes = DomainNameFixes.get_fixed_data(domain_data.name()
) | |
| 2215 | |
| 2216 namespace_declared = [] | 2011 namespace_declared = [] |
| 2217 | 2012 |
| 2218 def namespace_lazy_generator(): | 2013 def namespace_lazy_generator(): |
| 2219 if not namespace_declared: | 2014 if not namespace_declared: |
| 2220 writer.newline("namespace ") | 2015 writer.newline("namespace ") |
| 2221 writer.append(domain_data.name()) | 2016 writer.append(domain_data.name()) |
| 2222 writer.append(" {\n") | 2017 writer.append(" {\n") |
| 2223 # What is a better way to change value from outer scope? | 2018 # What is a better way to change value from outer scope? |
| 2224 namespace_declared.append(True) | 2019 namespace_declared.append(True) |
| 2225 return writer | 2020 return writer |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2265 | 2060 |
| 2266 def fill_recursive(l): | 2061 def fill_recursive(l): |
| 2267 for item in l: | 2062 for item in l: |
| 2268 if isinstance(item, list): | 2063 if isinstance(item, list): |
| 2269 fill_recursive(item) | 2064 fill_recursive(item) |
| 2270 else: | 2065 else: |
| 2271 res.append(item) | 2066 res.append(item) |
| 2272 fill_recursive(input) | 2067 fill_recursive(input) |
| 2273 return res | 2068 return res |
| 2274 | 2069 |
| 2275 | |
| 2276 # A writer that only updates file if it actually changed to better support incre
mental build. | |
| 2277 class SmartOutput: | |
| 2278 def __init__(self, file_name): | |
| 2279 self.file_name_ = file_name | |
| 2280 self.output_ = "" | |
| 2281 | |
| 2282 def write(self, text): | |
| 2283 self.output_ += text | |
| 2284 | |
| 2285 def close(self): | |
| 2286 text_changed = True | |
| 2287 | |
| 2288 try: | |
| 2289 read_file = open(self.file_name_, "r") | |
| 2290 old_text = read_file.read() | |
| 2291 read_file.close() | |
| 2292 text_changed = old_text != self.output_ | |
| 2293 except: | |
| 2294 # Ignore, just overwrite by default | |
| 2295 pass | |
| 2296 | |
| 2297 if text_changed: | |
| 2298 out_file = open(self.file_name_, "w") | |
| 2299 out_file.write(self.output_) | |
| 2300 out_file.close() | |
| 2301 | |
| 2302 | |
| 2303 def output_file(file_name): | 2070 def output_file(file_name): |
| 2304 # For now, disable the incremental build optimisation in all cases. | 2071 return open(file_name, "w") |
| 2305 if False: | |
| 2306 return SmartOutput(file_name) | |
| 2307 else: | |
| 2308 return open(file_name, "w") | |
| 2309 | 2072 |
| 2310 | 2073 |
| 2311 Generator.go() | 2074 Generator.go() |
| 2312 | 2075 |
| 2313 backend_h_file = output_file(output_dirname + "/InspectorBackendDispatcher.h") | 2076 backend_h_file = output_file(output_dirname + "/InspectorBackendDispatcher.h") |
| 2314 backend_cpp_file = output_file(output_dirname + "/InspectorBackendDispatcher.cpp
") | 2077 backend_cpp_file = output_file(output_dirname + "/InspectorBackendDispatcher.cpp
") |
| 2315 | 2078 |
| 2316 frontend_h_file = output_file(output_dirname + "/InspectorFrontend.h") | 2079 frontend_h_file = output_file(output_dirname + "/InspectorFrontend.h") |
| 2317 frontend_cpp_file = output_file(output_dirname + "/InspectorFrontend.cpp") | 2080 frontend_cpp_file = output_file(output_dirname + "/InspectorFrontend.cpp") |
| 2318 | 2081 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2355 validatorIfdefName=VALIDATOR_IFDEF_NAME)) | 2118 validatorIfdefName=VALIDATOR_IFDEF_NAME)) |
| 2356 | 2119 |
| 2357 backend_h_file.close() | 2120 backend_h_file.close() |
| 2358 backend_cpp_file.close() | 2121 backend_cpp_file.close() |
| 2359 | 2122 |
| 2360 frontend_h_file.close() | 2123 frontend_h_file.close() |
| 2361 frontend_cpp_file.close() | 2124 frontend_cpp_file.close() |
| 2362 | 2125 |
| 2363 typebuilder_h_file.close() | 2126 typebuilder_h_file.close() |
| 2364 typebuilder_cpp_file.close() | 2127 typebuilder_cpp_file.close() |
| OLD | NEW |