Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(272)

Unified Diff: third_party/google-endpoints/pyasn1/type/namedval.py

Issue 2666783008: Add google-endpoints to third_party/. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/google-endpoints/pyasn1/type/namedval.py
diff --git a/third_party/google-endpoints/pyasn1/type/namedval.py b/third_party/google-endpoints/pyasn1/type/namedval.py
new file mode 100644
index 0000000000000000000000000000000000000000..676cb934b40f23c3242a6f6c2c57fe5e64891653
--- /dev/null
+++ b/third_party/google-endpoints/pyasn1/type/namedval.py
@@ -0,0 +1,58 @@
+# 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 __repr__(self):
+ return '%s(%s)' % (self.__class__.__name__, ', '.join([repr(x) for x in self.namedValues]))
+
+ def __str__(self): return str(self.namedValues)
+
+ def __eq__(self, other): return tuple(self) == tuple(other)
+ def __ne__(self, other): return tuple(self) != tuple(other)
+ def __lt__(self, other): return tuple(self) < tuple(other)
+ def __le__(self, other): return tuple(self) <= tuple(other)
+ def __gt__(self, other): return tuple(self) > tuple(other)
+ def __ge__(self, other): return tuple(self) >= tuple(other)
+ def __hash__(self): return hash(tuple(self))
+
+ 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?
« no previous file with comments | « third_party/google-endpoints/pyasn1/type/namedtype.py ('k') | third_party/google-endpoints/pyasn1/type/tag.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698