Newer
Older
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; Free Software published under an MIT-like license. See LICENSE ;;;
;;; Copyright (c) 2012 Google, Inc. All rights reserved. ;;;
;;; ;;;
;;; Original author: Scott McKay ;;;
;;; ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(in-package "CL-USER")
;;; Package declaration for Protobufs
(defpackage protobufs
(:nicknames :proto)
;; Some types useful for defining messages
"INT32"
"INT64"
"UINT32"
"UINT64"
"SINT32"
"SINT64"
"FIXED32"
"FIXED64"
"SFIXED32"
"SFIXED64"
"MAKE-BYTE-VECTOR")
;; The Protobufs API
(:export
;; Model classes
"PROTOBUF-OPTION"
"PROTOBUF-ENUM"
"PROTOBUF-ENUM-VALUE"
"PROTOBUF-FIELD"
"PROTOBUF-SERVICE"
"PROTOBUF-METHOD"
"PROTOBUF-TYPE-ALIAS" ;Lisp-only extension
;; Conditions
"UNDEFINED-FIELD-TYPE"
"UNDEFINED-INPUT-TYPE"
"UNDEFINED-OUTPUT-TYPE"
"UNDEFINED-STREAM-TYPE"
"ERROR-TYPE-NAME"
"ERROR-FIELD"
"ERROR-METHOD"
Scott McKay
committed
"SERIALIZATION-ERROR"
;; Object lookup
"FIND-MESSAGE"
"FIND-MESSAGE-FOR-CLASS"
"FIND-SCHEMA"
"FIND-SERVICE"
Scott McKay
committed
;; .proto parsing and printing
"PARSE-SCHEMA-FROM-FILE"
"PARSE-SCHEMA-FROM-STREAM"
"WRITE-SCHEMA"
"DEFINE-ENUM"
"DEFINE-MESSAGE"
"DEFINE-SERVICE"
;; Upgradability and equality testing
"SCHEMA-UPGRADABLE"
"SCHEMAS-EQUAL"
;; CLOS to Protobufs transformer
"WRITE-SCHEMA-FOR-CLASSES"
"GENERATE-SCHEMA-FOR-CLASSES"
Scott McKay
committed
;; Serialization and deserialization (wire format)
"SERIALIZE-OBJECT-TO-STREAM"
"SERIALIZE-OBJECT"
"DESERIALIZE-OBJECT-FROM-STREAM"
"DESERIALIZE-OBJECT"
Scott McKay
committed
;; Serialization and deserialization (text format)
"PARSE-TEXT-FORMAT"
"PRINT-TEXT-FORMAT")
;; Extensions
"GET-EXTENSION"
"SET-EXTENSION"
"HAS-EXTENSION"
"CLEAR-EXTENSION")
;; The Python "compatibility" API
"IS-INITIALIZED"
"CLEAR-FIELD"
"OCTET-SIZE"
"SERIALIZE"
"MERGE-FROM-ARRAY"
"MERGE-FROM-MESSAGE")
;; Miscellany
(:export
"OBJECT-INITIALIZED-P"
"SLOT-INITIALIZED-P"
"REINITIALIZE-OBJECT"
"REINITIALIZE-FIELD"
"REINITIALIZE-SLOT"))
(defpackage protobufs-implementation
(:nicknames :proto-impl)
(:use :common-lisp :protobufs)
(:shadow
"FIND-METHOD")
(:import-from :closer-mop
"CLASS-SLOTS"
"CLASS-DIRECT-SLOTS"
"CLASS-PRECEDENCE-LIST"
"CLASS-FINALIZED-P"
"FINALIZE-INHERITANCE"
"SLOT-DEFINITION-NAME"
"SLOT-DEFINITION-TYPE"
"SLOT-DEFINITION-INITFORM"
"SLOT-DEFINITION-INITFUNCTION"
"SLOT-DEFINITION-READERS"
"SLOT-DEFINITION-WRITERS")
Scott McKay
committed
;; Base class for messages
"BASE-PROTOBUF-MESSAGE"
;; Model class protocol
"ABSTRACT-PROTOBUF"
"BASE-PROTOBUF"
"PROTO-CLIENT-STUB"
"PROTO-CONC-NAME"
"PROTO-DEFAULT"
"PROTO-EXTENDED-FIELDS"
"PROTO-IMPORTED-SCHEMAS"
"PROTO-INPUT-NAME"
"PROTO-INPUT-TYPE"
"PROTO-LISP-PACKAGE"
"PROTO-MESSAGE-TYPE"
"PROTO-MESSAGES"
"PROTO-METHODS"
"PROTO-OUTPUT-NAME"
"PROTO-OUTPUT-TYPE"
"PROTO-PACKAGE"
"PROTO-PACKED"
"PROTO-QUALIFIED-NAME"
"PROTO-REQUIRED"
"PROTO-SERVER-STUB"
"PROTO-SERVICES"
"PROTO-STREAMS-NAME"
"PROTO-STREAMS-TYPE"
"PROTO-TYPE"
"PROTO-VALUE"
"PROTO-VALUES"
;; Type aliases, a Lisp-only extension
"PROTO-TYPE-ALIASES"
"PROTO-LISP-TYPE"
"PROTO-PROTO-TYPE"
"PROTO-SERIALIZER"
"PROTO-DESERIALIZER"
"FIND-TYPE-ALIAS"
;; Controls
"*PROTOBUF*"
"*PROTOBUF-PACKAGE*"
"*PROTOBUF-CONC-NAME*"
"*PROTOBUF-PATHNAME*"
"*PROTOBUF-SEARCH-PATH*"
"*PROTOBUF-OUTPUT-PATH*"
"*ALL-SCHEMAS*"
"*ALL-MESSAGES*"
"FIND-METHOD" ;if you ":use proto-impl", watch for name clash
"MAKE-OPTION"
"ADD-OPTION"
"REMOVE-OPTIONS"
;; Printing
;; Protobuf defining macros
"ENSURE-ALL-SCHEMAS"
"ENSURE-SCHEMA"
;; CLOS to Protobufs transformer
"*ALIAS-EXISTING-CLASSES*"
"CLASS-TO-PROTOBUF-MESSAGE"
"SLOT-TO-PROTOBUF-FIELD"
"CLOS-TYPE-TO-PROTOBUF-TYPE"
"CLOS-TYPE-TO-PROTOBUF-REQUIRED"
"CLOS-INIT-TO-PROTOBUF-DEFAULT"
;; Serialization
"SERIALIZE-PRIM"
"SERIALIZE-PACKED"
"SERIALIZE-ENUM"
"SERIALIZE-PACKED-ENUM"
"DESERIALIZE-PRIM"
"DESERIALIZE-PACKED"
"DESERIALIZE-ENUM"
"DESERIALIZE-PACKED-ENUM"
"PRIM-SIZE"
"PACKED-SIZE"
"ENUM-SIZE"
"PACKED-ENUM-SIZE"
"GENERATE-SERIALIZER"
"GENERATE-DESERIALIZER"
"GENERATE-OBJECT-SIZE"
;; Raw encoding and decoding
"$WIRE-TYPE-VARINT"
"$WIRE-TYPE-64BIT"
"$WIRE-TYPE-STRING"
"$WIRE-TYPE-START-GROUP"
"$WIRE-TYPE-END-GROUP"
"$WIRE-TYPE-32BIT"
"MAKE-TAG"
"ENCODE-UINT32"
"ENCODE-UINT64"
"ENCODE-FIXED32"
"ENCODE-FIXED64"
"ENCODE-SFIXED32"
"ENCODE-SFIXED64"
"ENCODE-SINGLE"
"ENCODE-DOUBLE"
"ENCODE-OCTETS"
"ZIG-ZAG-ENCODE32"
"ZIG-ZAG-ENCODE64"
"DECODE-UINT32"
"DECODE-UINT64"
"DECODE-FIXED32"
"DECODE-FIXED64"
"DECODE-SFIXED32"
"DECODE-SFIXED64"
"DECODE-SINGLE"
"DECODE-DOUBLE"
"DECODE-OCTETS"
"ZIG-ZAG-DECODE32"
"ZIG-ZAG-DECODE64"
"VARINT-LENGTH"
"SKIP-ELEMENT"
;; Utilities
"CLASS-NAME->PROTO"
"ENUM-NAME->PROTO"
"SLOT-NAME->PROTO"
"PROTO->CLASS-NAME"
"PROTO->ENUM-NAME"
"PROTO->SLOT-NAME"
"PROTOBUFS-WARNING"
"MAKE-QUALIFIED-NAME"
;; Stuff for ASDF
"PARSE-PROTOBUF-FILE"
"PROCESS-IMPORTS"
"PROCESS-IMPORTS-FROM-FILE"
;; Stuff for RPC stubs
"*RPC-PACKAGE*"
"*RPC-CALL-FUNCTION*"))