FlightGear next
FGDeviceConfigurationMap.hxx
Go to the documentation of this file.
1// FGDeviceConfigurationMap.hxx -- a map to access xml device configuration
2//
3// Written by Torsten Dreyer, started August 2009
4// Based on work from David Megginson, started May 2001.
5//
6// Copyright (C) 2009 Torsten Dreyer, Torsten (at) t3r _dot_ de
7// Copyright (C) 2001 David Megginson, david@megginson.com
8//
9// This program is free software; you can redistribute it and/or
10// modify it under the terms of the GNU General Public License as
11// published by the Free Software Foundation; either version 2 of the
12// License, or (at your option) any later version.
13//
14// This program is distributed in the hope that it will be useful, but
15// WITHOUT ANY WARRANTY; without even the implied warranty of
16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17// General Public License for more details.
18//
19// You should have received a copy of the GNU General Public License
20// along with this program; if not, write to the Free Software
21// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22//
23// $Id$
24
25#ifndef _FGDEVICECONFIGURATIONMAP_HXX
26#define _FGDEVICECONFIGURATIONMAP_HXX
27
28#ifndef __cplusplus
29# error This library requires C++
30#endif
31
32#include <simgear/props/props.hxx>
33#include <simgear/misc/sg_path.hxx>
34
35#include <map>
36
38{
39public:
41
42 FGDeviceConfigurationMap ( const std::string& relative_path,
43 SGPropertyNode* nodePath,
44 const std::string& nodeName);
46
47 SGPropertyNode_ptr configurationForDeviceName(const std::string& name);
48
49 bool hasConfiguration(const std::string& name) const;
50
51private:
52 void scan_dir(const SGPath & path);
53
54 void readCachedData(const SGPath& path);
55 void refreshCacheForFile(const SGPath& path);
56
57 std::string computeSuffix(SGPropertyNode_ptr node);
58
59 typedef std::map<std::string, SGPropertyNode_ptr> NameNodeMap;
60// dictionary of over-ridden configurations, where the config data
61// was explicitly loaded and shoudl be picked over a file search
62 NameNodeMap overrideDict;
63
64 typedef std::map<std::string, SGPath> NamePathMap;
65// mapping from joystick name to XML configuration file path
66 NamePathMap namePathMap;
67};
68
69#endif
SGPropertyNode_ptr configurationForDeviceName(const std::string &name)
FGDeviceConfigurationMap(const std::string &relative_path, SGPropertyNode *nodePath, const std::string &nodeName)
bool hasConfiguration(const std::string &name) const
const char * name