]> asedeno.scripts.mit.edu Git - cl-protobufs.git/blob - pkgdcl.lisp
Make it a bit easier to debug .proto files interactively
[cl-protobufs.git] / pkgdcl.lisp
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;;;                                                                  ;;;
3 ;;; Free Software published under an MIT-like license. See LICENSE   ;;;
4 ;;;                                                                  ;;;
5 ;;; Copyright (c) 2012 Google, Inc.  All rights reserved.            ;;;
6 ;;;                                                                  ;;;
7 ;;; Original author: Scott McKay                                     ;;;
8 ;;;                                                                  ;;;
9 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10
11 (in-package "CL-USER")
12
13
14 ;;; Package declaration for Protobufs
15
16 (defpackage protobufs
17   (:nicknames :proto)
18   (:use)
19
20   ;; Some types useful for defining messages
21   (:export
22    "INT32"
23    "INT64"
24    "UINT32"
25    "UINT64"
26    "SINT32"
27    "SINT64"
28    "FIXED32"
29    "FIXED64"
30    "SFIXED32"
31    "SFIXED64"
32    "LIST-OF"
33    "VECTOR-OF"
34    "BYTE-VECTOR"
35    "MAKE-BYTE-VECTOR")
36
37   ;; The Protobufs API
38   (:export
39    ;; Model classes
40    "PROTOBUF-SCHEMA"
41    "PROTOBUF-OPTION"
42    "PROTOBUF-ENUM"
43    "PROTOBUF-ENUM-VALUE"
44    "PROTOBUF-MESSAGE"
45    "PROTOBUF-FIELD"
46    "PROTOBUF-EXTENSION"
47    "PROTOBUF-SERVICE"
48    "PROTOBUF-METHOD"
49    "PROTOBUF-TYPE-ALIAS"        ;Lisp-only extension
50
51    ;; Conditions
52    "UNDEFINED-FIELD-TYPE"
53    "UNDEFINED-INPUT-TYPE"
54    "UNDEFINED-OUTPUT-TYPE"
55    "UNDEFINED-STREAM-TYPE"
56    "ERROR-TYPE-NAME"
57    "ERROR-FIELD"
58    "ERROR-METHOD"
59
60    ;; Object lookup
61    "FIND-MESSAGE"
62    "FIND-MESSAGE-FOR-CLASS"
63    "FIND-SCHEMA"
64    "FIND-SERVICE"
65
66    ;; .proto parsing and printing
67    "PARSE-SCHEMA-FROM-FILE"
68    "PARSE-SCHEMA-FROM-STREAM"
69    "WRITE-SCHEMA"
70
71    ;; Protobuf defining macros
72    "DEFINE-SCHEMA"
73    "DEFINE-ENUM"
74    "DEFINE-MESSAGE"
75    "DEFINE-EXTEND"
76    "DEFINE-EXTENSION"
77    "DEFINE-GROUP"
78    "DEFINE-SERVICE"
79    "DEFINE-TYPE-ALIAS"          ;Lisp-only extension
80
81    ;; Upgradability and equality testing
82    "SCHEMA-UPGRADABLE"
83    "SCHEMAS-EQUAL"
84
85    ;; CLOS to Protobufs transformer
86    "WRITE-SCHEMA-FOR-CLASSES"
87    "GENERATE-SCHEMA-FOR-CLASSES"
88
89    ;; Serialization and deserialization (wire format)
90    "SERIALIZE-OBJECT-TO-FILE"
91    "SERIALIZE-OBJECT-TO-STREAM"
92    "SERIALIZE-OBJECT-TO-BYTES"
93    "SERIALIZE-OBJECT"
94    "DESERIALIZE-OBJECT-FROM-FILE"
95    "DESERIALIZE-OBJECT-FROM-STREAM"
96    "DESERIALIZE-OBJECT-FROM-BYTES"
97    "DESERIALIZE-OBJECT"
98    "OBJECT-SIZE"
99
100    ;; Serialization and deserialization (text format)
101    "PARSE-TEXT-FORMAT"
102    "PRINT-TEXT-FORMAT")
103
104   ;; Extensions
105   (:export
106    "GET-EXTENSION"
107    "SET-EXTENSION"
108    "HAS-EXTENSION"
109    "CLEAR-EXTENSION")
110
111   ;; The Python "compatibility" API
112   (:export
113    "IS-INITIALIZED"
114    "CLEAR"
115    "HAS-FIELD"
116    "CLEAR-FIELD"
117    "OCTET-SIZE"
118    "SERIALIZE"
119    "MERGE-FROM-ARRAY"
120    "MERGE-FROM-MESSAGE")
121
122   ;; Miscellany
123   (:export
124    "OBJECT-INITIALIZED-P"
125    "SLOT-INITIALIZED-P"
126    "REINITIALIZE-OBJECT"
127    "REINITIALIZE-FIELD"
128    "REINITIALIZE-SLOT"))
129
130
131 (defpackage protobufs-implementation
132   (:nicknames :proto-impl)
133   (:use :common-lisp :protobufs)
134
135   (:shadow
136    "FIND-METHOD")
137   (:import-from :closer-mop
138    "CLASS-SLOTS"
139    "CLASS-DIRECT-SLOTS"
140    "CLASS-PRECEDENCE-LIST"
141    "CLASS-FINALIZED-P"
142    "FINALIZE-INHERITANCE"
143    "SLOT-DEFINITION-NAME"
144    "SLOT-DEFINITION-TYPE"
145    "SLOT-DEFINITION-INITFORM"
146    "SLOT-DEFINITION-INITFUNCTION"
147    "SLOT-DEFINITION-READERS"
148    "SLOT-DEFINITION-WRITERS")
149
150   (:export
151    ;; Base class for messages
152    "BASE-PROTOBUF-MESSAGE"
153
154    ;; Model class protocol
155    "ABSTRACT-PROTOBUF"
156    "BASE-PROTOBUF"
157    "PROTO-ALIAS-FOR"
158    "PROTO-CLASS"
159    "PROTO-CLIENT-STUB"
160    "PROTO-CONC-NAME"
161    "PROTO-DEFAULT"
162    "PROTO-DOCUMENTATION"
163    "PROTO-ENUMS"
164    "PROTO-EXTENSION-FROM"
165    "PROTO-EXTENSION-TO"
166    "PROTO-EXTENDED-FIELDS"
167    "PROTO-EXTENDERS"
168    "PROTO-EXTENSIONS"
169    "PROTO-FIELDS"
170    "PROTO-IMPORTED-SCHEMAS"
171    "PROTO-IMPORTS"
172    "PROTO-INDEX"
173    "PROTO-INPUT-NAME"
174    "PROTO-INPUT-TYPE"
175    "PROTO-LISP-PACKAGE"
176    "PROTO-MESSAGE-TYPE"
177    "PROTO-MESSAGES"
178    "PROTO-METHODS"
179    "PROTO-NAME"
180    "PROTO-OPTIONS"
181    "PROTO-OUTPUT-NAME"
182    "PROTO-OUTPUT-TYPE"
183    "PROTO-PACKAGE"
184    "PROTO-PACKED"
185    "PROTO-PARENT"
186    "PROTO-QUALIFIED-NAME"
187    "PROTO-READER"
188    "PROTO-REQUIRED"
189    "PROTO-SERVER-STUB"
190    "PROTO-SERVICES"
191    "PROTO-SLOT"
192    "PROTO-SOURCE-LOCATION"
193    "PROTO-STREAMS-NAME"
194    "PROTO-STREAMS-TYPE"
195    "PROTO-SYNTAX"
196    "PROTO-TYPE"
197    "PROTO-VALUE"
198    "PROTO-VALUES"
199    "PROTO-WRITER"
200
201    ;; Type aliases, a Lisp-only extension
202    "PROTO-TYPE-ALIASES"
203    "PROTO-LISP-TYPE"
204    "PROTO-PROTO-TYPE"
205    "PROTO-SERIALIZER"
206    "PROTO-DESERIALIZER"
207    "FIND-TYPE-ALIAS"
208
209    ;; Controls
210    "*PROTOBUF*"
211    "*PROTOBUF-PACKAGE*"
212    "*PROTOBUF-CONC-NAME*"
213    "*PROTOBUF-PATHNAME*"
214    "*PROTOBUF-SEARCH-PATH*"
215    "*PROTOBUF-OUTPUT-PATH*"
216  
217    ;; Object lookup
218    "*ALL-SCHEMAS*"
219    "*ALL-MESSAGES*"
220    "FIND-ENUM"
221    "FIND-FIELD"
222    "FIND-METHOD"                ;if you ":use proto-impl", watch for name clash
223    "MAKE-OPTION"
224    "FIND-OPTION"
225    "ADD-OPTION"
226    "REMOVE-OPTIONS"
227
228    ;; Printing
229    "WRITE-SCHEMA-AS"
230
231    ;; Protobuf defining macros
232    "ENSURE-ALL-SCHEMAS"
233    "ENSURE-SCHEMA"
234
235    ;; CLOS to Protobufs transformer
236    "*ALIAS-EXISTING-CLASSES*"
237    "CLASS-TO-PROTOBUF-MESSAGE"
238    "SLOT-TO-PROTOBUF-FIELD"
239    "LISP-TYPE-TO-PROTOBUF-TYPE"
240    "CLOS-TYPE-TO-PROTOBUF-TYPE"
241    "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
242    "CLOS-INIT-TO-PROTOBUF-DEFAULT"
243    "PROTOBUF-DEFAULT-TO-CLOS-INIT"
244
245    ;; Serialization
246    "SERIALIZE-PRIM"
247    "SERIALIZE-PACKED"
248    "SERIALIZE-ENUM"
249    "SERIALIZE-PACKED-ENUM"
250    "DESERIALIZE-PRIM"
251    "DESERIALIZE-PACKED"
252    "DESERIALIZE-ENUM"
253    "DESERIALIZE-PACKED-ENUM"
254    "PRIM-SIZE"
255    "PACKED-SIZE"
256    "ENUM-SIZE"
257    "PACKED-ENUM-SIZE"
258    "GENERATE-SERIALIZER"
259    "GENERATE-DESERIALIZER"
260    "GENERATE-OBJECT-SIZE"
261
262    ;; Raw encoding and decoding
263    "$WIRE-TYPE-VARINT"
264    "$WIRE-TYPE-64BIT"
265    "$WIRE-TYPE-STRING"
266    "$WIRE-TYPE-START-GROUP"
267    "$WIRE-TYPE-END-GROUP"
268    "$WIRE-TYPE-32BIT"
269    "MAKE-TAG"
270    "ENCODE-UINT32"
271    "ENCODE-UINT64"
272    "ENCODE-FIXED32"
273    "ENCODE-FIXED64"
274    "ENCODE-SFIXED32"
275    "ENCODE-SFIXED64"
276    "ENCODE-SINGLE"
277    "ENCODE-DOUBLE"
278    "ENCODE-STRING"
279    "ENCODE-OCTETS"
280    "ZIG-ZAG-ENCODE32"
281    "ZIG-ZAG-ENCODE64"
282    "DECODE-UINT32"
283    "DECODE-UINT64"
284    "DECODE-INT32"
285    "DECODE-INT64"
286    "DECODE-FIXED32"
287    "DECODE-FIXED64"
288    "DECODE-SFIXED32"
289    "DECODE-SFIXED64"
290    "DECODE-SINGLE"
291    "DECODE-DOUBLE"
292    "DECODE-STRING"
293    "DECODE-OCTETS"
294    "ZIG-ZAG-DECODE32"
295    "ZIG-ZAG-DECODE64"
296    "LENGTH32"
297    "LENGTH64"
298    "SKIP-ELEMENT"
299
300    ;; Utilities
301    "CLASS-NAME->PROTO"
302    "ENUM-NAME->PROTO"
303    "SLOT-NAME->PROTO"
304    "PROTO->CLASS-NAME"
305    "PROTO->ENUM-NAME"
306    "PROTO->SLOT-NAME"
307    "PROTOBUFS-WARNING"
308    "PROTOBUFS-WARN"
309    "MAKE-QUALIFIED-NAME"
310
311    ;; Stuff for ASDF
312    "PARSE-PROTOBUF-FILE"
313    "PROCESS-IMPORTS"
314    "PROCESS-IMPORTS-FROM-FILE"
315
316    ;; Stuff for RPC stubs
317    "*RPC-PACKAGE*"
318    "*RPC-CALL-FUNCTION*"))