X-Git-Url: http://www.git.cypherpunks.ru/?p=pyderasn.git;a=blobdiff_plain;f=pyderasn.py;h=5c311e09c11d2c39eed450a0d2f768bd195f1bea;hp=4ae1eb0814182f065fa045d1c89b7a9f6c11e9ba;hb=cc1605aa800ea590610865a1c4b28f53f796ba10;hpb=f2ceb9912635bbb6e8999a257bcc5fdb473df01c diff --git a/pyderasn.py b/pyderasn.py index 4ae1eb0..5c311e0 100755 --- a/pyderasn.py +++ b/pyderasn.py @@ -318,6 +318,7 @@ from collections import OrderedDict from datetime import datetime from math import ceil +from six import add_metaclass from six import binary_type from six import byte2int from six import indexbytes @@ -655,6 +656,13 @@ def len_decode(data): # Base class ######################################################################## +class AutoAddSlots(type): + def __new__(cls, name, bases, _dict): + _dict["__slots__"] = _dict.get("__slots__", ()) + return type.__new__(cls, name, bases, _dict) + + +@add_metaclass(AutoAddSlots) class Obj(object): """Common ASN.1 object class @@ -709,7 +717,7 @@ class Obj(object): def decoded(self): """Is object decoded? """ - return self.llen > 0 + return (self.llen + self.vlen) > 0 def copy(self): # pragma: no cover """Make a copy of object, safe to be mutated