;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Ludovic Courtès ;;; Copyright © 2016 Daniel Pimentel ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU G
aboutsummaryrefslogtreecommitdiff
// -*- C++ -*-
//  Boost general library 'format'   ---------------------------
//  See http://www.boost.org for updates, documentation, and revision history.

//  (C) Samuel Krempp 2001
//                  krempp@crans.ens-cachan.fr
//  Permission to copy, use, modify, sell and
//  distribute this software is granted provided this copyright notice appears
//  in all copies. This software is provided "as is" without express or implied
//  warranty, and with no claim as to its suitability for any purpose.

// ideas taken from Rüdiger Loos's format class
// and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing)

// ------------------------------------------------------------------------------
// free_funcs.hpp :  implementation of the free functions declared in namespace format
// ------------------------------------------------------------------------------

#ifndef BOOST_FORMAT_FUNCS_HPP
#define BOOST_FORMAT_FUNCS_HPP

#include "boost/format.hpp"
#include "boost/throw_exception.hpp"

namespace boost {

namespace io {
  inline 
  std::string str(const basic_format& f) 
    // adds up all pieces of strings and converted items, and return the formatted string
  {
    return f.str();
  }
}   // - namespace io

BOOST_IO_STD ostream& 
operator<<( BOOST_IO_STD ostream& os, 
            const boost::basic_format& f) 
  // effect: "return os << str(f);" but we can try to do it faster
{
  typedef boost::basic_format   format_t;
  if(f.items_.size()==0) 
    os << f.prefix_;
  else {
    if(f.cur_arg_ < f.num_args_)
      if( f.exceptions() & io::too_few_args_bit )
        boost::throw_exception(io::too_few_args()); // not enough variables have been supplied !
    if(f.style_ & format_t::special_needs) 
        os << f.str();
    else {
    // else we dont have to count chars output, so we dump directly to os :
      os << f.prefix_;
      for(unsigned long i=0; i<f.items_.size(); ++i) 
        {
          const format_t::format_item_t& item = f.items_[i];
          os << item.res_;
          os << item.appendix_;

        }
    }
  }
  f.dumped_=true;
  return os;
}



} // namespace boost


#endif // BOOST_FORMAT_FUNCS_HPP
d data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats.") (license license:bsd-3))) ;; Tensorflow requires version 3.6 specifically. (define-public protobuf-3.6 (package/inherit protobuf (version "3.6.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/google/protobuf/releases/" "download/v" version "/protobuf-cpp-" version ".tar.gz")) (sha256 (base32 "0a955bz59ihrb5wg7dwi12xajdi5pmz4bl0g147rbdwv393jwwxk")))))) ;; The 3.5 series are the last versions that do not require C++ 11. (define-public protobuf-3.5 (package/inherit protobuf (version "3.5.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/google/protobuf/releases/" "download/v" version "/protobuf-cpp-" version ".tar.gz")) (sha256 (base32 "14j0427ykjzrd9a66c2mpk0sjcccjlsx6q8ww6hzwb6sha3vm3f2")))))) ;; XXX Remove this old version when no other packages depend on it. (define-public protobuf-2 (package (inherit protobuf) (version "2.6.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/google/protobuf/releases/" "download/v" version "/protobuf-" version ".tar.bz2")) (sha256 (base32 "040rcs9fpv4bslhiy43v7dcrzakz4vwwpyqg4jp8bn24sl95ci7f")))))) (define-public protobuf-c (package (name "protobuf-c") (version "1.3.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/protobuf-c/protobuf-c/" "releases/download/v" version "/protobuf-c-" version ".tar.gz")) (sha256 (base32 "0x4ybd9rfd878p2imz0hb8zxfd7l60vbdw7cg84dnysr9kqm3wjk")))) (build-system gnu-build-system) (inputs `(("protobuf" ,protobuf))) (native-inputs `(("pkg-config" ,pkg-config))) (home-page "https://github.com/protobuf-c/protobuf-c") (synopsis "Protocol Buffers implementation in C") (description "This is protobuf-c, a C implementation of the Google Protocol Buffers data serialization format. It includes @code{libprotobuf-c}, a pure C library that implements protobuf encoding and decoding, and @code{protoc-c}, a code generator that converts Protocol Buffer @code{.proto} files to C descriptor code.") (license license:bsd-2))) (define-public protozero (package (name "protozero") (version "1.6.8") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/mapbox/protozero.git") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1hfijpfylf1c71wa3mk70gjc88b6k1q7cxb87cwqdflw5q2x8ma6")))) (build-system cmake-build-system) (home-page "https://github.com/mapbox/protozero") (synopsis "Minimalistic protocol buffer decoder and encoder in C++") (description "Protozero is a minimalistic protocol buffer decoder and encoder in C++. The developer using protozero has to manually translate the @file{.proto} description into code.") (license (list license:asl2.0 ; for folly license:bsd-2)))) (define-public python-protobuf (package (name "python-protobuf") (version "3.11.3") (source (origin (method url-fetch) (uri (pypi-uri "protobuf" version)) (sha256 (base32 "07qby3yc2a8a1vsxnc79j687q4r68k1d3npni7bldwmd3m6rfz67")))) (build-system python-build-system) (propagated-inputs `(("python-six" ,python-six))) (home-page "https://github.com/google/protobuf") (synopsis "Protocol buffers is a data interchange format") (description "Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data.") (license license:bsd-3))) (define-public python2-protobuf (package-with-python2 python-protobuf)) ;; For tensorflow. (define-public python-protobuf-3.6 (package/inherit python-protobuf (name "python-protobuf") (version (package-version protobuf-3.6) ) (source (origin (method url-fetch) (uri (pypi-uri "protobuf" version)) (sha256 (base32 "04bqb12smlckzmgkj6vgmpbr3cby0n6726cmz33bqr7kn1vb728l")))))) (define-public emacs-protobuf-mode (package (name "emacs-protobuf-mode") (version (package-version protobuf)) (source (package-source protobuf)) (build-system emacs-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-before 'add-source-to-load-path 'change-working-directory (lambda _ (chdir "editors") #t))))) (home-page "https://github.com/protocolbuffers/protobuf") (synopsis "Protocol buffers major mode for Emacs") (description "This package provides an Emacs major mode for editing Protocol Buffer source files.") (license license:bsd-3)))