Crevice  0.1
 All Classes Functions Variables Pages
Ustring.h
1 /*
2  * File: Unicode.h
3  *
4  * Copyright 2014 Heinrich Schuchardt <xypron.glpk@gmx.de>
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 #ifndef USTRING_H
20 #define USTRING_H
21 
22 #include <istream>
23 #include <stdint.h>
24 #include <string>
25 #include <vector>
26 
30 typedef uint32_t Uchar;
31 
35 class Ustring {
36 public:
37 
41  class Error {
42  };
43 
47  class Eof : public Error {
48  };
49 
53  class Invalid : public Error {
54  };
59  static const Uchar BYTE_ORDER_MARK = 0xFEFFu;
60 
61  Ustring();
62  Ustring(std::istream *);
63  Ustring(const Ustring &);
64  virtual ~Ustring();
65  int length();
66  std::vector<Uchar>::const_iterator begin();
67  std::vector<Uchar>::const_iterator end();
68  const bool operator==(const char *) const;
69  Ustring* operator+=(const char *);
70  Ustring* operator+=(const Uchar &);
71  const bool operator < ( const Ustring &) const;
72  std::string* operator>>(std::string &);
73  const Uchar & charAt(int) const;
74 private:
75  int getchar(std::istream *);
76  static Invalid invalid;
77  std::vector<Uchar> s;
78 };
79 
80 #endif /* USTRING_H */
81