aboutsummaryrefslogtreecommitdiff
path: root/butl/char-scanner
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2017-05-01 16:08:43 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2017-05-01 16:59:24 +0300
commit61377c582e0f2675baa5f5e6e30a35d1a4164b33 (patch)
tree11cdca992834d7f7f197f72856712fbcb3020e3d /butl/char-scanner
parent442c1a6790e52baa0c081f310d4d9e9b6f1ff638 (diff)
Add hxx extension for headers and lib prefix for library dir
Diffstat (limited to 'butl/char-scanner')
-rw-r--r--butl/char-scanner90
1 files changed, 0 insertions, 90 deletions
diff --git a/butl/char-scanner b/butl/char-scanner
deleted file mode 100644
index cbeca96..0000000
--- a/butl/char-scanner
+++ /dev/null
@@ -1,90 +0,0 @@
-// file : butl/char-scanner -*- C++ -*-
-// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#ifndef BUTL_CHAR_SCANNER
-#define BUTL_CHAR_SCANNER
-
-#include <string> // char_traits
-#include <iosfwd>
-#include <cstdint> // uint64_t
-
-#include <butl/export>
-
-namespace butl
-{
- // Low-level character stream scanner. Normally used as a base for
- // higher-level lexers.
- //
- class LIBBUTL_EXPORT char_scanner
- {
- public:
- // If the crlf argument is true, then recognize Windows newlines (0x0D
- // 0x0A) and convert them to just '\n' (0x0A). Note that a standalone
- // 0x0D is treated "as if" it was followed by 0x0A.
- //
- char_scanner (std::istream& is, bool crlf = true)
- : is_ (is), crlf_ (crlf) {}
-
- char_scanner (const char_scanner&) = delete;
- char_scanner& operator= (const char_scanner&) = delete;
-
- // Scanner interface.
- //
- public:
-
- // Extended character. It includes line/column information
- // and is capable of representing EOF.
- //
- class xchar
- {
- public:
- typedef std::char_traits<char> traits_type;
- typedef traits_type::int_type int_type;
- typedef traits_type::char_type char_type;
-
- int_type value;
- std::uint64_t line;
- std::uint64_t column;
-
- operator char_type () const {return static_cast<char_type> (value);}
-
- xchar (int_type v, std::uint64_t l = 0, std::uint64_t c = 0)
- : value (v), line (l), column (c) {}
- };
-
- xchar
- get ();
-
- void
- unget (const xchar&);
-
- // Note that if there is an "ungot" character, peek() will return
- // that.
- //
- xchar
- peek ();
-
- // Tests. In the future we can add tests line alpha(), alnum(),
- // etc.
- //
- static bool
- eos (const xchar& c) {return c.value == xchar::traits_type::eof ();}
-
- // Line and column of the furthest seen (either via get() or
- // peek()) character.
- //
- std::uint64_t line {1};
- std::uint64_t column {1};
-
- protected:
- std::istream& is_;
- bool crlf_;
-
- bool unget_ {false};
- xchar buf_ = '\0';
- bool eos_ {false};
- };
-}
-
-#endif // BUTL_CHAR_SCANNER