123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #
- # This file is part of pyasn1 software.
- #
- # Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
- # License: http://snmplabs.com/pyasn1/license.html
- #
-
- __all__ = ['OpenType']
-
-
- class OpenType(object):
- """Create ASN.1 type map indexed by a value
-
- The *DefinedBy* object models the ASN.1 *DEFINED BY* clause which maps
- values to ASN.1 types in the context of the ASN.1 SEQUENCE/SET type.
-
- OpenType objects are duck-type a read-only Python :class:`dict` objects,
- however the passed `typeMap` is stored by reference.
-
- Parameters
- ----------
- name: :py:class:`str`
- Field name
-
- typeMap: :py:class:`dict`
- A map of value->ASN.1 type. It's stored by reference and can be
- mutated later to register new mappings.
-
- Examples
- --------
- .. code-block:: python
-
- openType = OpenType(
- 'id',
- {1: Integer(),
- 2: OctetString()}
- )
- Sequence(
- componentType=NamedTypes(
- NamedType('id', Integer()),
- NamedType('blob', Any(), openType=openType)
- )
- )
- """
-
- def __init__(self, name, typeMap=None):
- self.__name = name
- if typeMap is None:
- self.__typeMap = {}
- else:
- self.__typeMap = typeMap
-
- @property
- def name(self):
- return self.__name
-
- # Python dict protocol
-
- def values(self):
- return self.__typeMap.values()
-
- def keys(self):
- return self.__typeMap.keys()
-
- def items(self):
- return self.__typeMap.items()
-
- def __contains__(self, key):
- return key in self.__typeMap
-
- def __getitem__(self, key):
- return self.__typeMap[key]
-
- def __iter__(self):
- return iter(self.__typeMap)
|