⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 params.h

📁 机器人程序
💻 H
字号:
// Params.h - by Robin Hewitt, 2005
// http://www.robinhewitt.com/mavis
// This is free software. See license at the bottom
// of this file for terms of use.
//


//////////////////////////////////////////////////////////////
// Header file for the Params, ParamData, and ParamSection classes.
//

#ifndef __MAVIS_PARAMS
#define __MAVIS_PARAMS

#include <vector>

class Mavis;
class Params;
class ParamSection;


//////////////////////////////////////////////////////////////
//  Class:    ParamData
//
//  Purpose:  Represents one Mavis parameter.
//
//  Comments: Accessor methods for getting data are public, but
//            settor method is available only to the friend class
//            ParamSection. Constructor and destuctor are also
//            protected.
//
//            The section name as well as the param name is stored.
//            This is a redundancy from the point of view of the
//            ParamSection class, but it makes ParamData objects self
//            contained, so they could potentially be passed to other
//            classes as a read-only representation of a parameter.
//
class ParamData
{
public:
	const char * getSectionName() {return section;}
	const char * getParamName()  {return paramName;}
	const char * getStringValue()  {return paramValue;}
	double       getFloatPtValue();
	bool         isValid() {return validParam;}

protected:
	friend class ParamSection;

	ParamData(const char * section, const char * paramName, const char * paramValue);
	~ParamData();

	void setValue(const char *);
	void save(const char * iniFilename);

private:
	char * section;
	char * paramName;
	char * paramValue;
	bool   validParam;

	void setName(const char * section, const char * paramName);

	// Hide copy constructor and assignment operator
	ParamData(const ParamData &);
	ParamData & ParamData::operator=(const ParamData &);
};



//////////////////////////////////////////////////////////////
//  Class:    ParamSection
//
//  Purpose:  Represents one section in the ini file.
//
class ParamSection
{
public:
	const char * getSectionName() {return sectionName;}
	const char * getParamValue(const char * paramName);

protected:
	friend class Params;
	ParamSection(const char * sectionName);
	~ParamSection();

	void addParam(const char * paramName, const char * paramValue);
	void setParam(const char * paramName, const char * value);

	void save(const char * iniFilename);

private:
	char * sectionName;
	std::vector<ParamData *> paramVector;

	// Hide copy constructor and assignment operator
	ParamSection(const ParamSection &);
	ParamSection & ParamSection::operator=(const ParamSection &);
};



//////////////////////////////////////////////////////////////
//  Class:    Params
//
//  Purpose:  Clearinghouse for all Mavis parameters. Loads params
//            from ini file at startup and writes them out at
//            termination. Provides accessor methods for parameter
//            values.
//
//  Comments: Params is a singleton. The static variable instances
//            is used to ensure that. The constructor throws a MavisErr
//            if a non-empty ini file isn't found. It also throws this
//            exception if there's an attempt to instantiate a second
//            instance.
//
class Params
{

public:
	// Accessor methods for parameter values
	const char * getStringValue(const char * section, const char * paramName);
	double getFloatPtValue(const char * section, const char * paramName, bool * pParamExists);
	int    getIntValue(const char * section, const char * paramName, bool * pParamExists);
	void setParam(const char * section, const char * paramName, const char * value);
	void setParam(const char * section, const char * paramName, double value);
	void setParam(const char * section, const char * paramName, int value);

	// Save params in the ini file
	void save();
protected:
	friend class Mavis;
	Params();
	~Params();

private:
	static const char * INI_FILENAME;
	static int instances;  // used to ensure that Params is a singleton.
	std::vector<ParamSection *> sectionVector;

	// Hide copy constructor and assignment operator
	Params(const Params &);
	Params & Params::operator=(const Params &);
};

#endif


///////////////////////////////////////////////////////////////////////////////////////
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 
//
// By downloading, copying, installing or using the software you agree to this
// license. If you do not agree to this license, do not download, install, copy or
// use the software.
//
//
//                        Mavis License Agreement 
//
// Copyright (c) 2004-2005, Robin Hewitt (http://www.robin-hewitt.com).
// Third party copyrights are property of their respective owners. 
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
//   * Redistributions of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
// 
//   * Redistributions in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
// 
// This software is provided "as is" and any express or implied warranties, including,
// but not limited to, the implied warranties of merchantability and fitness for a
// particular purpose are disclaimed. In no event shall the authors or contributors be
// liable for any direct, indirect, incidental, special, exemplary, or consequential
// damages (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused and on any
// theory of liability, whether in contract, strict liability, or tort (including
// negligence or otherwise) arising in any way out of the use of this software, even
// if advised of the possibility of such damage. 
///////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -