from mojom.generate.template_expander import UseJinja
_kind_to_javascript_default_value = {
- mojom.BOOL: "false",
- mojom.INT8: "0",
- mojom.UINT8: "0",
- mojom.INT16: "0",
- mojom.UINT16: "0",
- mojom.INT32: "0",
- mojom.UINT32: "0",
- mojom.FLOAT: "0",
- mojom.HANDLE: "null",
- mojom.DCPIPE: "null",
- mojom.DPPIPE: "null",
- mojom.MSGPIPE: "null",
- mojom.SHAREDBUFFER: "null",
- mojom.INT64: "0",
- mojom.UINT64: "0",
- mojom.DOUBLE: "0",
- mojom.STRING: '""',
+ mojom.BOOL: "false",
+ mojom.INT8: "0",
+ mojom.UINT8: "0",
+ mojom.INT16: "0",
+ mojom.UINT16: "0",
+ mojom.INT32: "0",
+ mojom.UINT32: "0",
+ mojom.FLOAT: "0",
+ mojom.HANDLE: "null",
+ mojom.DCPIPE: "null",
+ mojom.DPPIPE: "null",
+ mojom.MSGPIPE: "null",
+ mojom.SHAREDBUFFER: "null",
+ mojom.NULLABLE_HANDLE: "null",
+ mojom.NULLABLE_DCPIPE: "null",
+ mojom.NULLABLE_DPPIPE: "null",
+ mojom.NULLABLE_MSGPIPE: "null",
+ mojom.NULLABLE_SHAREDBUFFER: "null",
+ mojom.INT64: "0",
+ mojom.UINT64: "0",
+ mojom.DOUBLE: "0",
+ mojom.STRING: '""',
+ mojom.NULLABLE_STRING: '""'
}
def JavaScriptDefaultValue(field):
if field.default:
- if isinstance(field.kind, mojom.Struct):
+ if mojom.IsStructKind(field.kind):
assert field.default == "default"
return "new %s()" % JavascriptType(field.kind)
return ExpressionToText(field.default)
if field.kind in mojom.PRIMITIVES:
return _kind_to_javascript_default_value[field.kind]
- if isinstance(field.kind, mojom.Struct):
+ if mojom.IsStructKind(field.kind):
return "null"
- if isinstance(field.kind, mojom.Array):
- return "[]"
- if isinstance(field.kind, mojom.Interface) or \
- isinstance(field.kind, mojom.InterfaceRequest):
+ if mojom.IsArrayKind(field.kind):
+ return "null"
+ if mojom.IsInterfaceKind(field.kind) or \
+ mojom.IsInterfaceRequestKind(field.kind):
return _kind_to_javascript_default_value[mojom.MSGPIPE]
- if isinstance(field.kind, mojom.Enum):
+ if mojom.IsEnumKind(field.kind):
return "0"
_kind_to_codec_type = {
- mojom.BOOL: "codec.Uint8",
- mojom.INT8: "codec.Int8",
- mojom.UINT8: "codec.Uint8",
- mojom.INT16: "codec.Int16",
- mojom.UINT16: "codec.Uint16",
- mojom.INT32: "codec.Int32",
- mojom.UINT32: "codec.Uint32",
- mojom.FLOAT: "codec.Float",
- mojom.HANDLE: "codec.Handle",
- mojom.DCPIPE: "codec.Handle",
- mojom.DPPIPE: "codec.Handle",
- mojom.MSGPIPE: "codec.Handle",
- mojom.SHAREDBUFFER: "codec.Handle",
- mojom.INT64: "codec.Int64",
- mojom.UINT64: "codec.Uint64",
- mojom.DOUBLE: "codec.Double",
- mojom.STRING: "codec.String",
+ mojom.BOOL: "codec.Uint8",
+ mojom.INT8: "codec.Int8",
+ mojom.UINT8: "codec.Uint8",
+ mojom.INT16: "codec.Int16",
+ mojom.UINT16: "codec.Uint16",
+ mojom.INT32: "codec.Int32",
+ mojom.UINT32: "codec.Uint32",
+ mojom.FLOAT: "codec.Float",
+ mojom.HANDLE: "codec.Handle",
+ mojom.DCPIPE: "codec.Handle",
+ mojom.DPPIPE: "codec.Handle",
+ mojom.MSGPIPE: "codec.Handle",
+ mojom.SHAREDBUFFER: "codec.Handle",
+ mojom.NULLABLE_HANDLE: "codec.Handle",
+ mojom.NULLABLE_DCPIPE: "codec.Handle",
+ mojom.NULLABLE_DPPIPE: "codec.Handle",
+ mojom.NULLABLE_MSGPIPE: "codec.Handle",
+ mojom.NULLABLE_SHAREDBUFFER: "codec.Handle",
+ mojom.INT64: "codec.Int64",
+ mojom.UINT64: "codec.Uint64",
+ mojom.DOUBLE: "codec.Double",
+ mojom.STRING: "codec.String",
+ mojom.NULLABLE_STRING: "codec.String",
}
def CodecType(kind):
if kind in mojom.PRIMITIVES:
return _kind_to_codec_type[kind]
- if isinstance(kind, mojom.Struct):
+ if mojom.IsStructKind(kind):
return "new codec.PointerTo(%s)" % CodecType(kind.name)
- if isinstance(kind, mojom.Array):
+ if mojom.IsArrayKind(kind) and mojom.IsBoolKind(kind.kind):
+ return "new codec.ArrayOf(new codec.ArrayOf(codec.PackedBool))"
+ if mojom.IsArrayKind(kind):
return "new codec.ArrayOf(%s)" % CodecType(kind.kind)
- if isinstance(kind, mojom.Interface) or \
- isinstance(kind, mojom.InterfaceRequest):
+ if mojom.IsInterfaceKind(kind) or mojom.IsInterfaceRequestKind(kind):
return CodecType(mojom.MSGPIPE)
- if isinstance(kind, mojom.Enum):
+ if mojom.IsEnumKind(kind):
return _kind_to_codec_type[mojom.INT32]
return kind
def JavaScriptDecodeSnippet(kind):
if kind in mojom.PRIMITIVES:
return "decodeStruct(%s)" % CodecType(kind)
- if isinstance(kind, mojom.Struct):
+ if mojom.IsStructKind(kind):
return "decodeStructPointer(%s)" % CodecType(kind.name)
- if isinstance(kind, mojom.Array):
+ if mojom.IsArrayKind(kind) and mojom.IsBoolKind(kind.kind):
+ return "decodeArrayPointer(new codec.ArrayOf(codec.PackedBool))"
+ if mojom.IsArrayKind(kind):
return "decodeArrayPointer(%s)" % CodecType(kind.kind)
- if isinstance(kind, mojom.Interface) or \
- isinstance(kind, mojom.InterfaceRequest):
+ if mojom.IsInterfaceKind(kind) or mojom.IsInterfaceRequestKind(kind):
return JavaScriptDecodeSnippet(mojom.MSGPIPE)
- if isinstance(kind, mojom.Enum):
+ if mojom.IsEnumKind(kind):
return JavaScriptDecodeSnippet(mojom.INT32)
def JavaScriptEncodeSnippet(kind):
if kind in mojom.PRIMITIVES:
return "encodeStruct(%s, " % CodecType(kind)
- if isinstance(kind, mojom.Struct):
+ if mojom.IsStructKind(kind):
return "encodeStructPointer(%s, " % CodecType(kind.name)
- if isinstance(kind, mojom.Array):
+ if mojom.IsArrayKind(kind) and mojom.IsBoolKind(kind.kind):
+ return "encodeArrayPointer(new codec.ArrayOf(codec.PackedBool), ";
+ if mojom.IsAnyArrayKind(kind):
return "encodeArrayPointer(%s, " % CodecType(kind.kind)
- if isinstance(kind, mojom.Interface) or \
- isinstance(kind, mojom.InterfaceRequest):
+ if mojom.IsInterfaceKind(kind) or mojom.IsInterfaceRequestKind(kind):
return JavaScriptEncodeSnippet(mojom.MSGPIPE)
- if isinstance(kind, mojom.Enum):
+ if mojom.IsEnumKind(kind):
return JavaScriptEncodeSnippet(mojom.INT32)