]> asedeno.scripts.mit.edu Git - cl-protobufs.git/blob - pkgdcl.lisp
Don't kluge *asdf-verbose* on asdf3.
[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    "SERIALIZATION-ERROR"
60
61    ;; Object lookup
62    "FIND-MESSAGE"
63    "FIND-MESSAGE-FOR-CLASS"
64    "FIND-SCHEMA"
65    "FIND-SERVICE"
66
67    ;; .proto parsing and printing
68    "PARSE-SCHEMA-FROM-FILE"
69    "PARSE-SCHEMA-FROM-STREAM"
70    "WRITE-SCHEMA"
71
72    ;; Protobuf defining macros
73    "DEFINE-SCHEMA"
74    "DEFINE-ENUM"
75    "DEFINE-MESSAGE"
76    "DEFINE-EXTEND"
77    "DEFINE-EXTENSION"
78    "DEFINE-GROUP"
79    "DEFINE-SERVICE"
80    "DEFINE-TYPE-ALIAS"          ;Lisp-only extension
81
82    ;; Upgradability and equality testing
83    "SCHEMA-UPGRADABLE"
84    "SCHEMAS-EQUAL"
85
86    ;; CLOS to Protobufs transformer
87    "WRITE-SCHEMA-FOR-CLASSES"
88    "GENERATE-SCHEMA-FOR-CLASSES"
89
90    ;; Serialization and deserialization (wire format)
91    "SERIALIZE-OBJECT-TO-FILE"
92    "SERIALIZE-OBJECT-TO-STREAM"
93    "SERIALIZE-OBJECT-TO-BYTES"
94    "SERIALIZE-OBJECT"
95    "DESERIALIZE-OBJECT-FROM-FILE"
96    "DESERIALIZE-OBJECT-FROM-STREAM"
97    "DESERIALIZE-OBJECT-FROM-BYTES"
98    "DESERIALIZE-OBJECT"
99    "OBJECT-SIZE"
100
101    ;; Serialization and deserialization (text format)
102    "PARSE-TEXT-FORMAT"
103    "PRINT-TEXT-FORMAT")
104
105   ;; Extensions
106   (:export
107    "GET-EXTENSION"
108    "SET-EXTENSION"
109    "HAS-EXTENSION"
110    "CLEAR-EXTENSION")
111
112   ;; The Python "compatibility" API
113   (:export
114    "IS-INITIALIZED"
115    "CLEAR"
116    "HAS-FIELD"
117    "CLEAR-FIELD"
118    "OCTET-SIZE"
119    "SERIALIZE"
120    "MERGE-FROM-ARRAY"
121    "MERGE-FROM-MESSAGE")
122
123   ;; Miscellany
124   (:export
125    "OBJECT-INITIALIZED-P"
126    "SLOT-INITIALIZED-P"
127    "REINITIALIZE-OBJECT"
128    "REINITIALIZE-FIELD"
129    "REINITIALIZE-SLOT"))
130
131
132 (defpackage protobufs-implementation
133   (:nicknames :proto-impl)
134   (:use :common-lisp :protobufs)
135
136   (:shadow
137    "FIND-METHOD")
138   (:import-from :closer-mop
139    "CLASS-SLOTS"
140    "CLASS-DIRECT-SLOTS"
141    "CLASS-PRECEDENCE-LIST"
142    "CLASS-FINALIZED-P"
143    "FINALIZE-INHERITANCE"
144    "SLOT-DEFINITION-NAME"
145    "SLOT-DEFINITION-TYPE"
146    "SLOT-DEFINITION-INITFORM"
147    "SLOT-DEFINITION-INITFUNCTION"
148    "SLOT-DEFINITION-READERS"
149    "SLOT-DEFINITION-WRITERS")
150
151   (:export
152    ;; Base class for messages
153    "BASE-PROTOBUF-MESSAGE"
154
155    ;; Model class protocol
156    "ABSTRACT-PROTOBUF"
157    "BASE-PROTOBUF"
158    "PROTO-ALIAS-FOR"
159    "PROTO-CLASS"
160    "PROTO-CLIENT-STUB"
161    "PROTO-CONC-NAME"
162    "PROTO-DEFAULT"
163    "PROTO-DOCUMENTATION"
164    "PROTO-ENUMS"
165    "PROTO-EXTENSION-FROM"
166    "PROTO-EXTENSION-TO"
167    "PROTO-EXTENDED-FIELDS"
168    "PROTO-EXTENDERS"
169    "PROTO-EXTENSIONS"
170    "PROTO-FIELDS"
171    "PROTO-IMPORTED-SCHEMAS"
172    "PROTO-IMPORTS"
173    "PROTO-INDEX"
174    "PROTO-INPUT-NAME"
175    "PROTO-INPUT-TYPE"
176    "PROTO-LISP-PACKAGE"
177    "PROTO-MESSAGE-TYPE"
178    "PROTO-MESSAGES"
179    "PROTO-METHODS"
180    "PROTO-NAME"
181    "PROTO-OPTIONS"
182    "PROTO-OUTPUT-NAME"
183    "PROTO-OUTPUT-TYPE"
184    "PROTO-PACKAGE"
185    "PROTO-PACKED"
186    "PROTO-PARENT"
187    "PROTO-QUALIFIED-NAME"
188    "PROTO-READER"
189    "PROTO-REQUIRED"
190    "PROTO-SERVER-STUB"
191    "PROTO-SERVICES"
192    "PROTO-SLOT"
193    "PROTO-SOURCE-LOCATION"
194    "PROTO-STREAMS-NAME"
195    "PROTO-STREAMS-TYPE"
196    "PROTO-SYNTAX"
197    "PROTO-TYPE"
198    "PROTO-VALUE"
199    "PROTO-VALUES"
200    "PROTO-WRITER"
201
202    ;; Type aliases, a Lisp-only extension
203    "PROTO-TYPE-ALIASES"
204    "PROTO-LISP-TYPE"
205    "PROTO-PROTO-TYPE"
206    "PROTO-SERIALIZER"
207    "PROTO-DESERIALIZER"
208    "FIND-TYPE-ALIAS"
209
210    ;; Controls
211    "*PROTOBUF*"
212    "*PROTOBUF-PACKAGE*"
213    "*PROTOBUF-CONC-NAME*"
214    "*PROTOBUF-PATHNAME*"
215    "*PROTOBUF-SEARCH-PATH*"
216    "*PROTOBUF-OUTPUT-PATH*"
217  
218    ;; Object lookup
219    "*ALL-SCHEMAS*"
220    "*ALL-MESSAGES*"
221    "FIND-ENUM"
222    "FIND-FIELD"
223    "FIND-METHOD"                ;if you ":use proto-impl", watch for name clash
224    "MAKE-OPTION"
225    "FIND-OPTION"
226    "ADD-OPTION"
227    "REMOVE-OPTIONS"
228
229    ;; Printing
230    "WRITE-SCHEMA-AS"
231
232    ;; Protobuf defining macros
233    "ENSURE-ALL-SCHEMAS"
234    "ENSURE-SCHEMA"
235
236    ;; CLOS to Protobufs transformer
237    "*ALIAS-EXISTING-CLASSES*"
238    "CLASS-TO-PROTOBUF-MESSAGE"
239    "SLOT-TO-PROTOBUF-FIELD"
240    "LISP-TYPE-TO-PROTOBUF-TYPE"
241    "CLOS-TYPE-TO-PROTOBUF-TYPE"
242    "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
243    "CLOS-INIT-TO-PROTOBUF-DEFAULT"
244    "PROTOBUF-DEFAULT-TO-CLOS-INIT"
245
246    ;; Serialization
247    "SERIALIZE-PRIM"
248    "SERIALIZE-PACKED"
249    "SERIALIZE-ENUM"
250    "SERIALIZE-PACKED-ENUM"
251    "DESERIALIZE-PRIM"
252    "DESERIALIZE-PACKED"
253    "DESERIALIZE-ENUM"
254    "DESERIALIZE-PACKED-ENUM"
255    "PRIM-SIZE"
256    "PACKED-SIZE"
257    "ENUM-SIZE"
258    "PACKED-ENUM-SIZE"
259    "GENERATE-SERIALIZER"
260    "GENERATE-DESERIALIZER"
261    "GENERATE-OBJECT-SIZE"
262
263    ;; Raw encoding and decoding
264    "$WIRE-TYPE-VARINT"
265    "$WIRE-TYPE-64BIT"
266    "$WIRE-TYPE-STRING"
267    "$WIRE-TYPE-START-GROUP"
268    "$WIRE-TYPE-END-GROUP"
269    "$WIRE-TYPE-32BIT"
270    "MAKE-TAG"
271    "ENCODE-INT"
272    "ENCODE-UINT32"
273    "ENCODE-UINT64"
274    "ENCODE-FIXED32"
275    "ENCODE-FIXED64"
276    "ENCODE-SFIXED32"
277    "ENCODE-SFIXED64"
278    "ENCODE-SINGLE"
279    "ENCODE-DOUBLE"
280    "ENCODE-STRING"
281    "ENCODE-OCTETS"
282    "ZIG-ZAG-ENCODE32"
283    "ZIG-ZAG-ENCODE64"
284    "DECODE-INT"
285    "DECODE-UINT32"
286    "DECODE-UINT64"
287    "DECODE-FIXED32"
288    "DECODE-FIXED64"
289    "DECODE-SFIXED32"
290    "DECODE-SFIXED64"
291    "DECODE-SINGLE"
292    "DECODE-DOUBLE"
293    "DECODE-STRING"
294    "DECODE-OCTETS"
295    "ZIG-ZAG-DECODE32"
296    "ZIG-ZAG-DECODE64"
297    "VARINT-LENGTH"
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*"))