aboutsummaryrefslogtreecommitdiff
path: root/libbutl/manifest-serializer.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-09-22 23:32:28 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-09-22 23:32:28 +0200
commitc09cd7512491cee1e82c1ad8128ce9fd4bc3f79b (patch)
treea659ed768d849130ab5780a11b7f791a463a1a91 /libbutl/manifest-serializer.hxx
parent2a00871f07067f8f9e2de08bb9c8f50e1bf6a650 (diff)
Initial modularization with both Clang and VC hacks
Note: gave up on VC about half way though.
Diffstat (limited to 'libbutl/manifest-serializer.hxx')
-rw-r--r--libbutl/manifest-serializer.hxx82
1 files changed, 0 insertions, 82 deletions
diff --git a/libbutl/manifest-serializer.hxx b/libbutl/manifest-serializer.hxx
deleted file mode 100644
index d95ddf1..0000000
--- a/libbutl/manifest-serializer.hxx
+++ /dev/null
@@ -1,82 +0,0 @@
-// file : libbutl/manifest-serializer.hxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#ifndef LIBBUTL_MANIFEST_SERIALIZER_HXX
-#define LIBBUTL_MANIFEST_SERIALIZER_HXX
-
-#include <string>
-#include <iosfwd>
-#include <cstddef> // size_t
-#include <stdexcept> // runtime_error
-
-#include <libbutl/export.hxx>
-
-namespace butl
-{
- class LIBBUTL_SYMEXPORT manifest_serialization: public std::runtime_error
- {
- public:
- manifest_serialization (const std::string& name,
- const std::string& description);
-
- std::string name;
- std::string description;
- };
-
- class LIBBUTL_SYMEXPORT manifest_serializer
- {
- public:
- manifest_serializer (std::ostream& os, const std::string& name)
- : os_ (os), name_ (name) {}
-
- const std::string&
- name () const {return name_;}
-
- // The first name-value pair should be the special "start-of-manifest"
- // with empty name and value being the format version. After that we
- // have a sequence of ordinary pairs which are the manifest. At the
- // end of the manifest we have the special "end-of-manifest" pair
- // with empty name and value. After that we can either have another
- // start-of-manifest pair (in which case the whole sequence repeats
- // from the beginning) or we get another end-of-manifest pair which
- // signals the end of stream.
- //
- void
- next (const std::string& name, const std::string& value);
-
- // Write a comment. The supplied text is prefixed with "# " and
- // terminated with a newline.
- //
- void
- comment (const std::string&);
-
- // Merge the manifest value and a comment into the single string, having
- // the '<value>; <comment>' form. Escape ';' characters in the value with
- // the backslash.
- //
- static std::string
- merge_comment (const std::string& value, const std::string& comment);
-
- private:
- void
- check_name (const std::string&);
-
- // Write 'n' characters from 's' (assuming there are no newlines)
- // split into multiple lines at or near the 78 characters
- // boundary. The first line starts at the 'column' offset.
- //
- void
- write_value (std::size_t column, const char* s, std::size_t n);
-
- private:
- enum {start, body, end} s_ = start;
- std::string version_; // Current format version.
-
- private:
- std::ostream& os_;
- const std::string name_;
- };
-}
-
-#endif // LIBBUTL_MANIFEST_SERIALIZER_HXX