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 ;; Base class for messages
152 "BASE-PROTOBUF-MESSAGE"
154 ;; Model class protocol
162 "PROTO-DOCUMENTATION"
164 "PROTO-EXTENSION-FROM"
166 "PROTO-EXTENDED-FIELDS"
170 "PROTO-IMPORTED-SCHEMAS"
186 "PROTO-QUALIFIED-NAME"
192 "PROTO-SOURCE-LOCATION"
201 ;; Type aliases, a Lisp-only extension
212 "*PROTOBUF-CONC-NAME*"
213 "*PROTOBUF-PATHNAME*"
214 "*PROTOBUF-SEARCH-PATH*"
215 "*PROTOBUF-OUTPUT-PATH*"
222 "FIND-METHOD" ;if you ":use proto-impl", watch for name clash
231 ;; Protobuf defining macros
235 ;; CLOS to Protobufs transformer
236 "*ALIAS-EXISTING-CLASSES*"
237 "CLASS-TO-PROTOBUF-MESSAGE"
238 "SLOT-TO-PROTOBUF-FIELD"
239 "LISP-TYPE-TO-PROTOBUF-TYPE"
240 "CLOS-TYPE-TO-PROTOBUF-TYPE"
241 "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
242 "CLOS-INIT-TO-PROTOBUF-DEFAULT"
243 "PROTOBUF-DEFAULT-TO-CLOS-INIT"
249 "SERIALIZE-PACKED-ENUM"
253 "DESERIALIZE-PACKED-ENUM"
258 "GENERATE-SERIALIZER"
259 "GENERATE-DESERIALIZER"
260 "GENERATE-OBJECT-SIZE"
262 ;; Raw encoding and decoding
266 "$WIRE-TYPE-START-GROUP"
267 "$WIRE-TYPE-END-GROUP"
309 "MAKE-QUALIFIED-NAME"
312 "PARSE-PROTOBUF-FILE"
314 "PROCESS-IMPORTS-FROM-FILE"
316 ;; Stuff for RPC stubs
318 "*RPC-CALL-FUNCTION*"))