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"
63 "FIND-MESSAGE-FOR-CLASS"
67 ;; .proto parsing and printing
68 "PARSE-SCHEMA-FROM-FILE"
69 "PARSE-SCHEMA-FROM-STREAM"
72 ;; Protobuf defining macros
80 "DEFINE-TYPE-ALIAS" ;Lisp-only extension
82 ;; Upgradability and equality testing
86 ;; CLOS to Protobufs transformer
87 "WRITE-SCHEMA-FOR-CLASSES"
88 "GENERATE-SCHEMA-FOR-CLASSES"
90 ;; Serialization and deserialization (wire format)
91 "SERIALIZE-OBJECT-TO-FILE"
92 "SERIALIZE-OBJECT-TO-STREAM"
93 "SERIALIZE-OBJECT-TO-BYTES"
95 "DESERIALIZE-OBJECT-FROM-FILE"
96 "DESERIALIZE-OBJECT-FROM-STREAM"
97 "DESERIALIZE-OBJECT-FROM-BYTES"
101 ;; Serialization and deserialization (text format)
112 ;; The Python "compatibility" API
121 "MERGE-FROM-MESSAGE")
125 "OBJECT-INITIALIZED-P"
127 "REINITIALIZE-OBJECT"
129 "REINITIALIZE-SLOT"))
132 (defpackage protobufs-implementation
133 (:nicknames :proto-impl)
134 (:use :common-lisp :protobufs)
138 (:import-from :closer-mop
141 "CLASS-PRECEDENCE-LIST"
143 "FINALIZE-INHERITANCE"
144 "SLOT-DEFINITION-NAME"
145 "SLOT-DEFINITION-TYPE"
146 "SLOT-DEFINITION-INITFORM"
147 "SLOT-DEFINITION-INITFUNCTION"
148 "SLOT-DEFINITION-READERS"
149 "SLOT-DEFINITION-WRITERS")
152 ;; Base class for messages
153 "BASE-PROTOBUF-MESSAGE"
155 ;; Model class protocol
163 "PROTO-DOCUMENTATION"
165 "PROTO-EXTENSION-FROM"
167 "PROTO-EXTENDED-FIELDS"
171 "PROTO-IMPORTED-SCHEMAS"
187 "PROTO-QUALIFIED-NAME"
193 "PROTO-SOURCE-LOCATION"
202 ;; Type aliases, a Lisp-only extension
213 "*PROTOBUF-CONC-NAME*"
214 "*PROTOBUF-PATHNAME*"
215 "*PROTOBUF-SEARCH-PATH*"
216 "*PROTOBUF-OUTPUT-PATH*"
223 "FIND-METHOD" ;if you ":use proto-impl", watch for name clash
232 ;; Protobuf defining macros
236 ;; CLOS to Protobufs transformer
237 "*ALIAS-EXISTING-CLASSES*"
238 "CLASS-TO-PROTOBUF-MESSAGE"
239 "SLOT-TO-PROTOBUF-FIELD"
240 "LISP-TYPE-TO-PROTOBUF-TYPE"
241 "CLOS-TYPE-TO-PROTOBUF-TYPE"
242 "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
243 "CLOS-INIT-TO-PROTOBUF-DEFAULT"
244 "PROTOBUF-DEFAULT-TO-CLOS-INIT"
250 "SERIALIZE-PACKED-ENUM"
254 "DESERIALIZE-PACKED-ENUM"
259 "GENERATE-SERIALIZER"
260 "GENERATE-DESERIALIZER"
261 "GENERATE-OBJECT-SIZE"
263 ;; Raw encoding and decoding
267 "$WIRE-TYPE-START-GROUP"
268 "$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*"))