📄 params.h
字号:
//Copyright (c) 2004, Charles Killian, Adolfo Rodriguez, Dejan Kostic, Sooraj Bhat, and Amin Vahdat//All rights reserved.////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.// * Neither the names of Duke University nor The University of// California, San Diego, nor the names of its contributors// may be used to endorse or promote products derived from// this software without specific prior written permission.////THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER 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.#ifndef params_h#define params_h#include <stdio.h>//For internal use from within params. See params below.class param { char* key; char* strvalue; int* intvalue; double* doublevalue; public: param(char* key, char* value) { this->key = key; this->strvalue = value; intvalue=NULL; doublevalue=NULL; } param() { key=NULL; strvalue=NULL; intvalue=NULL; doublevalue=NULL; } ~param() { } char* getkey() {return key;} char* set(char* value) { char* old = strvalue; strvalue=value; delete intvalue; intvalue=NULL; delete doublevalue; doublevalue=NULL; return old;} int getint(); double getdouble(); char* getstr() { return strvalue; } int print(FILE* ostream);};class params { public: bool isset(char* key); //returns true if the parameter is set. int getint(char* key); //returns the value of the parameter as an int. double getdouble(char* key); //returns the value of the parameter as a double. char* getstr(char* key); //returns the value of the parameter as a string. char* set(char* key, char* value); //returns the old value of the param. /** * Loads the parameters as though from the command line. Follows this method: * 1 - Ignores argv[0], as this is the program executable * 2 - If no option file is specified, defaults are read in from params.default * 3 - If argv[1] is a file -- parameters are read in from it * 4 - Remaining arguments are read and parsed as command-line [potentially] overriding values. * 5 - Returns the number of parameters set. */ int loadparams(int argc, char** argv); /** * Files are read in as follows: * # is the comment delimiter. Lines beginning with it are ignored. * The remainder of any line containing it, unless a quoted string are ignored. * parameters are set by parameter = value, or parameter = "value" */ int loadfile(char* filename); int print(FILE* ostream); // Prints the parameters to the FILE specified. params(); private: param* data; int max_data; int cur_data; param* find(char* key);};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -