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 1869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1880 frontend_method_declaration_lines.append( | 1880 frontend_method_declaration_lines.append( |
1881 " void %s(%s);\n" % (event_name, ", ".join(decl_parameter_lis t))) | 1881 " void %s(%s);\n" % (event_name, ", ".join(decl_parameter_lis t))) |
1882 | 1882 |
1883 class EventMethodStructTemplate: | 1883 class EventMethodStructTemplate: |
1884 @staticmethod | 1884 @staticmethod |
1885 def append_prolog(line_list): | 1885 def append_prolog(line_list): |
1886 line_list.append(" RefPtr<JSONObject> paramsObject = JSONObject:: create();\n") | 1886 line_list.append(" RefPtr<JSONObject> paramsObject = JSONObject:: create();\n") |
1887 | 1887 |
1888 @staticmethod | 1888 @staticmethod |
1889 def append_epilog(line_list): | 1889 def append_epilog(line_list): |
1890 line_list.append(" jsonMessage->setObject(\"params\", paramsObjec t);\n") | 1890 line_list.append(" jsonMessage->setObject(\"params\", paramsObjec t);\n") |
aandrey
2014/06/10 14:50:41
more improvements: paramsObject -> paramsObject.re
| |
1891 | 1891 |
1892 container_name = "paramsObject" | 1892 container_name = "paramsObject" |
1893 | 1893 |
1894 @staticmethod | 1894 @staticmethod |
1895 def process_command(json_command, domain_name, agent_field_name, agent_inter face_name): | 1895 def process_command(json_command, domain_name, agent_field_name, agent_inter face_name): |
1896 if (("handlers" in json_command) and (not ("renderer" in json_command["h andlers"]))): | 1896 if (("handlers" in json_command) and (not ("renderer" in json_command["h andlers"]))): |
1897 return | 1897 return |
1898 | 1898 |
1899 json_command_name = json_command["name"] | 1899 json_command_name = json_command["name"] |
1900 | 1900 |
1901 cmd_enum_name = "k%s_%sCmd" % (domain_name, json_command["name"]) | 1901 cmd_enum_name = "k%s_%sCmd" % (domain_name, json_command["name"]) |
1902 | 1902 |
1903 Generator.method_name_enum_list.append(" %s," % cmd_enum_name) | 1903 Generator.method_name_enum_list.append(" %s," % cmd_enum_name) |
1904 Generator.method_handler_list.append(" &InspectorBackendDispa tcherImpl::%s_%s," % (domain_name, json_command_name)) | 1904 Generator.method_handler_list.append(" &InspectorBackendDispa tcherImpl::%s_%s," % (domain_name, json_command_name)) |
1905 Generator.backend_method_declaration_list.append(" void %s_%s(long ca llId, JSONObject* requestMessageObject, JSONArray* protocolErrors);" % (domain_n ame, json_command_name)) | 1905 Generator.backend_method_declaration_list.append(" void %s_%s(long ca llId, JSONObject* requestMessageObject, JSONArray* protocolErrors);" % (domain_n ame, json_command_name)) |
1906 | 1906 |
1907 backend_agent_interface_list = [] if "redirect" in json_command else Gen erator.backend_agent_interface_list | 1907 backend_agent_interface_list = [] if "redirect" in json_command else Gen erator.backend_agent_interface_list |
1908 | 1908 |
1909 ad_hoc_type_output = [] | 1909 ad_hoc_type_output = [] |
1910 backend_agent_interface_list.append(ad_hoc_type_output) | 1910 backend_agent_interface_list.append(ad_hoc_type_output) |
1911 ad_hoc_type_writer = Writer(ad_hoc_type_output, " ") | 1911 ad_hoc_type_writer = Writer(ad_hoc_type_output, " ") |
1912 | 1912 |
1913 backend_agent_interface_list.append(" virtual void %s(ErrorString *" % json_command_name) | 1913 backend_agent_interface_list.append(" virtual void %s(ErrorString *" % json_command_name) |
1914 | 1914 |
1915 method_in_code = "" | 1915 method_in_code = "" |
1916 method_out_code = "" | 1916 method_out_code = "" |
1917 result_object_declaration = "" | 1917 result_object_declaration = "" |
1918 agent_call_param_list = [] | 1918 agent_call_param_list = ["&error"] |
1919 agent_call_params_declaration_list = [" ErrorString error;"] | |
1919 send_response_call_params_list = ["error"] | 1920 send_response_call_params_list = ["error"] |
1920 request_message_param = "" | 1921 request_message_param = "" |
1921 normal_response_cook_text = "" | 1922 normal_response_cook_text = "" |
1922 error_type_binding = None | 1923 error_type_binding = None |
1923 if "error" in json_command: | 1924 if "error" in json_command: |
1924 json_error = json_command["error"] | 1925 json_error = json_command["error"] |
1925 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 + "::") | 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 + "::") |
1926 error_type_model = error_type_binding.get_type_model().get_optional( ) | 1927 error_type_model = error_type_binding.get_type_model().get_optional( ) |
1927 error_annotated_type = error_type_model.get_command_return_pass_mode l().get_output_parameter_type() | 1928 error_annotated_type = error_type_model.get_command_return_pass_mode l().get_output_parameter_type() |
1928 agent_call_param_list.append(", %serrorData" % error_type_model.get_ command_return_pass_model().get_output_argument_prefix()) | 1929 agent_call_param_list.append("%serrorData" % error_type_model.get_co mmand_return_pass_model().get_output_argument_prefix()) |
1929 backend_agent_interface_list.append(", %s errorData" % error_annotat ed_type) | 1930 backend_agent_interface_list.append(", %s errorData" % error_annotat ed_type) |
1930 method_in_code += " %s errorData;\n" % error_type_model.get_comma nd_return_pass_model().get_return_var_type() | 1931 method_in_code += " %s errorData;\n" % error_type_model.get_comma nd_return_pass_model().get_return_var_type() |
1931 send_response_call_params_list.append("errorData") | 1932 send_response_call_params_list.append("errorData") |
1932 | 1933 |
1933 if "parameters" in json_command: | 1934 if "parameters" in json_command: |
1934 json_params = json_command["parameters"] | 1935 json_params = json_command["parameters"] |
1935 request_message_param = " requestMessageObject" | 1936 request_message_param = " requestMessageObject" |
1936 | 1937 |
1937 if json_params: | 1938 if json_params: |
1938 method_in_code += Templates.param_container_access_code | 1939 method_in_code += Templates.param_container_access_code |
1939 | 1940 |
1940 for json_parameter in json_params: | 1941 for json_parameter in json_params: |
1941 json_param_name = json_parameter["name"] | 1942 json_param_name = json_parameter["name"] |
1942 param_raw_type = resolve_param_raw_type(json_parameter, domain_n ame) | 1943 param_raw_type = resolve_param_raw_type(json_parameter, domain_n ame) |
1943 | 1944 |
1944 getter_name = param_raw_type.get_getter_name() | 1945 getter_name = param_raw_type.get_getter_name() |
1945 | 1946 |
1946 optional = json_parameter.get("optional") | 1947 optional = json_parameter.get("optional") |
1947 | 1948 |
1948 non_optional_type_model = param_raw_type.get_raw_type_model() | 1949 non_optional_type_model = param_raw_type.get_raw_type_model() |
1949 if optional: | 1950 if optional: |
1950 type_model = non_optional_type_model.get_optional() | 1951 type_model = non_optional_type_model.get_optional() |
1951 else: | 1952 else: |
1952 type_model = non_optional_type_model | 1953 type_model = non_optional_type_model |
1953 | 1954 |
1954 if optional: | 1955 if optional: |
1955 code = (" bool %s_valueFound = false;\n" | 1956 code = (" bool %s_valueFound = false;\n" |
1956 " %s in_%s = get%s(paramsContainerPtr, \"%s\", &% s_valueFound, protocolErrors);\n" % | 1957 " %s in_%s = get%s(paramsContainerPtr, \"%s\", &% s_valueFound, protocolErrors);\n" % |
1957 (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)) | 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)) |
1958 param = ", %s_valueFound ? &in_%s : 0" % (json_param_name, j son_param_name) | 1959 param = "%s_valueFound ? &in_%s : 0" % (json_param_name, jso n_param_name) |
1959 # FIXME: pass optional refptr-values as PassRefPtr | 1960 # FIXME: pass optional refptr-values as PassRefPtr |
1960 formal_param_type_pattern = "const %s*" | 1961 formal_param_type_pattern = "const %s*" |
1961 else: | 1962 else: |
1962 code = (" %s in_%s = get%s(paramsContainerPtr, \"%s\", 0, protocolErrors);\n" % | 1963 code = (" %s in_%s = get%s(paramsContainerPtr, \"%s\", 0, protocolErrors);\n" % |
1963 (non_optional_type_model.get_command_return_pass_mod el().get_return_var_type(), json_param_name, getter_name, json_param_name)) | 1964 (non_optional_type_model.get_command_return_pass_mod el().get_return_var_type(), json_param_name, getter_name, json_param_name)) |
1964 param = ", in_%s" % json_param_name | 1965 param = "in_%s" % json_param_name |
1965 # FIXME: pass not-optional refptr-values as NonNullPassRefPt r | 1966 # FIXME: pass not-optional refptr-values as NonNullPassRefPt r |
1966 if param_raw_type.is_heavy_value(): | 1967 if param_raw_type.is_heavy_value(): |
1967 formal_param_type_pattern = "const %s&" | 1968 formal_param_type_pattern = "const %s&" |
1968 else: | 1969 else: |
1969 formal_param_type_pattern = "%s" | 1970 formal_param_type_pattern = "%s" |
1970 | 1971 |
1971 method_in_code += code | 1972 method_in_code += code |
1972 agent_call_param_list.append(param) | 1973 agent_call_param_list.append(param) |
1973 backend_agent_interface_list.append(", %s in_%s" % (formal_param _type_pattern % non_optional_type_model.get_command_return_pass_model().get_retu rn_var_type(), json_param_name)) | 1974 backend_agent_interface_list.append(", %s in_%s" % (formal_param _type_pattern % non_optional_type_model.get_command_return_pass_model().get_retu rn_var_type(), json_param_name)) |
1974 | 1975 |
(...skipping 27 matching lines...) Expand all Loading... | |
2002 | 2003 |
2003 Generator.backend_method_implementation_list.append(Templates.ca llback_failure_method.substitute(None, | 2004 Generator.backend_method_implementation_list.append(Templates.ca llback_failure_method.substitute(None, |
2004 agentName=agent_interface_name, | 2005 agentName=agent_interface_name, |
2005 callbackName=callback_name, | 2006 callbackName=callback_name, |
2006 parameter=annotated_type + " errorData", | 2007 parameter=annotated_type + " errorData", |
2007 argument=assigment_value)) | 2008 argument=assigment_value)) |
2008 | 2009 |
2009 ad_hoc_type_output.append(callback_output) | 2010 ad_hoc_type_output.append(callback_output) |
2010 | 2011 |
2011 method_out_code += " RefPtr<" + agent_interface_name + "::" + cal lback_name + "> callback = adoptRef(new " + agent_interface_name + "::" + callba ck_name + "(this, callId));\n" | 2012 method_out_code += " RefPtr<" + agent_interface_name + "::" + cal lback_name + "> callback = adoptRef(new " + agent_interface_name + "::" + callba ck_name + "(this, callId));\n" |
2012 agent_call_param_list.append(", callback") | 2013 agent_call_param_list.append("callback") |
2013 normal_response_cook_text += " if (!error.length()) \n" | 2014 normal_response_cook_text += " if (!error.length()) \n" |
2014 normal_response_cook_text += " return;\n" | 2015 normal_response_cook_text += " return;\n" |
2015 normal_response_cook_text += " callback->disable();\n" | 2016 normal_response_cook_text += " callback->disable();\n" |
2016 backend_agent_interface_list.append(", PassRefPtr<%s> callback" % ca llback_name) | 2017 backend_agent_interface_list.append(", PassRefPtr<%s> callback" % ca llback_name) |
2017 else: | 2018 else: |
2018 if "returns" in json_command: | 2019 if "returns" in json_command: |
2019 method_out_code += "\n" | 2020 method_out_code += "\n" |
2020 result_object_declaration = "\n RefPtr<JSONObject> result = J SONObject::create();" | 2021 agent_call_params_declaration_list.append(" RefPtr<JSONObject > result = JSONObject::create();") |
2021 send_response_call_params_list.append("result") | 2022 send_response_call_params_list.append("result") |
aandrey
2014/06/10 14:50:41
more improvements: result -> result.release()
| |
2022 response_cook_list = [] | 2023 response_cook_list = [] |
2023 for json_return in json_command["returns"]: | 2024 for json_return in json_command["returns"]: |
2024 | 2025 |
2025 json_return_name = json_return["name"] | 2026 json_return_name = json_return["name"] |
2026 | 2027 |
2027 optional = bool(json_return.get("optional")) | 2028 optional = bool(json_return.get("optional")) |
2028 | 2029 |
2029 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 + "::") | 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 + "::") |
2030 | 2031 |
2031 raw_type = return_type_binding.reduce_to_raw_type() | 2032 raw_type = return_type_binding.reduce_to_raw_type() |
2032 setter_type = raw_type.get_setter_name() | 2033 setter_type = raw_type.get_setter_name() |
2033 initializer = raw_type.get_c_initializer() | 2034 initializer = raw_type.get_c_initializer() |
2034 | 2035 |
2035 type_model = return_type_binding.get_type_model() | 2036 type_model = return_type_binding.get_type_model() |
2036 if optional: | 2037 if optional: |
2037 type_model = type_model.get_optional() | 2038 type_model = type_model.get_optional() |
2038 | 2039 |
2039 code = " %s out_%s;\n" % (type_model.get_command_return_p ass_model().get_return_var_type(), json_return_name) | 2040 code = " %s out_%s;\n" % (type_model.get_command_return_p ass_model().get_return_var_type(), json_return_name) |
2040 param = ", %sout_%s" % (type_model.get_command_return_pass_m odel().get_output_argument_prefix(), json_return_name) | 2041 param = "%sout_%s" % (type_model.get_command_return_pass_mod el().get_output_argument_prefix(), json_return_name) |
2041 var_name = "out_%s" % json_return_name | 2042 var_name = "out_%s" % json_return_name |
2042 setter_argument = type_model.get_command_return_pass_model() .get_output_to_raw_expression() % var_name | 2043 setter_argument = type_model.get_command_return_pass_model() .get_output_to_raw_expression() % var_name |
2043 if return_type_binding.get_setter_value_expression_pattern() : | 2044 if return_type_binding.get_setter_value_expression_pattern() : |
2044 setter_argument = return_type_binding.get_setter_value_e xpression_pattern() % setter_argument | 2045 setter_argument = return_type_binding.get_setter_value_e xpression_pattern() % setter_argument |
2045 | 2046 |
2046 cook = " result->set%s(\"%s\", %s);\n" % (setter_type , json_return_name, | 2047 cook = " result->set%s(\"%s\", %s);\n" % (setter_type , json_return_name, |
2047 setter_ argument) | 2048 setter_ argument) |
2048 | 2049 |
2049 set_condition_pattern = type_model.get_command_return_pass_m odel().get_set_return_condition() | 2050 set_condition_pattern = type_model.get_command_return_pass_m odel().get_set_return_condition() |
2050 if set_condition_pattern: | 2051 if set_condition_pattern: |
(...skipping 17 matching lines...) Expand all Loading... | |
2068 | 2069 |
2069 # Redirect to another agent's implementation. | 2070 # Redirect to another agent's implementation. |
2070 agent_field = "m_" + agent_field_name | 2071 agent_field = "m_" + agent_field_name |
2071 if "redirect" in json_command: | 2072 if "redirect" in json_command: |
2072 domain_fixes = DomainNameFixes.get_fixed_data(json_command.get("redi rect")) | 2073 domain_fixes = DomainNameFixes.get_fixed_data(json_command.get("redi rect")) |
2073 agent_field = "m_" + domain_fixes.agent_field_name | 2074 agent_field = "m_" + domain_fixes.agent_field_name |
2074 | 2075 |
2075 Generator.backend_method_implementation_list.append(Templates.backend_me thod.substitute(None, | 2076 Generator.backend_method_implementation_list.append(Templates.backend_me thod.substitute(None, |
2076 domainName=domain_name, methodName=json_command_name, | 2077 domainName=domain_name, methodName=json_command_name, |
2077 agentField=agent_field, | 2078 agentField=agent_field, |
2078 methodCode="".join([method_in_code, method_out_code, result_object_d eclaration]), | 2079 methodCode="".join([method_in_code, method_out_code]), |
2079 agentCallParams="".join(agent_call_param_list), | 2080 agentCallParamsDeclaration="\n".join(agent_call_params_declaration_l ist), |
2081 agentCallParams=", ".join(agent_call_param_list), | |
2080 requestMessageObject=request_message_param, | 2082 requestMessageObject=request_message_param, |
2081 responseCook=normal_response_cook_text, | 2083 responseCook=normal_response_cook_text, |
2082 sendResponseCallParams=", ".join(send_response_call_params_list), | 2084 sendResponseCallParams=", ".join(send_response_call_params_list), |
2083 commandNameIndex=cmd_enum_name)) | 2085 commandNameIndex=cmd_enum_name)) |
2084 declaration_command_name = "%s.%s\\0" % (domain_name, json_command_name) | 2086 declaration_command_name = "%s.%s\\0" % (domain_name, json_command_name) |
2085 Generator.backend_method_name_declaration_list.append(" \"%s\"" % dec laration_command_name) | 2087 Generator.backend_method_name_declaration_list.append(" \"%s\"" % dec laration_command_name) |
2086 Generator.backend_method_name_declaration_index_list.append(" %d," % Generator.backend_method_name_declaration_current_index) | 2088 Generator.backend_method_name_declaration_index_list.append(" %d," % Generator.backend_method_name_declaration_current_index) |
2087 Generator.backend_method_name_declaration_current_index += len(declarati on_command_name) - 1 | 2089 Generator.backend_method_name_declaration_current_index += len(declarati on_command_name) - 1 |
2088 | 2090 |
2089 backend_agent_interface_list.append(") = 0;\n") | 2091 backend_agent_interface_list.append(") = 0;\n") |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2353 validatorIfdefName=VALIDATOR_IFDEF_NAME)) | 2355 validatorIfdefName=VALIDATOR_IFDEF_NAME)) |
2354 | 2356 |
2355 backend_h_file.close() | 2357 backend_h_file.close() |
2356 backend_cpp_file.close() | 2358 backend_cpp_file.close() |
2357 | 2359 |
2358 frontend_h_file.close() | 2360 frontend_h_file.close() |
2359 frontend_cpp_file.close() | 2361 frontend_cpp_file.close() |
2360 | 2362 |
2361 typebuilder_h_file.close() | 2363 typebuilder_h_file.close() |
2362 typebuilder_cpp_file.close() | 2364 typebuilder_cpp_file.close() |
OLD | NEW |