1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3 ;;; Free Software published under an MIT-like license. See LICENSE ;;;
5 ;;; Copyright (c) 2012 Google, Inc. All rights reserved. ;;;
7 ;;; Original author: Scott McKay ;;;
9 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11 (in-package "CL-USER")
14 ;;; Package declaration for Protobufs
20 ;; Some types useful for defining messages
49 "PROTOBUF-TYPE-ALIAS" ;Lisp-only extension
52 "UNDEFINED-FIELD-TYPE"
53 "UNDEFINED-INPUT-TYPE"
54 "UNDEFINED-OUTPUT-TYPE"
55 "UNDEFINED-STREAM-TYPE"
62 "FIND-MESSAGE-FOR-CLASS"
66 ;; .proto parsing and printing
67 "PARSE-SCHEMA-FROM-FILE"
68 "PARSE-SCHEMA-FROM-STREAM"
71 ;; Protobuf defining macros
79 "DEFINE-TYPE-ALIAS" ;Lisp-only extension
81 ;; Upgradability and equality testing
85 ;; CLOS to Protobufs transformer
86 "WRITE-SCHEMA-FOR-CLASSES"
87 "GENERATE-SCHEMA-FOR-CLASSES"
89 ;; Serialization and deserialization (wire format)
90 "SERIALIZE-OBJECT-TO-FILE"
91 "SERIALIZE-OBJECT-TO-STREAM"
92 "SERIALIZE-OBJECT-TO-BYTES"
94 "DESERIALIZE-OBJECT-FROM-FILE"
95 "DESERIALIZE-OBJECT-FROM-STREAM"
96 "DESERIALIZE-OBJECT-FROM-BYTES"
100 ;; Serialization and deserialization (text format)
111 ;; The Python "compatibility" API
120 "MERGE-FROM-MESSAGE")
124 "OBJECT-INITIALIZED-P"
126 "REINITIALIZE-OBJECT"
128 "REINITIALIZE-SLOT"))
131 (defpackage protobufs-implementation
132 (:nicknames :proto-impl)
133 (:use :common-lisp :protobufs)
137 (:import-from :closer-mop
140 "CLASS-PRECEDENCE-LIST"
142 "FINALIZE-INHERITANCE"
143 "SLOT-DEFINITION-NAME"
144 "SLOT-DEFINITION-TYPE"
145 "SLOT-DEFINITION-INITFORM"
146 "SLOT-DEFINITION-INITFUNCTION"
147 "SLOT-DEFINITION-READERS"
148 "SLOT-DEFINITION-WRITERS")
151 ;; Model class protocol
159 "PROTO-DOCUMENTATION"
161 "PROTO-EXTENSION-FROM"
163 "PROTO-EXTENDED-FIELDS"
167 "PROTO-IMPORTED-SCHEMAS"
183 "PROTO-QUALIFIED-NAME"
189 "PROTO-SOURCE-LOCATION"
198 ;; Type aliases, a Lisp-only extension
209 "*PROTOBUF-CONC-NAME*"
210 "*PROTOBUF-PATHNAME*"
211 "*PROTOBUF-SEARCH-PATH*"
212 "*PROTOBUF-OUTPUT-PATH*"
219 "FIND-METHOD" ;if you ":use proto-impl", watch for name clash
226 ;; Protobuf defining macros
230 ;; CLOS to Protobufs transformer
231 "*ALIAS-EXISTING-CLASSES*"
232 "CLASS-TO-PROTOBUF-MESSAGE"
233 "SLOT-TO-PROTOBUF-FIELD"
234 "LISP-TYPE-TO-PROTOBUF-TYPE"
235 "CLOS-TYPE-TO-PROTOBUF-TYPE"
236 "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
237 "CLOS-INIT-TO-PROTOBUF-DEFAULT"
238 "PROTOBUF-DEFAULT-TO-CLOS-INIT"
244 "SERIALIZE-PACKED-ENUM"
248 "DESERIALIZE-PACKED-ENUM"
253 "GENERATE-SERIALIZER"
254 "GENERATE-DESERIALIZER"
255 "GENERATE-OBJECT-SIZE"
257 ;; Raw encoding and decoding
261 "$WIRE-TYPE-START-GROUP"
262 "$WIRE-TYPE-END-GROUP"
304 "MAKE-QUALIFIED-NAME"
307 "PARSE-PROTOBUF-FILE"
309 "PROCESS-IMPORTS-FROM-FILE"
311 ;; Stuff for RPC stubs
313 "*RPC-CALL-FUNCTION*"))