;; -*- mode: Scheme; -*- ;; ;; This file is part of Protocol Buffers for CHICKEN ;; Copyright (c) 2013 by Thomas Chust. All rights reserved. ;; ;; Permission is hereby granted, free of charge, to any person ;; obtaining a copy of this software and associated documentation ;; files (the Software), to deal in the Software without restriction, ;; including without limitation the rights to use, copy, modify, ;; merge, publish, distribute, sublicense, and/or sell copies of the ;; Software, and to permit persons to whom the Software is furnished ;; to do so, subject to the following conditions: ;; ;; The above copyright notice and this permission notice shall be ;; included in all copies or substantial portions of the Software. ;; ;; THE SOFTWARE IS PROVIDED ASIS, WITHOUT WARRANTY OF ANY KIND, ;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS ;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ;; SOFTWARE. (define-record-type type-info #f #t name) (define-record-type (primitive-info type-info) #t #t type reader writer) (define-record-printer (primitive-info v port) (fprintf port "#" (type-info-name v))) (define-record-type (enum-info type-info) #t #t integer->enum enum->integer) (define-record-printer (enum-info v port) (fprintf port "#" (type-info-name v))) (define-record-type (message-info type-info) #t #t constructor fields required) (define-record-type field-info #t #t (type field-info-type*) repeated? packed? accessor mutator) (define (field-info-type v) (force (field-info-type* v))) (define-record-printer (message-info v port) (fprintf port "#" (type-info-name v) (hash-table-keys (message-info-fields v)))) (define-record-type (message #:uid 'protobuf:message) #f #t extensions (unknown)) (define-record-property prop:protobuf) ;; vim: set ai et ts=8 sts=2 sw=2 ft=scheme: ;;