clean up PYConfig.h/cc
[platform/upstream/ibus-libpinyin.git] / src / PYPinyinArray.h
1 /* vim:set et ts=4 sts=4:
2  *
3  * ibus-pinyin - The Chinese PinYin engine for IBus
4  *
5  * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  */
21 #ifndef __PY_PINYIN_ARRAY_H_
22 #define __PY_PINYIN_ARRAY_H_
23
24 #include <vector>
25 #include "PYTypes.h"
26
27 namespace PY {
28
29 struct PinyinSegment {
30     const Pinyin *pinyin;
31     guint begin;
32     guint len;
33
34     PinyinSegment (const Pinyin *pinyin = NULL, guint begin = 0, guint len = 0)
35         : pinyin (pinyin), begin (begin), len (len) { }
36
37     operator const Pinyin * (void) const
38     {
39         return pinyin;
40     }
41
42     const Pinyin * operator-> (void) const
43     {
44         return pinyin;
45     }
46
47     gboolean operator == (const PinyinSegment & p) const
48     {
49         return (pinyin == p.pinyin) && (begin == p.begin) && (len == p.len);
50     }
51
52     gboolean operator == (const Pinyin *p) const
53     {
54         return pinyin == p;
55     }
56 };
57
58 class PinyinArray: public std::vector<PinyinSegment> {
59 public:
60     PinyinArray (guint init_size = 0)
61     {
62         std::vector<PinyinSegment>::reserve (init_size);
63     }
64
65     void append (const Pinyin *pinyin, guint begin, guint len)
66     {
67         push_back (PinyinSegment (pinyin, begin, len));
68     }
69 };
70
71 };
72
73 #endif