2 from pyasn1
import error
4 __all__
= [ 'NamedValues' ]
7 def __init__(self
, *namedValues
):
8 self
.nameToValIdx
= {}; self
.valToNameIdx
= {}
11 for namedValue
in namedValues
:
12 if isinstance(namedValue
, tuple):
13 name
, val
= namedValue
17 if name
in self
.nameToValIdx
:
18 raise error
.PyAsn1Error('Duplicate name %s' % (name
,))
19 self
.nameToValIdx
[name
] = val
20 if val
in self
.valToNameIdx
:
21 raise error
.PyAsn1Error('Duplicate value %s=%s' % (name
, val
))
22 self
.valToNameIdx
[val
] = name
23 self
.namedValues
= self
.namedValues
+ ((name
, val
),)
24 automaticVal
= automaticVal
+ 1
25 def __str__(self
): return str(self
.namedValues
)
27 def getName(self
, value
):
28 if value
in self
.valToNameIdx
:
29 return self
.valToNameIdx
[value
]
31 def getValue(self
, name
):
32 if name
in self
.nameToValIdx
:
33 return self
.nameToValIdx
[name
]
35 def __getitem__(self
, i
): return self
.namedValues
[i
]
36 def __len__(self
): return len(self
.namedValues
)
38 def __add__(self
, namedValues
):
39 return self
.__class
__(*self
.namedValues
+ namedValues
)
40 def __radd__(self
, namedValues
):
41 return self
.__class
__(*namedValues
+ tuple(self
))
43 def clone(self
, *namedValues
):
44 return self
.__class
__(*tuple(self
) + namedValues
)