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