diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-17 21:56:05 +0100 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-17 21:56:05 +0100 |
| commit | 55f3a493871306ac220071574e2a5897851bef54 (patch) | |
| tree | 509140ba0ccb8c675520368f08d578d33c90f7a7 /examples/simple | |
| parent | 55811e0f5467257a7f86fd474e4c6e234c2efa7b (diff) | |
| download | nimpb-55f3a493871306ac220071574e2a5897851bef54.tar.gz nimpb-55f3a493871306ac220071574e2a5897851bef54.zip | |
Update examples
Diffstat (limited to 'examples/simple')
| -rw-r--r-- | examples/simple/Makefile | 8 | ||||
| -rw-r--r-- | examples/simple/simple_pb.nim | 59 |
2 files changed, 38 insertions, 29 deletions
diff --git a/examples/simple/Makefile b/examples/simple/Makefile index ff24675..cec07f3 100644 --- a/examples/simple/Makefile +++ b/examples/simple/Makefile @@ -1,9 +1,7 @@ -PLUGIN = ../../generator/protoc_gen_nim - all: simple simple: simple.nim simple_pb.nim - nim c simple.nim + nim c $< -simple_pb.nim: simple.proto - protoc --plugin=protoc-gen-nim=$(PLUGIN) --nim_out=. -I. simple.proto +%_pb.nim: %.proto + nimpb_build -I. --out=. $< diff --git a/examples/simple/simple_pb.nim b/examples/simple/simple_pb.nim index 0b1a056..56d4afb 100644 --- a/examples/simple/simple_pb.nim +++ b/examples/simple/simple_pb.nim @@ -1,40 +1,44 @@ # Generated by protoc_gen_nim. Do not edit! +import base64 import intsets +import json import nimpb/nimpb +import nimpb/json as nimpb_json type Test1_MyEnum* {.pure.} = enum Foo = 0 Bar = 1 Test1* = ref Test1Obj - Test1Obj* = object of RootObj - hasField: IntSet + Test1Obj* = object of Message a: int32 e: Test1_MyEnum proc newTest1*(): Test1 -proc writeTest1*(stream: ProtobufStream, message: Test1) -proc readTest1*(stream: ProtobufStream): Test1 +proc newTest1*(data: string): Test1 +proc writeTest1*(stream: Stream, message: Test1) +proc readTest1*(stream: Stream): Test1 proc sizeOfTest1*(message: Test1): uint64 +proc toJson*(message: Test1): JsonNode proc newTest1*(): Test1 = new(result) - result.hasField = initIntSet() + initMessage(result[]) result.a = 0 - result.e = Test1_MyEnum(0) + result.e = Test1_MyEnum.Foo proc cleara*(message: Test1) = message.a = 0 - excl(message.hasField, [1]) + clearFields(message, [1]) proc hasa*(message: Test1): bool = - result = contains(message.hasField, 1) + result = hasField(message, 1) proc seta*(message: Test1, value: int32) = message.a = value - incl(message.hasField, 1) + setField(message, 1) proc a*(message: Test1): int32 {.inline.} = message.a @@ -43,15 +47,15 @@ proc `a=`*(message: Test1, value: int32) {.inline.} = seta(message, value) proc cleare*(message: Test1) = - message.e = Test1_MyEnum(0) - excl(message.hasField, [2]) + message.e = Test1_MyEnum.Foo + clearFields(message, [2]) proc hase*(message: Test1): bool = - result = contains(message.hasField, 2) + result = hasField(message, 2) proc sete*(message: Test1, value: Test1_MyEnum) = message.e = value - incl(message.hasField, 2) + setField(message, 2) proc e*(message: Test1): Test1_MyEnum {.inline.} = message.e @@ -66,14 +70,16 @@ proc sizeOfTest1*(message: Test1): uint64 = if hase(message): result = result + sizeOfTag(2, WireType.Varint) result = result + sizeOfEnum[Test1_MyEnum](message.e) + result = result + sizeOfUnknownFields(message) -proc writeTest1*(stream: ProtobufStream, message: Test1) = +proc writeTest1*(stream: Stream, message: Test1) = if hasa(message): - writeInt32(stream, message.a, 1) + protoWriteInt32(stream, message.a, 1) if hase(message): - writeEnum(stream, message.e, 2) + protoWriteEnum(stream, message.e, 2) + writeUnknownFields(stream, message) -proc readTest1*(stream: ProtobufStream): Test1 = +proc readTest1*(stream: Stream): Test1 = result = newTest1() while not atEnd(stream): let @@ -84,23 +90,28 @@ proc readTest1*(stream: ProtobufStream): Test1 = raise newException(InvalidFieldNumberError, "Invalid field number: 0") of 1: expectWireType(wireType, WireType.Varint) - seta(result, readInt32(stream)) + seta(result, protoReadInt32(stream)) of 2: expectWireType(wireType, WireType.Varint) - sete(result, readEnum[Test1_MyEnum](stream)) - else: skipField(stream, wireType) + sete(result, protoReadEnum[Test1_MyEnum](stream)) + else: readUnknownField(stream, result, tag) + +proc toJson*(message: Test1): JsonNode = + result = newJObject() + if hasa(message): + result["a"] = %message.a + if hase(message): + result["e"] = %($message.e) proc serialize*(message: Test1): string = let ss = newStringStream() - pbs = newProtobufStream(ss) - writeTest1(pbs, message) + writeTest1(ss, message) result = ss.data proc newTest1*(data: string): Test1 = let ss = newStringStream(data) - pbs = newProtobufStream(ss) - result = readTest1(pbs) + result = readTest1(ss) |
