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