diff --git a/.bzrignore b/.bzrignore index 06ec666641cec276bf1eb97173056f357138d0c2..dc2d51ed087708f7132bf2ac1ddc3cb7a8b97d02 100644 --- a/.bzrignore +++ b/.bzrignore @@ -25,3 +25,9 @@ example.h example.py examples/wiki_example/example.encoded example.encoded +examples/simple/*.class +examples/simple/encoded_data +examples/simple/example_decoder +examples/simple/example_encoder +lib/c/test/test_labcomm_basic_type_encoding +lib/c/test/test_labcomm_generated_encoding diff --git a/Makefile b/Makefile index 4bb6ec7b1bcf9e5e219371316585b9831341a4cf..e9388b0bb0aa7719c8b28f19187ac2f9f0feb60d 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -SUBDIRS=compiler lib examples test +SUBDIRS=compiler lib test examples export LABCOMM_JAR=$(shell pwd)/compiler/labComm.jar export LABCOMM=java -jar $(LABCOMM_JAR) diff --git a/examples/Makefile b/examples/Makefile index a8a26d7dd99993d446149dab8756252e8db4ff9d..f9a55111448869ff4ca79977404878d3017515ed 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -2,7 +2,8 @@ all: echo To be done... test: - echo To be done... + echo More to be done... + cd simple ; sh compile.sh && sh run.sh clean: echo To be done... diff --git a/examples/wiki_example/example_decoder.py b/examples/wiki_example/example_decoder.py index 3d40cf468e5764d1432b65c30a594fcd6fbd85ed..d729145300388c3a7a005bbfc6acc741669c2ac6 100755 --- a/examples/wiki_example/example_decoder.py +++ b/examples/wiki_example/example_decoder.py @@ -3,29 +3,8 @@ import labcomm import sys -class FileReader: - def __init__(self, name): - self.f = open(name) - pass - - def start(self, decoder, version): - other_version = decoder.decode_string() - if version != other_version: - raise Exception("LabComm version mismatch %s != %s" % - (version, other_version)) - pass - - def read(self, count): - s = self.f.read(count) - if len(s) == 0: - raise Exception("EOF") - return s - - def mark(self, value, decl): - pass - if __name__ == "__main__": - d = labcomm.Decoder(FileReader(sys.argv[1])) + d = labcomm.Decoder(labcomm.StreamReader(open(sys.argv[1]))) while True: try: diff --git a/lib/python/labcomm/StreamReader.py b/lib/python/labcomm/StreamReader.py new file mode 100644 index 0000000000000000000000000000000000000000..08c97abe045a69ec93d4f0ff06212a121180d344 --- /dev/null +++ b/lib/python/labcomm/StreamReader.py @@ -0,0 +1,23 @@ +class StreamReader: + + def __init__(self, stream): + self.stream = stream + pass + + def start(self, decoder, version): + other_version = decoder.decode_string() + if version != other_version: + raise Exception("LabComm version mismatch %s != %s" % + (version, other_version)) + pass + + def read(self, count): + result = self.stream.read(count) + if len(result) == 0: + raise EOFError() + return result + + def mark(self, value, decl): + pass + + pass diff --git a/lib/python/labcomm/StreamWriter.py b/lib/python/labcomm/StreamWriter.py new file mode 100644 index 0000000000000000000000000000000000000000..ae57c96d2b6290efe29e65b411474328f992c17e --- /dev/null +++ b/lib/python/labcomm/StreamWriter.py @@ -0,0 +1,19 @@ +class StreamWriter: + + def __init__(self, stream): + self.stream = stream + pass + + def start(self, encoder, version): + encoder.encode_string(version) + pass + + def write(self, data): + self.stream.write(data) + pass + + def mark(self): + self.stream.flush() + pass + + pass diff --git a/lib/python/labcomm/__init__.py b/lib/python/labcomm/__init__.py index 563171e67254a4700c51e3ba6f6920dfb7ed6d11..52a5911bb58c90786bdf95d8f8cb27837e350407 100644 --- a/lib/python/labcomm/__init__.py +++ b/lib/python/labcomm/__init__.py @@ -1,5 +1,8 @@ import labcomm.LabComm +from labcomm.StreamReader import StreamReader +from labcomm.StreamWriter import StreamWriter + Decoder = labcomm.LabComm.Decoder Encoder = labcomm.LabComm.Encoder diff --git a/test/test_encoder_decoder.py b/test/test_encoder_decoder.py index 6d8d4bcaaaef9858843227e0ad49bb8f5ca3d8d7..acd08e5e4e15f9ccf8b517b606fd17360474861e 100755 --- a/test/test_encoder_decoder.py +++ b/test/test_encoder_decoder.py @@ -127,18 +127,7 @@ class Test: self.next = threading.Semaphore(0) decoder = threading.Thread(target=self.decode, args=(p.stdout,)) decoder.start() - class Writer: - def start(self, encoder, version): - encoder.encode_string(version) - pass - def write(self, data): - p.stdin.write(data) - pass - def mark(self): - p.stdin.flush() - pass - pass - encoder = labcomm.Encoder(Writer()) + encoder = labcomm.Encoder(labcomm.StreamWriter(p.stdin)) for name,signature in self.signatures: encoder.add_decl(signature) pass @@ -164,22 +153,7 @@ class Test: pass def decode(self, f): - class Reader: - def start(self, decoder, version): - other_version = decoder.decode_string() - if version != other_version: - raise Exception("LabComm version mismatch %s != %s" % - (version, other_version)) - pass - def read(self, count): - result = f.read(count) - if len(result) == 0: - raise EOFError() - return result - def mark(self, value, decl): - pass - pass - decoder = labcomm.Decoder(Reader()) + decoder = labcomm.Decoder(labcomm.StreamReader(f)) try: while True: value,decl = decoder.decode()