| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 """Generates a JSON typemap from its command-line arguments and dependencies. | 5 """Generates a JSON typemap from its command-line arguments and dependencies. |
| 6 | 6 |
| 7 Each typemap should be specified in an command-line argument of the form | 7 Each typemap should be specified in an command-line argument of the form |
| 8 key=value, with an argument of "--start-typemap" preceding each typemap. | 8 key=value, with an argument of "--start-typemap" preceding each typemap. |
| 9 | 9 |
| 10 For example, | 10 For example, |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 attributes = [] | 100 attributes = [] |
| 101 if match_result.group(3): | 101 if match_result.group(3): |
| 102 attributes = match_result.group(3).split(',') | 102 attributes = match_result.group(3).split(',') |
| 103 | 103 |
| 104 assert mojom_type not in result, ( | 104 assert mojom_type not in result, ( |
| 105 "Cannot map multiple native types (%s, %s) to the same mojom type: %s" % | 105 "Cannot map multiple native types (%s, %s) to the same mojom type: %s" % |
| 106 (result[mojom_type]['typename'], native_type, mojom_type)) | 106 (result[mojom_type]['typename'], native_type, mojom_type)) |
| 107 | 107 |
| 108 result[mojom_type] = { | 108 result[mojom_type] = { |
| 109 'typename': native_type, | 109 'typename': native_type, |
| 110 'non_copyable_non_movable': 'non_copyable_non_movable' in attributes, |
| 110 'move_only': 'move_only' in attributes, | 111 'move_only': 'move_only' in attributes, |
| 111 'copyable_pass_by_value': 'copyable_pass_by_value' in attributes, | 112 'copyable_pass_by_value': 'copyable_pass_by_value' in attributes, |
| 112 'nullable_is_same_type': 'nullable_is_same_type' in attributes, | 113 'nullable_is_same_type': 'nullable_is_same_type' in attributes, |
| 113 'hashable': 'hashable' in attributes, | 114 'hashable': 'hashable' in attributes, |
| 114 'public_headers': values['public_headers'], | 115 'public_headers': values['public_headers'], |
| 115 'traits_headers': values['traits_headers'], | 116 'traits_headers': values['traits_headers'], |
| 116 } | 117 } |
| 117 return result | 118 return result |
| 118 | 119 |
| 119 | 120 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 138 if missing: | 139 if missing: |
| 139 raise IOError('Missing dependencies: %s' % ', '.join(missing)) | 140 raise IOError('Missing dependencies: %s' % ', '.join(missing)) |
| 140 for path in params.dependency: | 141 for path in params.dependency: |
| 141 typemaps.update(ReadTypemap(path)) | 142 typemaps.update(ReadTypemap(path)) |
| 142 with open(params.output, 'w') as f: | 143 with open(params.output, 'w') as f: |
| 143 json.dump({'c++': typemaps}, f, indent=2) | 144 json.dump({'c++': typemaps}, f, indent=2) |
| 144 | 145 |
| 145 | 146 |
| 146 if __name__ == '__main__': | 147 if __name__ == '__main__': |
| 147 main() | 148 main() |
| OLD | NEW |