| Index: third_party/gsutil/third_party/pyasn1/pyasn1/type/namedval.py
|
| diff --git a/third_party/gsutil/third_party/pyasn1/pyasn1/type/namedval.py b/third_party/gsutil/third_party/pyasn1/pyasn1/type/namedval.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d0fea7cc7cbc241f9def4335b39cd3d00ee7d781
|
| --- /dev/null
|
| +++ b/third_party/gsutil/third_party/pyasn1/pyasn1/type/namedval.py
|
| @@ -0,0 +1,46 @@
|
| +# ASN.1 named integers
|
| +from pyasn1 import error
|
| +
|
| +__all__ = [ 'NamedValues' ]
|
| +
|
| +class NamedValues:
|
| + def __init__(self, *namedValues):
|
| + self.nameToValIdx = {}; self.valToNameIdx = {}
|
| + self.namedValues = ()
|
| + automaticVal = 1
|
| + for namedValue in namedValues:
|
| + if isinstance(namedValue, tuple):
|
| + name, val = namedValue
|
| + else:
|
| + name = namedValue
|
| + val = automaticVal
|
| + if name in self.nameToValIdx:
|
| + raise error.PyAsn1Error('Duplicate name %s' % (name,))
|
| + self.nameToValIdx[name] = val
|
| + if val in self.valToNameIdx:
|
| + raise error.PyAsn1Error('Duplicate value %s=%s' % (name, val))
|
| + self.valToNameIdx[val] = name
|
| + self.namedValues = self.namedValues + ((name, val),)
|
| + automaticVal = automaticVal + 1
|
| + def __str__(self): return str(self.namedValues)
|
| +
|
| + def getName(self, value):
|
| + if value in self.valToNameIdx:
|
| + return self.valToNameIdx[value]
|
| +
|
| + def getValue(self, name):
|
| + if name in self.nameToValIdx:
|
| + return self.nameToValIdx[name]
|
| +
|
| + def __getitem__(self, i): return self.namedValues[i]
|
| + def __len__(self): return len(self.namedValues)
|
| +
|
| + def __add__(self, namedValues):
|
| + return self.__class__(*self.namedValues + namedValues)
|
| + def __radd__(self, namedValues):
|
| + return self.__class__(*namedValues + tuple(self))
|
| +
|
| + def clone(self, *namedValues):
|
| + return self.__class__(*tuple(self) + namedValues)
|
| +
|
| +# XXX clone/subtype?
|
|
|