Scott McKay [Wed, 21 Mar 2012 18:15:45 +0000 (18:15 +0000)]
Fix a problem in which 'define-message' could define a circular type.
Add a new 'ensure-protobuf' function that ensures that everything in
a schema is well-defined. Makes debugging easier.
Scott McKay [Wed, 21 Mar 2012 16:02:50 +0000 (16:02 +0000)]
Fully implement class/type "override" so that 'proto:define-message'
and 'proto:define-enum' can be used to fully model existing Lisp
classes and types. This will make it much easier to reuse QRes
objects for its Protobufs API.
Scott McKay [Tue, 20 Mar 2012 14:08:20 +0000 (14:08 +0000)]
Fix some things noticed by Igor:
- The default syntax should be "proto2"
- Always emit the syntax in .proto files
- Parse syntax lines (how did I miss this?)
- .proto package names can't contain dash chars; use underscore
Scott McKay [Thu, 15 Mar 2012 22:45:41 +0000 (22:45 +0000)]
After confirming my suspicions with Robert Brown,
fix the wire protocol to (de)serialize fixed integers
with a fixed nnumber of bytes. These don't get used
much, so this went unnoticed even by his test suite.
Scott McKay [Thu, 15 Mar 2012 22:31:00 +0000 (22:31 +0000)]
Extend the 'define-proto' macrology so it can be used to
model existing families of classes, rather than always
creating new classes. This means we can use it, e.g.,
to do what 'define-xmlgen-component' does, allowing us
to do Protobufs serialization directly on, say, PNRs.
Add :class argument to 'define-message'. When it's given
explicitly, no new class is created.
Add :reader argument to fields. When it's given explicitly,
the serializer uses the reader function instead of trying
to get a value directly from a slot.
Fix serialization to use the reader if it's supplied.
Scott McKay [Thu, 8 Mar 2012 16:17:40 +0000 (16:17 +0000)]
Model options as first-class object, this so we can get the
parser working right for the top-level.proto file and for
the RPCs within service declarations.
Scott McKay [Wed, 7 Mar 2012 18:42:14 +0000 (18:42 +0000)]
Make the defining macros leave more meta-data for Lisp code generation.
Make 'print-text-format' be a generic function.
Make 'write-protobuf[-as]' specialize on a formatting type, i.e.,
:proto or :lisp.
Add a Lisp printer, this so that the upcoming parser can read .proto
files and generate .lisp files.
Add lots and lots of doc strings.
Scott McKay [Tue, 6 Mar 2012 20:46:38 +0000 (20:46 +0000)]
Reorder a few things for readability.
Make it possible to deserialize objects that were serialized from
a previous, compatibile version of a message.
Add 'protobuf-upgradable' predicate, which returns true iff a new
version of a .proto schema is compatible with an older version.