]> asedeno.scripts.mit.edu Git - cl-protobufs.git/blob - proto-pkgdcl.lisp
Get google/protobuf/unittest.proto working, insofar as it parses
[cl-protobufs.git] / proto-pkgdcl.lisp
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;;;                                                                  ;;;
3 ;;; Confidential and proprietary information of ITA Software, Inc.   ;;;
4 ;;;                                                                  ;;;
5 ;;; Copyright (c) 2012 ITA Software, Inc.  All rights reserved.      ;;;
6 ;;;                                                                  ;;;
7 ;;; Original author: Scott McKay                                     ;;;
8 ;;;                                                                  ;;;
9 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10
11 (in-package "CL-USER")
12
13
14 ;;; Package declaration for Protoubfs
15
16 (defpackage protobufs
17   (:nicknames :proto)
18
19   ;; For repeated slots
20   (:export
21    "LIST-OF")
22
23   ;; ASDF module type
24   (:export
25    "PROTO-FILE")
26   
27   ;; The Protobufs API
28   (:export
29    ;; Model classes
30    "PROTOBUF"
31    "PROTOBUF-OPTION"
32    "PROTOBUF-ENUM"
33    "PROTOBUF-ENUM-VALUE"
34    "PROTOBUF-MESSAGE"
35    "PROTOBUF-FIELD"
36    "PROTOBUF-EXTENSION"
37    "PROTOBUF-SERVICE"
38    "PROTOBUF-METHOD"
39
40    ;; .proto parsing and printing
41    "PARSE-PROTOBUF-FROM-FILE"
42    "PARSE-PROTOBUF-FROM-STREAM"
43    "WRITE-PROTOBUF"
44
45    ;; Protobuf defining macros
46    "DEFINE-PROTO"
47    "DEFINE-ENUM"
48    "DEFINE-MESSAGE"
49    "DEFINE-EXTEND"
50    "DEFINE-EXTENSION"
51    "DEFINE-GROUP"
52    "DEFINE-SERVICE"
53
54    ;; Upgradability testing
55    "PROTOBUF-UPGRADABLE"
56
57    ;; CLOS to Protobufs transformer
58    "WRITE-PROTOBUF-SCHEMA-FOR-CLASSES"
59    "GENERATE-PROTOBUF-SCHEMA-FOR-CLASSES"
60
61    ;; Serialization and deserialization (wire format)
62    "SERIALIZE-OBJECT-TO-FILE"
63    "SERIALIZE-OBJECT-TO-STREAM"
64    "SERIALIZE-OBJECT"
65    "DESERIALIZE-OBJECT-FROM-FILE"
66    "DESERIALIZE-OBJECT-FROM-STREAM"
67    "DESERIALIZE-OBJECT"
68    "OBJECT-SIZE"
69
70    ;; Serialization and deserialization (text format)
71    "PARSE-TEXT-FORMAT"
72    "PRINT-TEXT-FORMAT")
73
74   ;; Miscellaneous bits of the API
75   (:export
76    "GET-EXTENSION"
77    "SET-EXTENSION"
78    "HAS-EXTENSION"
79    "CLEAR-EXTENSION"
80    "OBJECT-INITIALIZED-P"
81    "SLOT-INITIALIZED-P"
82    "REINITIALIZE-OBJECT")
83
84   ;; The Python "compatibility" API
85   (:export
86    "CLEAR"
87    "HAS-FIELD"
88    "IS-INITIALIZED"
89    "OCTET-SIZE"
90    "SERIALIZE"
91    "MERGE-FROM-ARRAY"
92    "MERGE-FROM-MESSAGE"))
93
94 (defpackage protobufs-implementation
95   (:nicknames :proto-impl)
96   (:use :common-lisp :protobufs)
97
98   (:import-from :closer-mop
99    "CLASS-SLOTS"
100    "CLASS-DIRECT-SLOTS"
101    "CLASS-PRECEDENCE-LIST"
102    "SLOT-DEFINITION-NAME"
103    "SLOT-DEFINITION-TYPE"
104    "SLOT-DEFINITION-INITFORM"
105    "SLOT-DEFINITION-READERS")
106
107   (:export
108    ;; Model class protocol
109    "ABSTRACT-PROTOBUF"
110    "BASE-PROTOBUF"
111    "PROTO-ALIAS-FOR"
112    "PROTO-CLASS"
113    "PROTO-DEFAULT"
114    "PROTO-DOCUMENTATION"
115    "PROTO-ENUMS"
116    "PROTO-EXTENSION-FROM"
117    "PROTO-EXTENSION-TO"
118    "PROTO-EXTENDERS"
119    "PROTO-EXTENSIONS"
120    "PROTO-FIELDS"
121    "PROTO-FUNCTION"
122    "PROTO-IMPORTS"
123    "PROTO-INDEX"
124    "PROTO-INPUT-NAME"
125    "PROTO-INPUT-TYPE"
126    "PROTO-LISP-PACKAGE"
127    "PROTO-MESSAGE-TYPE"
128    "PROTO-MESSAGES"
129    "PROTO-METHODS"
130    "PROTO-NAME"
131    "PROTO-OPTIONS"
132    "PROTO-OUTPUT-NAME"
133    "PROTO-OUTPUT-TYPE"
134    "PROTO-PACKAGE"
135    "PROTO-PACKED"
136    "PROTO-PARENT"
137    "PROTO-READER"
138    "PROTO-REQUIRED"
139    "PROTO-SERVICES"
140    "PROTO-SYNTAX"
141    "PROTO-TYPE"
142    "PROTO-VALUE"
143    "PROTO-VALUES"
144    "PROTO-WRITER"
145
146    ;; Object lookup
147    "FIND-PROTOBUF"
148    "FIND-MESSAGE-FOR-CLASS"
149    "FIND-MESSAGE"
150    "FIND-ENUM"
151    "FIND-FIELD"
152    "FIND-OPTION"
153
154    ;; Printing
155    "WRITE-PROTOBUF-AS"
156
157    ;; Protobuf defining macros
158    "ENSURE-ALL-PROTOBUFS"
159    "ENSURE-PROTOBUF"
160
161    ;; CLOS to Protobufs transformer
162    "*ALIAS-EXISTING-CLASSES*"
163    "CLASS-TO-PROTOBUF-MESSAGE"
164    "SLOT-TO-PROTOBUF-FIELD"
165    "CLOS-TYPE-TO-PROTOBUF-TYPE"
166    "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
167    "CLOS-INIT-TO-PROTOBUF-DEFAULT"
168    "PROTOBUF-DEFAULT-TO-CLOS-INIT"
169
170    ;; Serialization
171    "SERIALIZE-PRIM"
172    "SERIALIZE-PACKED"
173    "SERIALIZE-ENUM"
174    "DESERIALIZE-PRIM"
175    "DESERIALIZE-PACKED"
176    "DESERIALIZE-ENUM"
177    "PRIM-SIZE"
178    "PACKED-SIZE"
179    "ENUM-SIZE"
180    "GENERATE-SERIALIZER"
181    "GENERATE-DESERIALIZER"
182    "GENERATE-OBJECT-SIZE"
183
184    ;; Raw encoding and decoding
185    "$WIRE-TYPE-VARINT"
186    "$WIRE-TYPE-64BIT"
187    "$WIRE-TYPE-STRING"
188    "$WIRE-TYPE-START-GROUP"
189    "$WIRE-TYPE-END-GROUP"
190    "$WIRE-TYPE-32BIT"
191    "MAKE-TAG"
192    "ENCODE-UINT32"
193    "ENCODE-UINT64"
194    "ENCODE-FIXED32"
195    "ENCODE-FIXED64"
196    "ENCODE-SINGLE"
197    "ENCODE-DOUBLE"
198    "ENCODE-STRING"
199    "ENCODE-OCTETS"
200    "ZIG-ZAG-ENCODE32"
201    "ZIG-ZAG-ENCODE64"
202    "DECODE-UINT32"
203    "DECODE-UINT64"
204    "DECODE-INT32"
205    "DECODE-INT64"
206    "DECODE-FIXED32"
207    "DECODE-FIXED64"
208    "DECODE-SINGLE"
209    "DECODE-DOUBLE"
210    "DECODE-STRING"
211    "DECODE-OCTETS"
212    "ZIG-ZAG-DECODE32"
213    "ZIG-ZAG-DECODE64"
214    "LENGTH32"
215    "LENGTH64"
216    "SKIP-ELEMENT"
217
218    ;; Utilities
219    "CLASS-NAME->PROTO"
220    "ENUM-NAME->PROTO"
221    "SLOT-NAME->PROTO"
222    "PROTO->CLASS-NAME"
223    "PROTO->ENUM-NAME"
224    "PROTO->SLOT-NAME"
225    "PROTOBUFS-WARNING"
226    "PROTOBUFS-WARN"))