mirror of
https://gitlab.com/eql/lqml.git
synced 2025-12-06 10:31:34 -08:00
48 lines
1.7 KiB
Common Lisp
48 lines
1.7 KiB
Common Lisp
;;; Copyright 2012-2020 Google LLC
|
|
;;;
|
|
;;; Use of this source code is governed by an MIT-style
|
|
;;; license that can be found in the LICENSE file or at
|
|
;;; https://opensource.org/licenses/MIT.
|
|
|
|
(in-package #:cl-protobufs.implementation)
|
|
|
|
|
|
(define-condition protobuf-error (simple-error)
|
|
()
|
|
(:documentation
|
|
"Supertype of all errors explicitly signaled by cl-protobufs.
|
|
As a subtype of simple-error this accepts :format-control and
|
|
:format-argumens init keywords."))
|
|
|
|
(defun protobuf-error (format-control &rest format-arguments)
|
|
"Signal a protobuf-error using FORMAT-CONTROL and FORMAT-ARGUMENTS to
|
|
construct the error message."
|
|
(error 'protobuf-error
|
|
:format-control format-control
|
|
:format-arguments format-arguments))
|
|
|
|
(define-condition unknown-type (protobuf-error)
|
|
()
|
|
(:documentation
|
|
"Indicates that a non-protobuf object was encountered where a protobuf type
|
|
(message,enum, scalar etc.) was expected."))
|
|
|
|
(define-condition unknown-field-type (unknown-type)
|
|
()
|
|
(:documentation
|
|
"Indicates that an object that isn't a protocol buffer type was encountered
|
|
while printing, parsing, serializing, or otherwise processing a protocol
|
|
buffer object."))
|
|
|
|
(define-condition unknown-field (protobuf-error)
|
|
()
|
|
(:documentation
|
|
"An unknown field was encountered when parsing a text proto."))
|
|
|
|
(defun unknown-field-type (type field object)
|
|
"Signal an unknown-field-type error for TYPE in relation to FIELD. OBJECT
|
|
is usually the protobuf message being printed or serialized, or the descriptor
|
|
being parsed."
|
|
(error 'unknown-field-type
|
|
:format-control "unknown field type ~S for field ~S in ~S"
|
|
:format-arguments (list type field object)))
|