]> asedeno.scripts.mit.edu Git - cl-protobufs.git/blob - pkgdcl.lisp
Merge branch '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
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    ;; Model class protocol
152    "ABSTRACT-PROTOBUF"
153    "BASE-PROTOBUF"
154    "PROTO-ALIAS-FOR"
155    "PROTO-CLASS"
156    "PROTO-CLIENT-STUB"
157    "PROTO-CONC-NAME"
158    "PROTO-DEFAULT"
159    "PROTO-DOCUMENTATION"
160    "PROTO-ENUMS"
161    "PROTO-EXTENSION-FROM"
162    "PROTO-EXTENSION-TO"
163    "PROTO-EXTENDED-FIELDS"
164    "PROTO-EXTENDERS"
165    "PROTO-EXTENSIONS"
166    "PROTO-FIELDS"
167    "PROTO-IMPORTED-SCHEMAS"
168    "PROTO-IMPORTS"
169    "PROTO-INDEX"
170    "PROTO-INPUT-NAME"
171    "PROTO-INPUT-TYPE"
172    "PROTO-LISP-PACKAGE"
173    "PROTO-MESSAGE-TYPE"
174    "PROTO-MESSAGES"
175    "PROTO-METHODS"
176    "PROTO-NAME"
177    "PROTO-OPTIONS"
178    "PROTO-OUTPUT-NAME"
179    "PROTO-OUTPUT-TYPE"
180    "PROTO-PACKAGE"
181    "PROTO-PACKED"
182    "PROTO-PARENT"
183    "PROTO-QUALIFIED-NAME"
184    "PROTO-READER"
185    "PROTO-REQUIRED"
186    "PROTO-SERVER-STUB"
187    "PROTO-SERVICES"
188    "PROTO-SLOT"
189    "PROTO-SOURCE-LOCATION"
190    "PROTO-STREAMS-NAME"
191    "PROTO-STREAMS-TYPE"
192    "PROTO-SYNTAX"
193    "PROTO-TYPE"
194    "PROTO-VALUE"
195    "PROTO-VALUES"
196    "PROTO-WRITER"
197
198    ;; Type aliases, a Lisp-only extension
199    "PROTO-TYPE-ALIASES"
200    "PROTO-LISP-TYPE"
201    "PROTO-PROTO-TYPE"
202    "PROTO-SERIALIZER"
203    "PROTO-DESERIALIZER"
204    "FIND-TYPE-ALIAS"
205
206    ;; Controls
207    "*PROTOBUF*"
208    "*PROTOBUF-PACKAGE*"
209    "*PROTOBUF-CONC-NAME*"
210    "*PROTOBUF-PATHNAME*"
211    "*PROTOBUF-SEARCH-PATH*"
212    "*PROTOBUF-OUTPUT-PATH*"
213  
214    ;; Object lookup
215    "*ALL-SCHEMAS*"
216    "*ALL-MESSAGES*"
217    "FIND-ENUM"
218    "FIND-FIELD"
219    "FIND-METHOD"                ;if you ":use proto-impl", watch for name clash
220    "FIND-OPTION"
221    "REMOVE-OPTIONS"
222
223    ;; Printing
224    "WRITE-SCHEMA-AS"
225
226    ;; Protobuf defining macros
227    "ENSURE-ALL-SCHEMAS"
228    "ENSURE-SCHEMA"
229
230    ;; CLOS to Protobufs transformer
231    "*ALIAS-EXISTING-CLASSES*"
232    "CLASS-TO-PROTOBUF-MESSAGE"
233    "SLOT-TO-PROTOBUF-FIELD"
234    "LISP-TYPE-TO-PROTOBUF-TYPE"
235    "CLOS-TYPE-TO-PROTOBUF-TYPE"
236    "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
237    "CLOS-INIT-TO-PROTOBUF-DEFAULT"
238    "PROTOBUF-DEFAULT-TO-CLOS-INIT"
239
240    ;; Serialization
241    "SERIALIZE-PRIM"
242    "SERIALIZE-PACKED"
243    "SERIALIZE-ENUM"
244    "SERIALIZE-PACKED-ENUM"
245    "DESERIALIZE-PRIM"
246    "DESERIALIZE-PACKED"
247    "DESERIALIZE-ENUM"
248    "DESERIALIZE-PACKED-ENUM"
249    "PRIM-SIZE"
250    "PACKED-SIZE"
251    "ENUM-SIZE"
252    "PACKED-ENUM-SIZE"
253    "GENERATE-SERIALIZER"
254    "GENERATE-DESERIALIZER"
255    "GENERATE-OBJECT-SIZE"
256
257    ;; Raw encoding and decoding
258    "$WIRE-TYPE-VARINT"
259    "$WIRE-TYPE-64BIT"
260    "$WIRE-TYPE-STRING"
261    "$WIRE-TYPE-START-GROUP"
262    "$WIRE-TYPE-END-GROUP"
263    "$WIRE-TYPE-32BIT"
264    "MAKE-TAG"
265    "ENCODE-UINT32"
266    "ENCODE-UINT64"
267    "ENCODE-FIXED32"
268    "ENCODE-FIXED64"
269    "ENCODE-SFIXED32"
270    "ENCODE-SFIXED64"
271    "ENCODE-SINGLE"
272    "ENCODE-DOUBLE"
273    "ENCODE-STRING"
274    "ENCODE-OCTETS"
275    "ZIG-ZAG-ENCODE32"
276    "ZIG-ZAG-ENCODE64"
277    "DECODE-UINT32"
278    "DECODE-UINT64"
279    "DECODE-INT32"
280    "DECODE-INT64"
281    "DECODE-FIXED32"
282    "DECODE-FIXED64"
283    "DECODE-SFIXED32"
284    "DECODE-SFIXED64"
285    "DECODE-SINGLE"
286    "DECODE-DOUBLE"
287    "DECODE-STRING"
288    "DECODE-OCTETS"
289    "ZIG-ZAG-DECODE32"
290    "ZIG-ZAG-DECODE64"
291    "LENGTH32"
292    "LENGTH64"
293    "SKIP-ELEMENT"
294
295    ;; Utilities
296    "CLASS-NAME->PROTO"
297    "ENUM-NAME->PROTO"
298    "SLOT-NAME->PROTO"
299    "PROTO->CLASS-NAME"
300    "PROTO->ENUM-NAME"
301    "PROTO->SLOT-NAME"
302    "PROTOBUFS-WARNING"
303    "PROTOBUFS-WARN"
304    "MAKE-QUALIFIED-NAME"
305
306    ;; Stuff for ASDF
307    "PARSE-PROTOBUF-FILE"
308    "PROCESS-IMPORTS"
309    "PROCESS-IMPORTS-FROM-FILE"
310
311    ;; Stuff for RPC stubs
312    "*RPC-PACKAGE*"
313    "*RPC-CALL-FUNCTION*"))