OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Generates C++ source files from a mojom.Module.""" | 5 """Generates C++ source files from a mojom.Module.""" |
6 | 6 |
7 import mojom.generate.generator as generator | 7 import mojom.generate.generator as generator |
8 import mojom.generate.module as mojom | 8 import mojom.generate.module as mojom |
9 import mojom.generate.pack as pack | 9 import mojom.generate.pack as pack |
10 from mojom.generate.template_expander import UseJinja | 10 from mojom.generate.template_expander import UseJinja |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 else: | 393 else: |
394 suffix = "-%s" % self.variant if self.variant else "" | 394 suffix = "-%s" % self.variant if self.variant else "" |
395 self.Write(self._GenerateModuleHeader(), | 395 self.Write(self._GenerateModuleHeader(), |
396 "%s%s.h" % (self.module.path, suffix)) | 396 "%s%s.h" % (self.module.path, suffix)) |
397 self.Write(self._GenerateModuleSource(), | 397 self.Write(self._GenerateModuleSource(), |
398 "%s%s.cc" % (self.module.path, suffix)) | 398 "%s%s.cc" % (self.module.path, suffix)) |
399 | 399 |
400 def _ConstantValue(self, constant): | 400 def _ConstantValue(self, constant): |
401 return self._ExpressionToText(constant.value, kind=constant.kind) | 401 return self._ExpressionToText(constant.value, kind=constant.kind) |
402 | 402 |
403 # TODO(yzshen): Revisit the default value feature. It was designed prior to | |
404 # custom type mapping. | |
405 def _DefaultValue(self, field): | 403 def _DefaultValue(self, field): |
406 if field.default: | 404 if not field.default: |
407 if mojom.IsStructKind(field.kind): | 405 return "" |
408 assert field.default == "default" | 406 |
409 if not self._IsTypemappedKind(field.kind): | 407 if mojom.IsStructKind(field.kind): |
410 return "%s::New()" % self._GetNameForKind(field.kind) | 408 assert field.default == "default" |
411 return self._ExpressionToText(field.default, kind=field.kind) | 409 if self._IsTypemappedKind(field.kind): |
412 return "" | 410 return "" |
| 411 return "%s::New()" % self._GetNameForKind(field.kind) |
| 412 |
| 413 expression = self._ExpressionToText(field.default, kind=field.kind) |
| 414 if mojom.IsEnumKind(field.kind) and self._IsTypemappedKind(field.kind): |
| 415 expression = "mojo::internal::ConvertEnumValue<%s, %s>(%s)" % ( |
| 416 self._GetNameForKind(field.kind), self._GetCppWrapperType(field.kind), |
| 417 expression) |
| 418 return expression |
413 | 419 |
414 def _GetNameForKind(self, kind, internal=False, flatten_nested_kind=False, | 420 def _GetNameForKind(self, kind, internal=False, flatten_nested_kind=False, |
415 add_same_module_namespaces=False): | 421 add_same_module_namespaces=False): |
416 return _NameFormatter(kind, self.variant).FormatForCpp( | 422 return _NameFormatter(kind, self.variant).FormatForCpp( |
417 internal=internal, flatten_nested_kind=flatten_nested_kind, | 423 internal=internal, flatten_nested_kind=flatten_nested_kind, |
418 omit_namespace_for_module = (None if add_same_module_namespaces | 424 omit_namespace_for_module = (None if add_same_module_namespaces |
419 else self.module)) | 425 else self.module)) |
420 | 426 |
421 def _GetQualifiedNameForKind(self, kind, internal=False, | 427 def _GetQualifiedNameForKind(self, kind, internal=False, |
422 flatten_nested_kind=False, include_variant=True): | 428 flatten_nested_kind=False, include_variant=True): |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
795 if mojom.IsDataPipeProducerKind(kind): | 801 if mojom.IsDataPipeProducerKind(kind): |
796 return "mojo::ScopedDataPipeProducerHandle" | 802 return "mojo::ScopedDataPipeProducerHandle" |
797 if mojom.IsMessagePipeKind(kind): | 803 if mojom.IsMessagePipeKind(kind): |
798 return "mojo::ScopedMessagePipeHandle" | 804 return "mojo::ScopedMessagePipeHandle" |
799 if mojom.IsSharedBufferKind(kind): | 805 if mojom.IsSharedBufferKind(kind): |
800 return "mojo::ScopedSharedBufferHandle" | 806 return "mojo::ScopedSharedBufferHandle" |
801 return _kind_to_cpp_type[kind] | 807 return _kind_to_cpp_type[kind] |
802 | 808 |
803 def _GetUnmappedTypeForSerializer(self, kind): | 809 def _GetUnmappedTypeForSerializer(self, kind): |
804 return self._GetCppDataViewType(kind, qualified=True) | 810 return self._GetCppDataViewType(kind, qualified=True) |
OLD | NEW |