1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3 ;;; Confidential and proprietary information of ITA Software, Inc. ;;;
5 ;;; Copyright (c) 2012 ITA Software, Inc. All rights reserved. ;;;
7 ;;; Original author: Scott McKay ;;;
9 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11 (in-package "CL-USER")
14 ;;; Package declaration for Protobufs
19 ;; Some types useful for defining messages
49 ;; .proto parsing and printing
50 "PARSE-SCHEMA-FROM-FILE"
51 "PARSE-SCHEMA-FROM-STREAM"
54 ;; Protobuf defining macros
63 ;; Upgradability and equality testing
67 ;; CLOS to Protobufs transformer
68 "WRITE-SCHEMA-FOR-CLASSES"
69 "GENERATE-SCHEMA-FOR-CLASSES"
71 ;; Serialization and deserialization (wire format)
72 "SERIALIZE-OBJECT-TO-FILE"
73 "SERIALIZE-OBJECT-TO-STREAM"
75 "DESERIALIZE-OBJECT-FROM-FILE"
76 "DESERIALIZE-OBJECT-FROM-STREAM"
80 ;; Serialization and deserialization (text format)
91 ;; The Python "compatibility" API
100 "MERGE-FROM-MESSAGE")
104 "OBJECT-INITIALIZED-P"
106 "REINITIALIZE-OBJECT"
108 "REINITIALIZE-SLOT"))
111 (defpackage protobufs-implementation
112 (:nicknames :proto-impl)
113 (:use :common-lisp :protobufs)
117 (:import-from :closer-mop
120 "CLASS-PRECEDENCE-LIST"
121 "SLOT-DEFINITION-NAME"
122 "SLOT-DEFINITION-TYPE"
123 "SLOT-DEFINITION-INITFORM"
124 "SLOT-DEFINITION-INITFUNCTION"
125 "SLOT-DEFINITION-READERS"
126 "SLOT-DEFINITION-WRITERS")
129 ;; Model class protocol
136 "PROTO-DOCUMENTATION"
138 "PROTO-EXTENSION-FROM"
140 "PROTO-EXTENDED-FIELDS"
144 "PROTO-IMPORTED-SCHEMAS"
160 "PROTO-QUALIFIED-NAME"
178 "FIND-MESSAGE-FOR-CLASS"
179 "FIND-METHOD" ;if you ":use proto-impl", watch for name clash
188 ;; Protobuf defining macros
192 ;; CLOS to Protobufs transformer
193 "*ALIAS-EXISTING-CLASSES*"
194 "CLASS-TO-PROTOBUF-MESSAGE"
195 "SLOT-TO-PROTOBUF-FIELD"
196 "CLOS-TYPE-TO-PROTOBUF-TYPE"
197 "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
198 "CLOS-INIT-TO-PROTOBUF-DEFAULT"
199 "PROTOBUF-DEFAULT-TO-CLOS-INIT"
205 "SERIALIZE-PACKED-ENUM"
209 "DESERIALIZE-PACKED-ENUM"
214 "GENERATE-SERIALIZER"
215 "GENERATE-DESERIALIZER"
216 "GENERATE-OBJECT-SIZE"
218 ;; Raw encoding and decoding
222 "$WIRE-TYPE-START-GROUP"
223 "$WIRE-TYPE-END-GROUP"
267 "PARSE-PROTOBUF-FILE"