Bump for 3.6-28
[LibreOffice.git] / autodoc / source / inc / luxenum.hxx
blob5cac60403b562f74f6a0cb4ee0cd8c628d99a2b9
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
8 * OpenOffice.org - a multi-platform office productivity suite
10 * This file is part of OpenOffice.org.
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org. If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
27 ************************************************************************/
29 #ifndef UDM_LUXENUM_HXX
30 #define UDM_LUXENUM_HXX
34 // USED SERVICES
35 // BASE CLASSES
36 // COMPONENTS
37 // PARAMETERS
38 #include <map>
39 #include <algorithm>
42 namespace lux
45 typedef std::map< intt, String > EnumValueMap;
48 template <class DIFF>
49 class Enum // : public Template_Base
51 public:
52 // TYPES
53 typedef Enum< DIFF > self;
55 // LIFECYCLE
56 Enum(
57 DIFF i_nValue,
58 const char * i_sText )
59 : nValue(i_nValue) { Values_()[nValue] = i_sText;
60 // Sequence_().insert(
61 // std::lower_bound( Sequence_().begin(), Sequence_().end(), i_nValue ),
62 // i_nValue );
64 Enum(
65 DIFF i_nValue )
66 : nValue(i_nValue) { ; }
67 Enum(
68 intt i_nValue = 0 )
69 : nValue(i_nValue) { if ( NOT CheckIntt(i_nValue) ) { csv_assert(false); } }
70 Enum(
71 const self & i_rEnum )
72 : nValue(i_rEnum.nValue) {;}
74 self & operator=(
75 DIFF i_nValue )
76 { nValue = i_nValue; return *this; }
77 self & operator=(
78 intt i_nValue )
79 { if ( CheckIntt(i_nValue) ) {nValue = DIFF(i_nValue);}
80 else {csv_assert(false);} return *this; }
81 self & operator=(
82 const self & i_rEnum )
83 { nValue = i_rEnum.nValue; return *this; }
84 operator DIFF() const { return DIFF(nValue); }
86 DIFF operator()() const { return nValue; }
87 const String & Text() const { return Values_()[nValue]; }
89 private:
90 static EnumValueMap &
91 Values_();
92 bool CheckIntt(
93 intt i_nNumber )
94 { return Values_().find(i_nNumber) != Values_().end(); }
95 // DATA
96 intt nValue;
102 } // namespace lux
103 #endif
105 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */