1*6df1ea1fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*6df1ea1fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*6df1ea1fSAndrew Rist * or more contributor license agreements. See the NOTICE file
5*6df1ea1fSAndrew Rist * distributed with this work for additional information
6*6df1ea1fSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*6df1ea1fSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*6df1ea1fSAndrew Rist * "License"); you may not use this file except in compliance
9*6df1ea1fSAndrew Rist * with the License. You may obtain a copy of the License at
10*6df1ea1fSAndrew Rist *
11*6df1ea1fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*6df1ea1fSAndrew Rist *
13*6df1ea1fSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*6df1ea1fSAndrew Rist * software distributed under the License is distributed on an
15*6df1ea1fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*6df1ea1fSAndrew Rist * KIND, either express or implied. See the License for the
17*6df1ea1fSAndrew Rist * specific language governing permissions and limitations
18*6df1ea1fSAndrew Rist * under the License.
19*6df1ea1fSAndrew Rist *
20*6df1ea1fSAndrew Rist *************************************************************/
21*6df1ea1fSAndrew Rist
22*6df1ea1fSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir #ifndef _UCB_REGEXP_HXX_
25cdf0e10cSrcweir #define _UCB_REGEXP_HXX_
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include <rtl/ustring.hxx>
28cdf0e10cSrcweir
29cdf0e10cSrcweir //============================================================================
30cdf0e10cSrcweir namespace ucb_impl {
31cdf0e10cSrcweir
32cdf0e10cSrcweir class Regexp
33cdf0e10cSrcweir {
34cdf0e10cSrcweir public:
35cdf0e10cSrcweir enum Kind
36cdf0e10cSrcweir {
37cdf0e10cSrcweir KIND_PREFIX,
38cdf0e10cSrcweir KIND_AUTHORITY,
39cdf0e10cSrcweir KIND_DOMAIN
40cdf0e10cSrcweir };
41cdf0e10cSrcweir
42cdf0e10cSrcweir inline bool operator ==(Regexp const & rOther) const;
43cdf0e10cSrcweir
isDefault() const44cdf0e10cSrcweir inline bool isDefault() const
45cdf0e10cSrcweir { return m_eKind == KIND_PREFIX && m_aPrefix.getLength() == 0; }
46cdf0e10cSrcweir
getKind() const47cdf0e10cSrcweir inline Kind getKind() const { return m_eKind; }
48cdf0e10cSrcweir
49cdf0e10cSrcweir bool matches(rtl::OUString const & rString, rtl::OUString * pTranslation,
50cdf0e10cSrcweir bool * pTranslated) const;
51cdf0e10cSrcweir
52cdf0e10cSrcweir rtl::OUString getRegexp(bool bReverse) const;
53cdf0e10cSrcweir
54cdf0e10cSrcweir static Regexp parse(rtl::OUString const & rRegexp);
55cdf0e10cSrcweir
56cdf0e10cSrcweir private:
57cdf0e10cSrcweir Kind m_eKind;
58cdf0e10cSrcweir rtl::OUString m_aPrefix;
59cdf0e10cSrcweir rtl::OUString m_aInfix;
60cdf0e10cSrcweir rtl::OUString m_aReversePrefix;
61cdf0e10cSrcweir bool m_bEmptyDomain;
62cdf0e10cSrcweir bool m_bTranslation;
63cdf0e10cSrcweir
64cdf0e10cSrcweir inline Regexp(Kind eTheKind, rtl::OUString const & rThePrefix,
65cdf0e10cSrcweir bool bTheEmptyDomain, rtl::OUString const & rTheInfix,
66cdf0e10cSrcweir bool bTheTranslation,
67cdf0e10cSrcweir rtl::OUString const & rTheReversePrefix);
68cdf0e10cSrcweir };
69cdf0e10cSrcweir
operator ==(Regexp const & rOther) const70cdf0e10cSrcweir inline bool Regexp::operator ==(Regexp const & rOther) const
71cdf0e10cSrcweir {
72cdf0e10cSrcweir return m_eKind == rOther.m_eKind
73cdf0e10cSrcweir && m_aPrefix == rOther.m_aPrefix
74cdf0e10cSrcweir && m_aInfix == rOther.m_aInfix;
75cdf0e10cSrcweir }
76cdf0e10cSrcweir
77cdf0e10cSrcweir }
78cdf0e10cSrcweir
79cdf0e10cSrcweir #endif // _UCB_REGEXP_HXX_
80cdf0e10cSrcweir
81