]> asedeno.scripts.mit.edu Git - cl-protobufs.git/blob - proto-pkgdcl.lisp
f70004d254ab2cbb277aec8e7c287d0e217c1588
[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-RPC"
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-EXTENSIONS"
108    "PROTO-FIELDS"
109    "PROTO-FUNCTION"
110    "PROTO-IMPORTS"
111    "PROTO-INDEX"
112    "PROTO-INPUT-NAME"
113    "PROTO-INPUT-TYPE"
114    "PROTO-LISP-PACKAGE"
115    "PROTO-MESSAGES"
116    "PROTO-NAME"
117    "PROTO-OPTIMIZE"
118    "PROTO-OPTIONS"
119    "PROTO-OUTPUT-NAME"
120    "PROTO-OUTPUT-TYPE"
121    "PROTO-PACKAGE"
122    "PROTO-PACKED"
123    "PROTO-PARENT"
124    "PROTO-READER"
125    "PROTO-REQUIRED"
126    "PROTO-RPCS"
127    "PROTO-SERVICES"
128    "PROTO-SYNTAX"
129    "PROTO-TYPE"
130    "PROTO-VALUE"
131    "PROTO-VALUES"
132    "FIND-PROTOBUF"
133    "FIND-MESSAGE-FOR-CLASS"
134    "FIND-MESSAGE"
135    "FIND-ENUM"
136    "FIND-OPTION"
137
138    ;; Printing
139    "WRITE-PROTOBUF-AS"
140
141    ;; Protobuf defining macros
142    "ENSURE-ALL-PROTOBUFS"
143    "ENSURE-PROTOBUF"
144
145    ;; CLOS to Protobufs transformer
146    "*ALIAS-EXISTING-CLASSES*"
147    "CLASS-TO-PROTOBUF-MESSAGE"
148    "SLOT-TO-PROTOBUF-FIELD"
149    "CLOS-TYPE-TO-PROTOBUF-TYPE"
150    "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
151    "CLOS-INIT-TO-PROTOBUF-DEFAULT"
152    "PROTOBUF-DEFAULT-TO-CLOS-INIT"
153
154    ;; Serialization
155    "SERIALIZE-PRIM"
156    "SERIALIZE-PACKED"
157    "SERIALIZE-ENUM"
158    "DESERIALIZE-PRIM"
159    "DESERIALIZE-PACKED"
160    "DESERIALIZE-ENUM"
161    "PRIM-SIZE"
162    "PACKED-SIZE"
163    "ENUM-SIZE"
164    "GENERATE-SERIALIZER"
165    "GENERATE-DESERIALIZER"
166    "GENERATE-OBJECT-SIZE"
167
168    ;; Raw encoding and decoding
169    "$WIRE-TYPE-VARINT"
170    "$WIRE-TYPE-64BIT"
171    "$WIRE-TYPE-STRING"
172    "$WIRE-TYPE-32BIT"
173    "MAKE-TAG"
174    "ENCODE-UINT32"
175    "ENCODE-UINT64"
176    "ENCODE-FIXED32"
177    "ENCODE-FIXED64"
178    "ENCODE-SINGLE"
179    "ENCODE-DOUBLE"
180    "ENCODE-OCTETS"
181    "ZIG-ZAG-ENCODE32"
182    "ZIG-ZAG-ENCODE64"
183    "DECODE-UINT32"
184    "DECODE-UINT64"
185    "DECODE-FIXED32"
186    "DECODE-FIXED64"
187    "DECODE-SINGLE"
188    "DECODE-DOUBLE"
189    "DECODE-OCTETS"
190    "ZIG-ZAG-DECODE32"
191    "ZIG-ZAG-DECODE64"
192    "LENGTH32"
193    "LENGTH64"
194    "SKIP-ELEMENT"
195
196    ;; Utilities
197    "CLASS-NAME->PROTO"
198    "ENUM-NAME->PROTO"
199    "SLOT-NAME->PROTO"
200    "PROTO->CLASS-NAME"
201    "PROTO->ENUM-NAME"
202    "PROTO->SLOT-NAME"
203    "PROTOBUFS-WARNING"
204    "PROTOBUFS-WARN"))