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