blob: 6f8b99f4413efb3a4509fe38c3b2d92ab07ebfc3 [file] [log] [blame]
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This was generated (and can be regenerated) by pasting
# zircon/system/host/fidl/schema.json from Fuchsia into
# https://app.quicktype.io and choosing Python 2.7 output. The only manual
# change is to modify the import path for Enum.
from third_party.enum34 import Enum
def from_str(x):
assert isinstance(x, (str, unicode))
return x
def from_int(x):
assert isinstance(x, int) and not isinstance(x, bool)
return x
def from_none(x):
assert x is None
return x
def from_union(fs, x):
for f in fs:
try:
return f(x)
except:
pass
assert False
def from_bool(x):
assert isinstance(x, bool)
return x
def to_class(c, x):
assert isinstance(x, c)
return x.to_dict()
def to_enum(c, x):
assert isinstance(x, c)
return x.value
def from_list(f, x):
assert isinstance(x, list)
return [f(y) for y in x]
def from_dict(f, x):
assert isinstance(x, dict)
return { k: f(v) for (k, v) in x.items() }
class Attribute:
def __init__(self, name, value):
self.name = name
self.value = value
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
name = from_str(obj.get(u"name"))
value = from_str(obj.get(u"value"))
return Attribute(name, value)
def to_dict(self):
result = {}
result[u"name"] = from_str(self.name)
result[u"value"] = from_str(self.value)
return result
class TypeKind(Enum):
ARRAY = u"array"
HANDLE = u"handle"
IDENTIFIER = u"identifier"
PRIMITIVE = u"primitive"
REQUEST = u"request"
STRING = u"string"
VECTOR = u"vector"
class TypeClass:
def __init__(self, element_count, element_type, kind, maybe_element_count, nullable, subtype, identifier):
self.element_count = element_count
self.element_type = element_type
self.kind = kind
self.maybe_element_count = maybe_element_count
self.nullable = nullable
self.subtype = subtype
self.identifier = identifier
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
element_count = from_union([from_int, from_none], obj.get(u"element_count"))
element_type = from_union([TypeClass.from_dict, from_none], obj.get(u"element_type"))
kind = TypeKind(obj.get(u"kind"))
maybe_element_count = from_union([from_int, from_none], obj.get(u"maybe_element_count"))
nullable = from_union([from_bool, from_none], obj.get(u"nullable"))
subtype = from_union([from_str, from_none], obj.get(u"subtype"))
identifier = from_union([from_str, from_none], obj.get(u"identifier"))
return TypeClass(element_count, element_type, kind, maybe_element_count, nullable, subtype, identifier)
def to_dict(self):
result = {}
result[u"element_count"] = from_union([from_int, from_none], self.element_count)
result[u"element_type"] = from_union([lambda x: to_class(TypeClass, x), from_none], self.element_type)
result[u"kind"] = to_enum(TypeKind, self.kind)
result[u"maybe_element_count"] = from_union([from_int, from_none], self.maybe_element_count)
result[u"nullable"] = from_union([from_bool, from_none], self.nullable)
result[u"subtype"] = from_union([from_str, from_none], self.subtype)
result[u"identifier"] = from_union([from_str, from_none], self.identifier)
return result
class ConstantKind(Enum):
IDENTIFIER = u"identifier"
LITERAL = u"literal"
class LiteralKind(Enum):
DEFAULT = u"default"
FALSE = u"false"
NUMERIC = u"numeric"
STRING = u"string"
TRUE = u"true"
class Literal:
def __init__(self, kind, value):
self.kind = kind
self.value = value
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
kind = LiteralKind(obj.get(u"kind"))
value = from_union([from_str, from_none], obj.get(u"value"))
return Literal(kind, value)
def to_dict(self):
result = {}
result[u"kind"] = to_enum(LiteralKind, self.kind)
result[u"value"] = from_union([from_str, from_none], self.value)
return result
class Constant:
def __init__(self, identifier, kind, literal):
self.identifier = identifier
self.kind = kind
self.literal = literal
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
identifier = from_union([from_str, from_none], obj.get(u"identifier"))
kind = ConstantKind(obj.get(u"kind"))
literal = from_union([Literal.from_dict, from_none], obj.get(u"literal"))
return Constant(identifier, kind, literal)
def to_dict(self):
result = {}
result[u"identifier"] = from_union([from_str, from_none], self.identifier)
result[u"kind"] = to_enum(ConstantKind, self.kind)
result[u"literal"] = from_union([lambda x: to_class(Literal, x), from_none], self.literal)
return result
class Const:
def __init__(self, maybe_attributes, name, type, value):
self.maybe_attributes = maybe_attributes
self.name = name
self.type = type
self.value = value
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
maybe_attributes = from_union([lambda x: from_list(Attribute.from_dict, x), from_none], obj.get(u"maybe_attributes"))
name = from_str(obj.get(u"name"))
type = TypeClass.from_dict(obj.get(u"type"))
value = Constant.from_dict(obj.get(u"value"))
return Const(maybe_attributes, name, type, value)
def to_dict(self):
result = {}
result[u"maybe_attributes"] = from_union([lambda x: from_list(lambda x: to_class(Attribute, x), x), from_none], self.maybe_attributes)
result[u"name"] = from_str(self.name)
result[u"type"] = to_class(TypeClass, self.type)
result[u"value"] = to_class(Constant, self.value)
return result
class DeclarationsMap(Enum):
CONST = u"const"
ENUM = u"enum"
INTERFACE = u"interface"
STRUCT = u"struct"
UNION = u"union"
class EnumMember:
def __init__(self, name, value):
self.name = name
self.value = value
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
name = from_str(obj.get(u"name"))
value = Constant.from_dict(obj.get(u"value"))
return EnumMember(name, value)
def to_dict(self):
result = {}
result[u"name"] = from_str(self.name)
result[u"value"] = to_class(Constant, self.value)
return result
class IntegerType(Enum):
INT16 = u"int16"
INT32 = u"int32"
INT64 = u"int64"
INT8 = u"int8"
UINT16 = u"uint16"
UINT32 = u"uint32"
UINT64 = u"uint64"
UINT8 = u"uint8"
class EnumDeclarationElement:
def __init__(self, maybe_attributes, members, name, type):
self.maybe_attributes = maybe_attributes
self.members = members
self.name = name
self.type = type
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
maybe_attributes = from_union([lambda x: from_list(Attribute.from_dict, x), from_none], obj.get(u"maybe_attributes"))
members = from_list(EnumMember.from_dict, obj.get(u"members"))
name = from_str(obj.get(u"name"))
type = IntegerType(obj.get(u"type"))
return EnumDeclarationElement(maybe_attributes, members, name, type)
def to_dict(self):
result = {}
result[u"maybe_attributes"] = from_union([lambda x: from_list(lambda x: to_class(Attribute, x), x), from_none], self.maybe_attributes)
result[u"members"] = from_list(lambda x: to_class(EnumMember, x), self.members)
result[u"name"] = from_str(self.name)
result[u"type"] = to_enum(IntegerType, self.type)
return result
class InterfaceMethodParameter:
def __init__(self, alignment, name, offset, size, type):
self.alignment = alignment
self.name = name
self.offset = offset
self.size = size
self.type = type
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
alignment = from_int(obj.get(u"alignment"))
name = from_str(obj.get(u"name"))
offset = from_int(obj.get(u"offset"))
size = from_int(obj.get(u"size"))
type = TypeClass.from_dict(obj.get(u"type"))
return InterfaceMethodParameter(alignment, name, offset, size, type)
def to_dict(self):
result = {}
result[u"alignment"] = from_int(self.alignment)
result[u"name"] = from_str(self.name)
result[u"offset"] = from_int(self.offset)
result[u"size"] = from_int(self.size)
result[u"type"] = to_class(TypeClass, self.type)
return result
class InterfaceMethod:
def __init__(self, has_request, has_response, maybe_attributes, maybe_request, maybe_request_alignment, maybe_request_size, maybe_response, maybe_response_alignment, maybe_response_size, name, ordinal):
self.has_request = has_request
self.has_response = has_response
self.maybe_attributes = maybe_attributes
self.maybe_request = maybe_request
self.maybe_request_alignment = maybe_request_alignment
self.maybe_request_size = maybe_request_size
self.maybe_response = maybe_response
self.maybe_response_alignment = maybe_response_alignment
self.maybe_response_size = maybe_response_size
self.name = name
self.ordinal = ordinal
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
has_request = from_bool(obj.get(u"has_request"))
has_response = from_bool(obj.get(u"has_response"))
maybe_attributes = from_union([lambda x: from_list(Attribute.from_dict, x), from_none], obj.get(u"maybe_attributes"))
maybe_request = from_union([lambda x: from_list(InterfaceMethodParameter.from_dict, x), from_none], obj.get(u"maybe_request"))
maybe_request_alignment = from_union([from_int, from_none], obj.get(u"maybe_request_alignment"))
maybe_request_size = from_union([from_int, from_none], obj.get(u"maybe_request_size"))
maybe_response = from_union([lambda x: from_list(InterfaceMethodParameter.from_dict, x), from_none], obj.get(u"maybe_response"))
maybe_response_alignment = from_union([from_int, from_none], obj.get(u"maybe_response_alignment"))
maybe_response_size = from_union([from_int, from_none], obj.get(u"maybe_response_size"))
name = from_str(obj.get(u"name"))
ordinal = from_int(obj.get(u"ordinal"))
return InterfaceMethod(has_request, has_response, maybe_attributes, maybe_request, maybe_request_alignment, maybe_request_size, maybe_response, maybe_response_alignment, maybe_response_size, name, ordinal)
def to_dict(self):
result = {}
result[u"has_request"] = from_bool(self.has_request)
result[u"has_response"] = from_bool(self.has_response)
result[u"maybe_attributes"] = from_union([lambda x: from_list(lambda x: to_class(Attribute, x), x), from_none], self.maybe_attributes)
result[u"maybe_request"] = from_union([lambda x: from_list(lambda x: to_class(InterfaceMethodParameter, x), x), from_none], self.maybe_request)
result[u"maybe_request_alignment"] = from_union([from_int, from_none], self.maybe_request_alignment)
result[u"maybe_request_size"] = from_union([from_int, from_none], self.maybe_request_size)
result[u"maybe_response"] = from_union([lambda x: from_list(lambda x: to_class(InterfaceMethodParameter, x), x), from_none], self.maybe_response)
result[u"maybe_response_alignment"] = from_union([from_int, from_none], self.maybe_response_alignment)
result[u"maybe_response_size"] = from_union([from_int, from_none], self.maybe_response_size)
result[u"name"] = from_str(self.name)
result[u"ordinal"] = from_int(self.ordinal)
return result
class Interface:
def __init__(self, maybe_attributes, methods, name):
self.maybe_attributes = maybe_attributes
self.methods = methods
self.name = name
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
maybe_attributes = from_union([lambda x: from_list(Attribute.from_dict, x), from_none], obj.get(u"maybe_attributes"))
methods = from_list(InterfaceMethod.from_dict, obj.get(u"methods"))
name = from_str(obj.get(u"name"))
return Interface(maybe_attributes, methods, name)
def to_dict(self):
result = {}
result[u"maybe_attributes"] = from_union([lambda x: from_list(lambda x: to_class(Attribute, x), x), from_none], self.maybe_attributes)
result[u"methods"] = from_list(lambda x: to_class(InterfaceMethod, x), self.methods)
result[u"name"] = from_str(self.name)
return result
class Library:
def __init__(self, declarations, name):
self.declarations = declarations
self.name = name
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
declarations = from_dict(DeclarationsMap, obj.get(u"declarations"))
name = from_str(obj.get(u"name"))
return Library(declarations, name)
def to_dict(self):
result = {}
result[u"declarations"] = from_dict(lambda x: to_enum(DeclarationsMap, x), self.declarations)
result[u"name"] = from_str(self.name)
return result
class StructMember:
def __init__(self, alignment, maybe_default_value, name, offset, size, type):
self.alignment = alignment
self.maybe_default_value = maybe_default_value
self.name = name
self.offset = offset
self.size = size
self.type = type
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
alignment = from_int(obj.get(u"alignment"))
maybe_default_value = from_union([Constant.from_dict, from_none], obj.get(u"maybe_default_value"))
name = from_str(obj.get(u"name"))
offset = from_int(obj.get(u"offset"))
size = from_int(obj.get(u"size"))
type = TypeClass.from_dict(obj.get(u"type"))
return StructMember(alignment, maybe_default_value, name, offset, size, type)
def to_dict(self):
result = {}
result[u"alignment"] = from_int(self.alignment)
result[u"maybe_default_value"] = from_union([lambda x: to_class(Constant, x), from_none], self.maybe_default_value)
result[u"name"] = from_str(self.name)
result[u"offset"] = from_int(self.offset)
result[u"size"] = from_int(self.size)
result[u"type"] = to_class(TypeClass, self.type)
return result
class Struct:
def __init__(self, max_handles, maybe_attributes, members, name, size):
self.max_handles = max_handles
self.maybe_attributes = maybe_attributes
self.members = members
self.name = name
self.size = size
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
max_handles = from_union([from_int, from_none], obj.get(u"max_handles"))
maybe_attributes = from_union([lambda x: from_list(Attribute.from_dict, x), from_none], obj.get(u"maybe_attributes"))
members = from_list(StructMember.from_dict, obj.get(u"members"))
name = from_str(obj.get(u"name"))
size = from_int(obj.get(u"size"))
return Struct(max_handles, maybe_attributes, members, name, size)
def to_dict(self):
result = {}
result[u"max_handles"] = from_union([from_int, from_none], self.max_handles)
result[u"maybe_attributes"] = from_union([lambda x: from_list(lambda x: to_class(Attribute, x), x), from_none], self.maybe_attributes)
result[u"members"] = from_list(lambda x: to_class(StructMember, x), self.members)
result[u"name"] = from_str(self.name)
result[u"size"] = from_int(self.size)
return result
class UnionMember:
def __init__(self, alignment, name, offset, size, type):
self.alignment = alignment
self.name = name
self.offset = offset
self.size = size
self.type = type
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
alignment = from_int(obj.get(u"alignment"))
name = from_str(obj.get(u"name"))
offset = from_int(obj.get(u"offset"))
size = from_int(obj.get(u"size"))
type = TypeClass.from_dict(obj.get(u"type"))
return UnionMember(alignment, name, offset, size, type)
def to_dict(self):
result = {}
result[u"alignment"] = from_int(self.alignment)
result[u"name"] = from_str(self.name)
result[u"offset"] = from_int(self.offset)
result[u"size"] = from_int(self.size)
result[u"type"] = to_class(TypeClass, self.type)
return result
class UnionDeclarationElement:
def __init__(self, alignment, max_handles, maybe_attributes, members, name, size):
self.alignment = alignment
self.max_handles = max_handles
self.maybe_attributes = maybe_attributes
self.members = members
self.name = name
self.size = size
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
alignment = from_int(obj.get(u"alignment"))
max_handles = from_union([from_int, from_none], obj.get(u"max_handles"))
maybe_attributes = from_union([lambda x: from_list(Attribute.from_dict, x), from_none], obj.get(u"maybe_attributes"))
members = from_list(UnionMember.from_dict, obj.get(u"members"))
name = from_str(obj.get(u"name"))
size = from_int(obj.get(u"size"))
return UnionDeclarationElement(alignment, max_handles, maybe_attributes, members, name, size)
def to_dict(self):
result = {}
result[u"alignment"] = from_int(self.alignment)
result[u"max_handles"] = from_union([from_int, from_none], self.max_handles)
result[u"maybe_attributes"] = from_union([lambda x: from_list(lambda x: to_class(Attribute, x), x), from_none], self.maybe_attributes)
result[u"members"] = from_list(lambda x: to_class(UnionMember, x), self.members)
result[u"name"] = from_str(self.name)
result[u"size"] = from_int(self.size)
return result
class Fidl:
def __init__(self, const_declarations, declaration_order, declarations, enum_declarations, interface_declarations, library_dependencies, name, struct_declarations, union_declarations, version):
self.const_declarations = const_declarations
self.declaration_order = declaration_order
self.declarations = declarations
self.enum_declarations = enum_declarations
self.interface_declarations = interface_declarations
self.library_dependencies = library_dependencies
self.name = name
self.struct_declarations = struct_declarations
self.union_declarations = union_declarations
self.version = version
@staticmethod
def from_dict(obj):
assert isinstance(obj, dict)
const_declarations = from_list(Const.from_dict, obj.get(u"const_declarations"))
declaration_order = from_list(from_str, obj.get(u"declaration_order"))
declarations = from_dict(DeclarationsMap, obj.get(u"declarations"))
enum_declarations = from_list(EnumDeclarationElement.from_dict, obj.get(u"enum_declarations"))
interface_declarations = from_list(Interface.from_dict, obj.get(u"interface_declarations"))
library_dependencies = from_list(Library.from_dict, obj.get(u"library_dependencies"))
name = from_str(obj.get(u"name"))
struct_declarations = from_list(Struct.from_dict, obj.get(u"struct_declarations"))
union_declarations = from_list(UnionDeclarationElement.from_dict, obj.get(u"union_declarations"))
version = from_str(obj.get(u"version"))
return Fidl(const_declarations, declaration_order, declarations, enum_declarations, interface_declarations, library_dependencies, name, struct_declarations, union_declarations, version)
def to_dict(self):
result = {}
result[u"const_declarations"] = from_list(lambda x: to_class(Const, x), self.const_declarations)
result[u"declaration_order"] = from_list(from_str, self.declaration_order)
result[u"declarations"] = from_dict(lambda x: to_enum(DeclarationsMap, x), self.declarations)
result[u"enum_declarations"] = from_list(lambda x: to_class(EnumDeclarationElement, x), self.enum_declarations)
result[u"interface_declarations"] = from_list(lambda x: to_class(Interface, x), self.interface_declarations)
result[u"library_dependencies"] = from_list(lambda x: to_class(Library, x), self.library_dependencies)
result[u"name"] = from_str(self.name)
result[u"struct_declarations"] = from_list(lambda x: to_class(Struct, x), self.struct_declarations)
result[u"union_declarations"] = from_list(lambda x: to_class(UnionDeclarationElement, x), self.union_declarations)
result[u"version"] = from_str(self.version)
return result
def fidl_from_dict(s):
return Fidl.from_dict(s)
def fidl_to_dict(x):
return to_class(Fidl, x)