aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/addressbook/Makefile4
-rw-r--r--examples/addressbook/addressbook.proto13
-rw-r--r--examples/addressbook/addressbook_pb.nim37
-rw-r--r--examples/addressbook/phonenumber.proto12
-rw-r--r--examples/addressbook/phonenumber_pb.nim42
-rw-r--r--examples/addressbook/writer.nim7
6 files changed, 65 insertions, 50 deletions
diff --git a/examples/addressbook/Makefile b/examples/addressbook/Makefile
index 7fe8add..74d41e1 100644
--- a/examples/addressbook/Makefile
+++ b/examples/addressbook/Makefile
@@ -8,5 +8,5 @@ writer: writer.nim addressbook_pb.nim
reader: reader.nim addressbook_pb.nim
nim c reader.nim
-addressbook_pb.nim: addressbook.proto
- protoc --plugin=protoc-gen-nim=$(PLUGIN) --nim_out=. -I. addressbook.proto
+addressbook_pb.nim: addressbook.proto phonenumber.proto
+ protoc --plugin=protoc-gen-nim=$(PLUGIN) --nim_out=. -I. addressbook.proto phonenumber.proto
diff --git a/examples/addressbook/addressbook.proto b/examples/addressbook/addressbook.proto
index 5e04629..5c8f315 100644
--- a/examples/addressbook/addressbook.proto
+++ b/examples/addressbook/addressbook.proto
@@ -1,21 +1,12 @@
syntax = "proto3";
+import "phonenumber.proto";
+
message Person {
string name = 1;
int32 id = 2;
string email = 3;
- enum PhoneType {
- MOBILE = 0;
- HOME = 1;
- WORK = 2;
- }
-
- message PhoneNumber {
- string number = 1;
- PhoneType type = 2; // [default = HOME]; default values not supported yet
- }
-
repeated PhoneNumber phones = 4;
}
diff --git a/examples/addressbook/addressbook_pb.nim b/examples/addressbook/addressbook_pb.nim
index 8a37fb4..3e991f0 100644
--- a/examples/addressbook/addressbook_pb.nim
+++ b/examples/addressbook/addressbook_pb.nim
@@ -6,36 +6,9 @@ import protobuf/gen
import protobuf/stream
import protobuf/types
+import phonenumber_pb
+
const
- Person_PhoneTypeDesc = EnumDesc(
- name: "Person_PhoneType",
- values: @[
- EnumValueDesc(name: "MOBILE", number: 0),
- EnumValueDesc(name: "HOME", number: 1),
- EnumValueDesc(name: "WORK", number: 2),
- ]
- )
- Person_PhoneNumberDesc = MessageDesc(
- name: "Person_PhoneNumber",
- fields: @[
- FieldDesc(
- name: "number",
- number: 1,
- ftype: FieldType.String,
- label: FieldLabel.Optional,
- typeName: "",
- packed: false,
- ),
- FieldDesc(
- name: "type",
- number: 2,
- ftype: FieldType.Enum,
- label: FieldLabel.Optional,
- typeName: "Person_PhoneType",
- packed: false,
- ),
- ]
- )
PersonDesc = MessageDesc(
name: "Person",
fields: @[
@@ -68,7 +41,7 @@ const
number: 4,
ftype: FieldType.Message,
label: FieldLabel.Repeated,
- typeName: "Person_PhoneNumber",
+ typeName: "PhoneNumber",
packed: false,
),
]
@@ -86,10 +59,6 @@ const
),
]
)
-generateEnumType(Person_PhoneTypeDesc)
-generateEnumProcs(Person_PhoneTypeDesc)
-generateMessageType(Person_PhoneNumberDesc)
-generateMessageProcs(Person_PhoneNumberDesc)
generateMessageType(PersonDesc)
generateMessageProcs(PersonDesc)
generateMessageType(AddressBookDesc)
diff --git a/examples/addressbook/phonenumber.proto b/examples/addressbook/phonenumber.proto
new file mode 100644
index 0000000..2d53cfe
--- /dev/null
+++ b/examples/addressbook/phonenumber.proto
@@ -0,0 +1,12 @@
+syntax = "proto3";
+
+enum PhoneType {
+ MOBILE = 0;
+ HOME = 1;
+ WORK = 2;
+}
+
+message PhoneNumber {
+ string number = 1;
+ PhoneType type = 2; // [default = HOME]; default values not supported yet
+}
diff --git a/examples/addressbook/phonenumber_pb.nim b/examples/addressbook/phonenumber_pb.nim
new file mode 100644
index 0000000..5c183b3
--- /dev/null
+++ b/examples/addressbook/phonenumber_pb.nim
@@ -0,0 +1,42 @@
+# Generated by protoc_gen_nim. Do not edit!
+
+import intsets
+
+import protobuf/gen
+import protobuf/stream
+import protobuf/types
+
+const
+ PhoneTypeDesc = EnumDesc(
+ name: "PhoneType",
+ values: @[
+ EnumValueDesc(name: "MOBILE", number: 0),
+ EnumValueDesc(name: "HOME", number: 1),
+ EnumValueDesc(name: "WORK", number: 2),
+ ]
+ )
+ PhoneNumberDesc = MessageDesc(
+ name: "PhoneNumber",
+ fields: @[
+ FieldDesc(
+ name: "number",
+ number: 1,
+ ftype: FieldType.String,
+ label: FieldLabel.Optional,
+ typeName: "",
+ packed: false,
+ ),
+ FieldDesc(
+ name: "type",
+ number: 2,
+ ftype: FieldType.Enum,
+ label: FieldLabel.Optional,
+ typeName: "PhoneType",
+ packed: false,
+ ),
+ ]
+ )
+generateEnumType(PhoneTypeDesc)
+generateEnumProcs(PhoneTypeDesc)
+generateMessageType(PhoneNumberDesc)
+generateMessageProcs(PhoneNumberDesc)
diff --git a/examples/addressbook/writer.nim b/examples/addressbook/writer.nim
index 6d32005..8dbac12 100644
--- a/examples/addressbook/writer.nim
+++ b/examples/addressbook/writer.nim
@@ -3,6 +3,7 @@ import streams
import protobuf/stream
import addressbook_pb
+import phonenumber_pb
let addressBook = newAddressBook()
@@ -12,12 +13,12 @@ setId(john, 1)
setEmail(john, "john.doe@example.com")
addPeople(addressBook, john)
-let johnPhone1 = newPerson_PhoneNumber()
+let johnPhone1 = newPhoneNumber()
setNumber(johnPhone1, "1234")
setType(johnPhone1, MOBILE)
addPhones(john, johnPhone1)
-let johnPhone2 = newPerson_PhoneNumber()
+let johnPhone2 = newPhoneNumber()
setNumber(johnPhone2, "5566")
setType(johnPhone2, WORK)
addPhones(john, johnPhone2)
@@ -28,7 +29,7 @@ setId(jane, 2)
setEmail(jane, "jane.doe@example.com")
addPeople(addressBook, jane)
-let janePhone1 = newPerson_PhoneNumber()
+let janePhone1 = newPhoneNumber()
setNumber(janePhone1, "1432")
setType(janePhone1, HOME)
addPhones(jane, janePhone1)