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 Protoubfs
36 ;; .proto parsing and printing
37 "PARSE-PROTOBUF-FROM-FILE"
38 "PARSE-PROTOBUF-FROM-STREAM"
41 ;; Protobuf defining macros
49 ;; Upgradability testing
52 ;; CLOS to Protobufs transformer
53 "WRITE-PROTOBUF-SCHEMA-FOR-CLASSES"
54 "GENERATE-PROTOBUF-SCHEMA-FOR-CLASSES"
56 ;; Serialization and deserialization (wire format)
57 "SERIALIZE-OBJECT-TO-STREAM"
59 "DESERIALIZE-OBJECT-FROM-STREAM"
63 ;; Serialization and deserialization (text format)
67 ;; The "compatibility" API, whose names are taken from the Python API
74 "MERGE-FROM-MESSAGE"))
76 (defpackage protobufs-implementation
77 (:nicknames :proto-impl)
78 (:use :common-lisp #+quux :quux :protobufs)
81 (:shadowing-import-from :protobufs
84 (:shadow "DECLARE-LIST-OF" "%DECLARE-LIST-OF")
87 (:import-from :closer-mop
90 "CLASS-PRECEDENCE-LIST"
91 "SLOT-DEFINITION-NAME"
92 "SLOT-DEFINITION-TYPE"
93 "SLOT-DEFINITION-INITFORM"
94 "SLOT-DEFINITION-READERS")
97 ;; Model class protocol
103 "PROTO-DOCUMENTATION"
105 "PROTO-EXTENSION-FROM"
135 "FIND-MESSAGE-FOR-CLASS"
143 ;; Protobuf defining macros
144 "ENSURE-ALL-PROTOBUFS"
147 ;; CLOS to Protobufs transformer
148 "*ALIAS-EXISTING-CLASSES*"
149 "CLASS-TO-PROTOBUF-MESSAGE"
150 "SLOT-TO-PROTOBUF-FIELD"
151 "CLOS-TYPE-TO-PROTOBUF-TYPE"
152 "CLOS-TYPE-TO-PROTOBUF-REQUIRED"
153 "CLOS-INIT-TO-PROTOBUF-DEFAULT"
154 "PROTOBUF-DEFAULT-TO-CLOS-INIT"
166 "GENERATE-SERIALIZER"
167 "GENERATE-DESERIALIZER"
168 "GENERATE-OBJECT-SIZE"
170 ;; Raw encoding and decoding