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

📄 rs_variabledict.cpp

📁 qcad2.05可用于windows和linux的源码
💻 CPP
字号:
/****************************************************************************** $Id: rs_variabledict.cpp 1938 2004-12-09 23:09:53Z andrew $**** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.**** This file is part of the qcadlib Library project.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid qcadlib Professional Edition licenses may use ** this file in accordance with the qcadlib Commercial License** Agreement provided with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.ribbonsoft.com for further details.**** Contact info@ribbonsoft.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "rs_variabledict.h"/** * Constructor. */RS_VariableDict::RS_VariableDict() {    variables.setAutoDelete(true);}/** * Removes all variables in the blocklist. */void RS_VariableDict::clear() {    variables.clear();}/** * Activates the given block. * Listeners are notified. *///void RS_VariableDict::activateBlock(const RS_String& name) {//	activateBlock(findBlock(name));//}/** * Activates the given block. * Listeners are notified. *//*void RS_VariableDict::activateBlock(RS_Block* block) {	activeBlock = block;		for (uint i=0; i<blockListListeners.count(); ++i) {		RS_VariableDictListener* l = blockListListeners.at(i); 		l->blockActivated(activeBlock);	}}*//** * Adds a variable to the variable dictionary. If a variable with the  * same name already exists, is will be overwritten. */void RS_VariableDict::add(const RS_String& key,                                  const RS_String& value, int code) {    RS_DEBUG->print("RS_VariableDict::addVariable()");    if (key.isEmpty()) {        RS_DEBUG->print("RS_VariableDict::addVariable(): "                        "No empty keys allowed.",                        RS_Debug::D_WARNING);        return;    }    variables.replace(key, new RS_Variable(value, code));}/** * Adds a variable to the variable dictionary. If a variable with the  * same name already exists, is will be overwritten. */void RS_VariableDict::add(const RS_String& key, int value, int code) {    RS_DEBUG->print("RS_VariableDict::addVariable()");    if (key.isEmpty()) {        RS_DEBUG->print("RS_VariableDict::addVariable(): "                        "No empty keys allowed.",                        RS_Debug::D_WARNING);        return;    }    variables.replace(key, new RS_Variable(value, code));}/** * Adds a variable to the variable dictionary. If a variable with the  * same name already exists, is will be overwritten. */void RS_VariableDict::add(const RS_String& key, double value, int code) {    RS_DEBUG->print("RS_VariableDict::addVariable()");    if (key.isEmpty()) {        RS_DEBUG->print("RS_VariableDict::addVariable(): "                        "No empty keys allowed.",                        RS_Debug::D_WARNING);        return;    }    variables.replace(key, new RS_Variable(value, code));}/** * Adds a variable to the variable dictionary. If a variable with the  * same name already exists, is will be overwritten. */void RS_VariableDict::add(const RS_String& key,                                  const RS_Vector& value, int code) {    RS_DEBUG->print("RS_VariableDict::addVariable()");    if (key.isEmpty()) {        RS_DEBUG->print("RS_VariableDict::addVariable(): "                        "No empty keys allowed.",                        RS_Debug::D_WARNING);        return;    }    variables.replace(key, new RS_Variable(value, code));}/** * Gets the value for the given variable. * * @param key Key of the variable. * @param def Default value. * * @return The value for the given variable or the given default value * if the variable couldn't be found. */RS_Vector RS_VariableDict::getVector(const RS_String& key,        const RS_Vector& def) {    RS_Vector ret;    RS_Variable* ptr = variables.find(key);    if (ptr==NULL || ptr->getType()!=RS2::VariableVector) {        ret = def;    } else {        ret = ptr->getVector();    }    return ret;}/** * Gets the value for the given variable. * * @param key Key of the variable. * @param def Default value. * * @return The value for the given variable or the given default value * if the variable couldn't be found. */RS_String RS_VariableDict::getString(const RS_String& key,        const RS_String& def) {    RS_String ret;	RS_DEBUG->print("RS_VariableDict::getString: 001");	RS_DEBUG->print("RS_VariableDict::getString: key: '%s'", key.latin1());	    RS_Variable* ptr = variables.find(key);	RS_DEBUG->print("RS_VariableDict::getString: 002");    if (ptr==NULL) {		RS_DEBUG->print("RS_VariableDict::getString: 003");        ret = def;	} else if (ptr->getType()!=RS2::VariableString) {		RS_DEBUG->print("RS_VariableDict::getString: 004");		ret = def;    } else {		RS_DEBUG->print("RS_VariableDict::getString: 005");        ret = ptr->getString();    }	RS_DEBUG->print("RS_VariableDict::getString: 006");    return ret;}/** * Gets the value as int for the given variable. * * @param key Key of the variable. * @param def Default value. * * @return The value for the given variable or the given default value * if the variable couldn't be found. */int RS_VariableDict::getInt(const RS_String& key,                                    int def) {    int ret;    RS_Variable* ptr = variables.find(key);    if (ptr==NULL || ptr->getType()!=RS2::VariableInt) {        ret = def;    } else {        ret = ptr->getInt();    }    return ret;}/** * Gets the value as double for the given variable. * * @param key Key of the variable. * @param def Default value. * * @return The value for the given variable or the given default value * if the variable couldn't be found. */double RS_VariableDict::getDouble(const RS_String& key,        double def) {    double ret;    RS_Variable* ptr = variables.find(key);    if (ptr==NULL || ptr->getType()!=RS2::VariableDouble) {        ret = def;    } else {        ret = ptr->getDouble();    }    return ret;}/** * Notifies the listeners about layers that were added. This can be * used after adding a lot of variables without auto-update. *//*void RS_VariableDict::addBlockNotification() {    for (uint i=0; i<blockListListeners.count(); ++i) {        RS_VariableDictListener* l = blockListListeners.at(i);        l->blockAdded(NULL);    }}*//** * Removes a variable from the list. * TODO: Listeners are notified after the block was removed from  * the list but before it gets deleted. */void RS_VariableDict::remove(const RS_String& key) {    RS_DEBUG->print("RS_VariableDict::removeVariable()");    // here the block is removed from the list but not deleted    variables.remove(key);}/** * Dumps the variables to stdout. */std::ostream& operator << (std::ostream& os, RS_VariableDict& d) {    os << "Variables: \n";    RS_DictIterator<RS_Variable> it(d.variables);    for( ; it.current(); ++it ) {        os << it.currentKey() << ": ";        switch (it.current()->getType()) {        case RS2::VariableVoid:            os << "void\n";            break;        case RS2::VariableInt:            os << "int " << it.current()->getInt() << "\n";            break;        case RS2::VariableDouble:            os << "double " << it.current()->getDouble() << "\n";            break;        case RS2::VariableVector:            os << "vector " << it.current()->getVector() << "\n";            break;        case RS2::VariableString:            os << "string " << it.current()->getString() << "\n";            break;        }    }    os << std::endl;    return os;}

⌨️ 快捷键说明

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