X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=coe%2Fbin.py;h=b9ee6018aa361d1ce1c413b09a0ee7d41e1dd705;hb=72f60d5b10b41b7c807524e9746b1e797d8c09ec;hp=395a2096a21683aa0be35c3a62b453160ddf8c9d;hpb=26256ae3920b9d709137e2b2784699969578fde8;p=coe.git diff --git a/coe/bin.py b/coe/bin.py index 395a209..b9ee601 100644 --- a/coe/bin.py +++ b/coe/bin.py @@ -89,9 +89,9 @@ class encoder(object): return if datum == None: self.writetag(dst, T_NIL, 0, None) - elif datum == False: + elif datum is False: self.writetag(dst, T_NIL, NIL_FALSE, None) - elif datum == True: + elif datum is True: self.writetag(dst, T_NIL, NIL_TRUE, None) elif isinstance(datum, int): self.writetag(dst, T_INT, 0, None) @@ -152,12 +152,6 @@ class referror(fmterror): def __init__(self): super().__init__("bad backref") -class namedtype(type): - def __new__(cls, *args, typename=None, **kwargs): - self = super().__new__(cls, *args, **kwargs) - self.typename = typename - return self - class decoder(object): def __init__(self): self.reftab = [] @@ -229,7 +223,7 @@ class decoder(object): buf[key] = self.loadtagged(fp, tag) def makeobjtype(self, nm): - return namedtype(str(nm), (data.obj, object), {}, typename=nm) + return data.namedtype.make(str(nm), (data.obj, object), {}, typename=nm) def loadobj(self, fp, ref=False): if ref: @@ -265,10 +259,10 @@ class decoder(object): return self.reftab[idx] return self.addref(self.loadint(fp)) elif pri == T_STR: - ret = self.addref(self.loadstr(fp)) + ret = self.loadstr(fp) if sec == STR_SYM: - return data.symbol.get("", ret) - return ret + return self.addref(data.symbol.get("", ret)) + return self.addref(ret) elif pri == T_BIT: ln = self.loadint(fp) ret = self.addref(fp.read(ln)) @@ -298,4 +292,4 @@ class decoder(object): return self.loadtagged(fp, tag) def load(fp): - decoder().load(fp) + return decoder().load(fp)