diff options
author | Ilya Etingof <etingof@gmail.com> | 2017-04-21 01:09:10 +0200 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2017-09-10 14:14:06 +0200 |
commit | 63f92c7c995752a7418aa6a168c4e48524acc127 (patch) | |
tree | cb41b274611225e88cde2028b9e44e81e9bf99e9 /pyasn1/type | |
parent | 5359bf1df4e64c1f2f19bff69670ed2f213d8c21 (diff) | |
download | pyasn1-63f92c7c995752a7418aa6a168c4e48524acc127.tar.gz |
ANY DEFINED BY decoding implemented
Diffstat (limited to 'pyasn1/type')
-rw-r--r-- | pyasn1/type/namedtype.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/pyasn1/type/namedtype.py b/pyasn1/type/namedtype.py index 7a51f18..3cdb2a6 100644 --- a/pyasn1/type/namedtype.py +++ b/pyasn1/type/namedtype.py @@ -34,6 +34,8 @@ class NamedType(object): self.__name = name self.__type = asn1Object self.__nameAndType = name, asn1Object + self.__governingName = None + self.__typesMap = None def __repr__(self): return '%s(%r, %r)' % (self.__class__.__name__, self.__name, self.__type) @@ -73,6 +75,19 @@ class NamedType(object): def asn1Object(self): return self.__type + def definedBy(self, governingName, typesMap): + self.__governingName = governingName + self.__typesMap = typesMap + return self + + @property + def governingName(self): + return self.__governingName + + @property + def typesMap(self): + return self.__typesMap + # Backward compatibility def getName(self): @@ -123,6 +138,7 @@ class NamedTypes(object): self.__keys = frozenset([namedType.name for namedType in self.__namedTypes]) self.__values = tuple([namedType.asn1Object for namedType in self.__namedTypes]) self.__items = tuple([(namedType.name, namedType.asn1Object) for namedType in self.__namedTypes]) + self.__holes = None def __repr__(self): return '%s(%s)' % ( @@ -509,3 +525,15 @@ class NamedTypes(object): @property def requiredComponents(self): return self.__requiredComponents + + @property + def holes(self): + if self.__holes is None: + holes = [] + for namedType in self.__namedTypes: + if namedType.governingName: + holes.append((namedType.name, namedType.governingName, namedType.typesMap)) + + self.__holes = holes + + return self.__holes |