From 3626877554b6c567d43336ec49414cedfe487260 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Fri, 31 May 2024 18:30:10 +0200 Subject: Initial commit --- src/proto/TARGETS | 18 ++++++++++++++++++ src/proto/example.proto | 7 +++++++ src/proto/read.cc | 18 ++++++++++++++++++ src/proto/write.cc | 17 +++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 src/proto/TARGETS create mode 100644 src/proto/example.proto create mode 100644 src/proto/read.cc create mode 100644 src/proto/write.cc (limited to 'src/proto') diff --git a/src/proto/TARGETS b/src/proto/TARGETS new file mode 100644 index 0000000..512d7c2 --- /dev/null +++ b/src/proto/TARGETS @@ -0,0 +1,18 @@ +{ "example": + { "type": ["@", "rules", "proto", "library"] + , "name": ["example"] + , "srcs": ["example.proto"] + } +, "write": + { "type": ["@", "rules", "CC", "binary"] + , "name": ["write"] + , "srcs": ["write.cc"] + , "private-proto": ["example"] + } +, "read": + { "type": ["@", "rules", "CC", "binary"] + , "name": ["read"] + , "srcs": ["read.cc"] + , "private-proto": ["example"] + } +} diff --git a/src/proto/example.proto b/src/proto/example.proto new file mode 100644 index 0000000..69b5953 --- /dev/null +++ b/src/proto/example.proto @@ -0,0 +1,7 @@ +syntax = "proto3"; +package sample; + +message Example { + string foo = 1; + int32 bar = 2; +} diff --git a/src/proto/read.cc b/src/proto/read.cc new file mode 100644 index 0000000..f97a39a --- /dev/null +++ b/src/proto/read.cc @@ -0,0 +1,18 @@ +#include +#include + +#include "example.pb.h" + +int main(int argc, char **argv) { + sample::Example example; + + { + std::fstream input(argv[1], std::ios::in | std::ios::binary); + example.ParseFromIstream(&input); + } + + std::cout << "foo=" << example.foo() << "\n"; + std::cout << "bar=" << example.bar() << std::endl; + + return 0; +} diff --git a/src/proto/write.cc b/src/proto/write.cc new file mode 100644 index 0000000..2e206e5 --- /dev/null +++ b/src/proto/write.cc @@ -0,0 +1,17 @@ +#include +#include + +#include "example.pb.h" + +int main(int argc, char **argv) { + sample::Example example; + example.set_foo(std::string{argv[1]}); + example.set_bar(atoi(argv[2])); + { + std::fstream output(argv[3], + std::ios::out | std::ios::trunc | std::ios::binary); + example.SerializeToOstream(&output); + } + + return 0; +} -- cgit v1.2.3