diff --git a/examples/Makefile b/examples/Makefile index fc39c55448fc0246f0ddbba0c05e24c7bc2e0b1d..b217cff14e98788bc33b2063d363b08c71cd4f44 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -17,7 +17,7 @@ ifeq ($(UNAME_S),Darwin) else cd simple ; sh compile.sh && sh run.sh $(MAKE) -C wiki_example test - $(MAKE) -C user_types test + $(MAKE) -C user_types all endif $(MAKE) -C duck_typing test $(MAKE) -C twoway test diff --git a/lib/python/labcomm2014/LabComm.py b/lib/python/labcomm2014/LabComm.py index b309124f3eb39602bd99a4f9dd99813d6e2da30d..86ce169d097daa5c8fac48abba93a29f66ba0e2c 100644 --- a/lib/python/labcomm2014/LabComm.py +++ b/lib/python/labcomm2014/LabComm.py @@ -637,8 +637,7 @@ class struct(type_decl): return not self.__eq__(other) def __hash__(self): - tmp = str(self.field) - return hash(self.__class__) ^ hash(tmp) + return hash(self.__class__) ^ hash(self.field) def encode_decl(self, encoder): encoder.encode_type(i_STRUCT) @@ -918,8 +917,8 @@ class Decoder(Codec): self.version = version self.handlers = {} - def register_handler(self, sig, handler): - self.handlers[str(sig)] = handler + def register_handler(self, decl, handler): + self.handlers[decl] = handler def unpack(self, format): size = packer.calcsize(format) @@ -956,11 +955,16 @@ class Decoder(Codec): data,decl = self.decode() if decl: if data != None: - if str(decl) in self.handlers: - handler = self.handlers[str(decl)] + if decl in self.handlers: + handler = self.handlers[decl] handler(data) else: print ("No handler for %s" % decl.name ) + for key, value in self.handlers.iteritems(): + if key == decl: + print "but value %s == decl %s" % (key,decl) + print "hashes %d : %d" % (hash(key),hash(decl)) + raise Exception() def decode(self): while True: