]> asedeno.scripts.mit.edu Git - cl-protobufs.git/blob - proto-pkgdcl.lisp
8a04af91ccc766fb9ce1b2cfe1f270ef910721f2
[cl-protobufs.git] / proto-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 Protoubfs
15
16 (defpackage protobufs
17   (:nicknames :proto)
18
19   ;; For repeated slots
20   (:export
21    "LIST-OF")
22
23   ;; The Protobufs API
24   (:export
25    ;; Model classes
26    "PROTOBUF"
27    "PROTOBUF-OPTION"
28    "PROTOBUF-ENUM"
29    "PROTOBUF-ENUM-VALUE"
30    "PROTOBUF-MESSAGE"
31    "PROTOBUF-FIELD"
32    "PROTOBUF-EXTENSION"
33    "PROTOBUF-SERVICE"
34    "PROTOBUF-METHOD"
35
36    ;; .proto parsing and printing
37    "PARSE-PROTOBUF-FROM-FILE"
38    "PARSE-PROTOBUF-FROM-STREAM"
39    "WRITE-PROTOBUF"
40
41    ;; Protobuf defining macros
42    "DEFINE-PROTO"
43    "DEFINE-ENUM"
44    "DEFINE-MESSAGE"
45    "DEFINE-EXTENDS"
46    "DEFINE-EXTENSION"
47    "DEFINE-SERVICE"
48
49    ;; Upgradability testing
50    "PROTOBUF-UPGRADABLE"
51
52    ;; CLOS to Protobufs transformer
53    "WRITE-PROTOBUF-SCHEMA-FOR-CLASSES"
54    "GENERATE-PROTOBUF-SCHEMA-FOR-CLASSES"
55
56    ;; Serialization and deserialization (wire format)
57    "SERIALIZE-OBJECT-TO-STREAM"
58    "SERIALIZE-OBJECT"
59    "DESERIALIZE-OBJECT-FROM-STREAM"
60    "DESERIALIZE-OBJECT"
61    "OBJECT-SIZE"
62
63    ;; Serialization and deserialization (text format)
64    "PARSE-TEXT-FORMAT"
65    "PRINT-TEXT-FORMAT")
66
67   ;; The "compatibility" API, whose names are taken from the Python API
68   (:export
69    "CLEAR"
70    "IS-INITIALIZED"
71    "OCTET-SIZE"
72    "SERIALIZE"
73    "MERGE-FROM-ARRAY"
74    "MERGE-FROM-MESSAGE"))
75
76 (defpackage protobufs-implementation
77   (:nicknames :proto-impl)
78   (:use :common-lisp #+quux :quux :protobufs)
79
80   #+quux
81   (:shadowing-import-from :protobufs
82    "LIST-OF")
83   #+quux
84   (:shadow "DECLARE-LIST-OF" "%DECLARE-LIST-OF")
85
86   #-quux
87   (:import-from :closer-mop
88    "CLASS-SLOTS"
89    "CLASS-DIRECT-SLOTS"
90    "CLASS-PRECEDENCE-LIST"
91    "SLOT-DEFINITION-NAME"
92    "SLOT-DEFINITION-TYPE"
93    "SLOT-DEFINITION-INITFORM"
94    "SLOT-DEFINITION-READERS")
95
96   (:export
97    ;; Model class protocol
98    "ABSTRACT-PROTOBUF"
99    "BASE-PROTOBUF"
100    "PROTO-ALIAS-FOR"
101    "PROTO-CLASS"
102    "PROTO-DEFAULT"
103    "PROTO-DOCUMENTATION"
104    "PROTO-ENUMS"
105    "PROTO-EXTENSION-FROM"
106    "PROTO-EXTENSION-TO"
107    "PROTO-EXTENSION-P"
108    "PROTO-EXTENSIONS"
109    "PROTO-FIELDS"
110    "PROTO-FUNCTION"
111    "PROTO-IMPORTS"
112    "PROTO-INDEX"
113    "PROTO-INPUT-NAME"
114    "PROTO-INPUT-TYPE"
115    "PROTO-LISP-PACKAGE"
116    "PROTO-MESSAGES"
117    "PROTO-METHODS"
118    "PROTO-NAME"
119    "PROTO-OPTIMIZE"
120    "PROTO-OPTIONS"
121    "PROTO-OUTPUT-NAME"
122    "PROTO-OUTPUT-TYPE"
123    "PROTO-PACKAGE"
124    "PROTO-PACKED"
125    "PROTO-PARENT"
126    "PROTO-READER"
127    "PROTO-REQUIRED"
128    "PROTO-SERVICES"
129    "PROTO-SYNTAX"
130    "PROTO-TYPE"
131    "PROTO-VALUE"
132    "PROTO-VALUES"
133    "PROTO-WRITER"
134    "FIND-PROTOBUF"
135    "FIND-MESSAGE-FOR-CLASS"
136    "FIND-MESSAGE"
137    "FIND-ENUM"
138    "FIND-OPTION"
139
140    ;; Printing
141    "WRITE-PROTOBUF-AS"
142
143    ;; Protobuf defining macros
144    "ENSURE-ALL-PROTOBUFS"
145    "ENSURE-PROTOBUF"
146
147    ;; CLOS to Protobufs transformer
148    "*ALIAS-EXISTING-CLASSES*"
149    "CLASS-TO-PROTOBUF-MESSAGE"
150    "SLOT-TO-PROTOBUF-FIELD"
151    "CLOS-TYPE-TO-PROTOBUF-TYPE"
152    "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
153    "CLOS-INIT-TO-PROTOBUF-DEFAULT"
154    "PROTOBUF-DEFAULT-TO-CLOS-INIT"
155
156    ;; Serialization
157    "SERIALIZE-PRIM"
158    "SERIALIZE-PACKED"
159    "SERIALIZE-ENUM"
160    "DESERIALIZE-PRIM"
161    "DESERIALIZE-PACKED"
162    "DESERIALIZE-ENUM"
163    "PRIM-SIZE"
164    "PACKED-SIZE"
165    "ENUM-SIZE"
166    "GENERATE-SERIALIZER"
167    "GENERATE-DESERIALIZER"
168    "GENERATE-OBJECT-SIZE"
169
170    ;; Raw encoding and decoding
171    "$WIRE-TYPE-VARINT"
172    "$WIRE-TYPE-64BIT"
173    "$WIRE-TYPE-STRING"
174    "$WIRE-TYPE-32BIT"
175    "MAKE-TAG"
176    "ENCODE-UINT32"
177    "ENCODE-UINT64"
178    "ENCODE-FIXED32"
179    "ENCODE-FIXED64"
180    "ENCODE-SINGLE"
181    "ENCODE-DOUBLE"
182    "ENCODE-OCTETS"
183    "ZIG-ZAG-ENCODE32"
184    "ZIG-ZAG-ENCODE64"
185    "DECODE-UINT32"
186    "DECODE-UINT64"
187    "DECODE-FIXED32"
188    "DECODE-FIXED64"
189    "DECODE-SINGLE"
190    "DECODE-DOUBLE"
191    "DECODE-OCTETS"
192    "ZIG-ZAG-DECODE32"
193    "ZIG-ZAG-DECODE64"
194    "LENGTH32"
195    "LENGTH64"
196    "SKIP-ELEMENT"
197
198    ;; Utilities
199    "CLASS-NAME->PROTO"
200    "ENUM-NAME->PROTO"
201    "SLOT-NAME->PROTO"
202    "PROTO->CLASS-NAME"
203    "PROTO->ENUM-NAME"
204    "PROTO->SLOT-NAME"
205    "PROTOBUFS-WARNING"
206    "PROTOBUFS-WARN"))