mirror of
https://github.com/protobuf-c/protobuf-c.git
synced 2024-12-27 13:31:02 +08:00
git-svn-id: https://protobuf-c.googlecode.com/svn/trunk@21 00440858-1255-0410-a3e6-75ea37f81c3a
This commit is contained in:
parent
6ab9b2d6d0
commit
a9c16cc839
1
Makefile.am
Normal file
1
Makefile.am
Normal file
@ -0,0 +1 @@
|
|||||||
|
SUBDIRS = src
|
14
TODO
Normal file
14
TODO
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
- check over documentation again
|
||||||
|
- handle unknown fields when packing
|
||||||
|
- test code
|
||||||
|
|
||||||
|
- ensure enums are 32-bit
|
||||||
|
- support Group (whatever it is)
|
||||||
|
- almost no code generator options are obeyed
|
||||||
|
- ISSUE: strings may not contain NULs
|
||||||
|
- generate Init functions / handle default values
|
||||||
|
- at least include extensions in Descriptor
|
||||||
|
- proper support for extensions (not sure i get what's needed)
|
||||||
|
|
||||||
|
- get rid of kThick/ThinSeparator if we decide not to use them
|
||||||
|
- stop using qsort in the code generator: find some c++ish way to do it
|
5
bootstrap
Executable file
5
bootstrap
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#! /bin/sh -e
|
||||||
|
libtoolize
|
||||||
|
aclocal
|
||||||
|
autoconf
|
||||||
|
automake -a --foreign
|
10
configure.ac
Normal file
10
configure.ac
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
AC_INIT(src/google/protobuf-c/protobuf-c.h)
|
||||||
|
PROTOBUF_C_VERSION=0.0
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE(protobuf-c, $PROTOBUF_C_VERSION)
|
||||||
|
PACKAGE=protobuf-c
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_CXX
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
AC_OUTPUT( Makefile src/Makefile src/test/Makefile )
|
17
src/test/Makefile.am
Normal file
17
src/test/Makefile.am
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
check_PROGRAMS = test-generated-code
|
||||||
|
INCLUDES = -I$(srcdir)/..
|
||||||
|
test_generated_code_SOURCES = \
|
||||||
|
test-generated-code.c \
|
||||||
|
generated-code/test.pb-c.c
|
||||||
|
test_generated_code_LDADD = \
|
||||||
|
../libprotobuf-c.la
|
||||||
|
|
||||||
|
generated-code/test.pb-c.c generated-code/test.pb-c.h: ../protoc-c $(srcdir)/test.proto
|
||||||
|
rm -rf generated-code
|
||||||
|
mkdir generated-code
|
||||||
|
../protoc-c -I$(srcdir) --c_out=generated-code $(srcdir)/test.proto
|
||||||
|
|
||||||
|
BUILT_SOURCES = generated-code/test.pb-c.c generated-code/test.pb-c.h
|
||||||
|
DISTCLEANFILES = $(BUILT_SOURCES)
|
||||||
|
TESTS = test-generated-code
|
||||||
|
EXTRA_DIST = test.proto
|
39
src/test/test-generated-code.c
Normal file
39
src/test/test-generated-code.c
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#include "generated-code/test.pb-c.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
Foo__Person person;
|
||||||
|
Foo__Person *person2;
|
||||||
|
unsigned char simple_pad[8];
|
||||||
|
size_t size, size2;
|
||||||
|
unsigned char *packed;
|
||||||
|
ProtobufCBufferSimple bs = PROTOBUF_C_BUFFER_SIMPLE_INIT (simple_pad);
|
||||||
|
|
||||||
|
memset (&person, 0, sizeof (person));
|
||||||
|
person.descriptor = &foo__person__descriptor;
|
||||||
|
person.name = "dave b";
|
||||||
|
person.id = 42;
|
||||||
|
size = foo__person__get_packed_size (&person);
|
||||||
|
packed = malloc (size);
|
||||||
|
assert (packed);
|
||||||
|
size2 = foo__person__pack (&person, packed);
|
||||||
|
assert (size == size2);
|
||||||
|
foo__person__pack_to_buffer (&person, &bs.base);
|
||||||
|
assert (bs.len == size);
|
||||||
|
assert (memcmp (bs.data, packed, size) == 0);
|
||||||
|
PROTOBUF_C_BUFFER_SIMPLE_CLEAR (&bs);
|
||||||
|
person2 = foo__person__unpack (NULL, size, packed);
|
||||||
|
assert (person2 != NULL);
|
||||||
|
assert (person2->id == 42);
|
||||||
|
assert (strcmp (person2->name, "dave b") == 0);
|
||||||
|
|
||||||
|
foo__person__free_unpacked (person2, NULL);
|
||||||
|
free (packed);
|
||||||
|
|
||||||
|
printf ("test succeeded.\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
28
src/test/test.proto
Normal file
28
src/test/test.proto
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package foo;
|
||||||
|
|
||||||
|
message Person {
|
||||||
|
required string name = 1;
|
||||||
|
required int32 id = 2;
|
||||||
|
optional string email = 3;
|
||||||
|
|
||||||
|
enum PhoneType {
|
||||||
|
MOBILE = 0;
|
||||||
|
HOME = 1;
|
||||||
|
WORK = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message PhoneNumber {
|
||||||
|
required string number = 1;
|
||||||
|
optional PhoneType type = 2 [default = HOME];
|
||||||
|
}
|
||||||
|
|
||||||
|
repeated PhoneNumber phone = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Name {
|
||||||
|
optional string name = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
service DirLookup {
|
||||||
|
rpc ByName (Name) returns (Person);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user