aboutsummaryrefslogtreecommitdiff
path: root/examples/simple
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2018-04-17 21:56:05 +0100
committerOskari Timperi <oskari.timperi@iki.fi>2018-04-17 21:56:05 +0100
commit55f3a493871306ac220071574e2a5897851bef54 (patch)
tree509140ba0ccb8c675520368f08d578d33c90f7a7 /examples/simple
parent55811e0f5467257a7f86fd474e4c6e234c2efa7b (diff)
downloadnimpb-55f3a493871306ac220071574e2a5897851bef54.tar.gz
nimpb-55f3a493871306ac220071574e2a5897851bef54.zip
Update examples
Diffstat (limited to 'examples/simple')
-rw-r--r--examples/simple/Makefile8
-rw-r--r--examples/simple/simple_pb.nim59
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)