| # Copyright (c) 2016 The Chromium Embedded Framework Authors. All rights |
| # reserved. Use of this source code is governed by a BSD-style license that |
| # can be found in the LICENSE file. |
| |
| from __future__ import absolute_import |
| from cef_parser import * |
| from make_ctocpp_impl import * |
| |
| |
| def make_views_function_stub_impl(clsname, func): |
| name = func.get_name() |
| |
| # Build the C++ prototype. |
| parts = func.get_cpp_parts(True) |
| result = make_ctocpp_impl_proto(clsname, name, func, parts) + ' {' |
| |
| # Retrieve the function return value. |
| retval = func.get_retval() |
| retval_type = retval.get_retval_type() |
| if retval_type == 'invalid': |
| notify(name + ' could not be autogenerated') |
| # Code could not be auto-generated. |
| result += '\n // COULD NOT IMPLEMENT DUE TO: (return value)' |
| result += '\n #pragma message("Warning: "__FILE__": ' + name + ' is not implemented")' |
| retval_default = '' |
| else: |
| retval_default = retval.get_retval_default(False) |
| |
| result += '\n NOTIMPLEMENTED();' |
| if retval_default != '': |
| result += '\n return ' + retval_default + ';' |
| |
| result += '\n}\n\n' |
| |
| return result |
| |
| |
| def make_views_class_stub_impl(header, cls): |
| impl = '' |
| |
| clsname = cls.get_name() |
| funcs = cls.get_static_funcs() |
| for func in funcs: |
| impl += make_views_function_stub_impl(clsname, func) |
| |
| return impl |
| |
| |
| def make_views_stub_impl(header): |
| includes = '' |
| impl = '' |
| |
| allclasses = header.get_classes() |
| for cls in allclasses: |
| dir = cls.get_file_directory() |
| # Only process files in the views/ directory. |
| if dir != None and dir.find('views') == 0: |
| cls_impl = make_views_class_stub_impl(header, cls) |
| if cls_impl != '': |
| impl += cls_impl |
| includes += '#include "include/' + cls.get_file_name() + '"\n' |
| |
| includes += '\n#include "base/logging.h"\n' |
| |
| # Build the final output. |
| result = get_copyright() + includes |
| result += '\n\n// STATIC STUB METHODS - Do not edit by hand.\n\n' |
| result += impl |
| return result |
| |
| |
| def write_views_stub_impl(header, file): |
| newcontents = make_views_stub_impl(header) |
| return (file, newcontents) |
| |
| |
| # Test the module. |
| if __name__ == "__main__": |
| import sys |
| |
| # Verify that the correct number of command-line arguments are provided. |
| if len(sys.argv) < 2: |
| sys.stderr.write('Usage: ' + sys.argv[0] + ' <cpp_header_dir>\n') |
| sys.exit() |
| |
| cpp_header_dir = sys.argv[1] |
| |
| # Create the header object. Should match the logic in translator.py. |
| header = obj_header() |
| header.set_root_directory(cpp_header_dir) |
| excluded_files = ['cef_api_hash.h', 'cef_application_mac.h', 'cef_version.h'] |
| header.add_directory(cpp_header_dir, excluded_files) |
| header.add_directory(os.path.join(cpp_header_dir, 'views')) |
| |
| # Dump the result to stdout. |
| sys.stdout.write(make_views_stub_impl(header)) |