1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
//--------------------------------------------------------------------------------------
// LenMus Phonascus: The teacher of music
// Copyright (c) 2002-2007 Cecilio Salmeron
//
// This program is free software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the Free Software Foundation;
// either version 2 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
// PARTICULAR PURPOSE. See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with this
// program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street,
// Fifth Floor, Boston, MA 02110-1301, USA.
//
// For any comment, suggestion or feature request, please contact the manager of
// the project at cecilios@users.sourceforge.net
//
//-------------------------------------------------------------------------------------
#ifndef _OBJOPTIONS_H__ //to avoid nested includes
#define _OBJOPTIONS_H__
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "wx/variant.h"
#include "wx/dynarray.h"
#include "wx/hashmap.h"
#define lmObjOptionsItem wxVariant //to simplify future replacement, if necessary
// declare a hash map for options names, with string keys and int values
WX_DECLARE_STRING_HASH_MAP(int, lmObjOptionsTable);
//define an array of ints
WX_DEFINE_ARRAY_INT(int, ArrayOfInts);
// declare an array of ptrs to wxVariants
WX_DEFINE_ARRAY(lmObjOptionsItem*, lmArrayOfObjOptionsValues);
enum lmObjOptionsDataType
{
lmE_String = 0,
lmE_Bool,
lmE_Long,
lmE_Double,
};
class lmObject;
class lmObjOptions
{
public:
lmObjOptions();
~lmObjOptions();
//Set up a value
void SetOption(wxString sName, long nLongValue);
void SetOption(wxString sName, wxString sStringValue);
void SetOption(wxString sName, double nDoubleValue);
void SetOption(wxString sName, bool fBoolValue);
//Look for the value of an option. A method for each supported data type.
//Recursive search throug the ObjOptions chain
long GetOptionLong(wxString sOptName);
double GetOptionDouble(wxString sOptName);
bool GetOptionBool(wxString sOptName);
wxString GetOptionString(wxString sOptName);
private:
lmObject* m_pOwner; //the owner of this context
//options are kept as pairs property/value
lmObjOptionsTable m_aItems; //list of properties with indexes to type and value
ArrayOfInts m_aType; //data type for each option. Index in m_aItems
lmArrayOfObjOptionsValues m_aValue; //value for each option. Index in m_aItems
};
#endif // _OBJOPTIONS_H__
|