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

📄 xmdsargv.cc

📁 XMDS is a code generator that integrates equations. You write them down in human readable form in a
💻 CC
字号:
/* Copyright (C) 2000-2004 Code contributed by Greg Collecutt, Joseph Hope and Paul Cochrane This file is part of xmds.  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*//*  $Id: xmdsargv.cc,v 1.9 2004/07/13 05:29:38 paultcochrane Exp $*//*! @file xmdsargv.cc  @brief Command line argument vector parsing classes and methods  More detailed explanation...*/#include<xmlbasics.h>#include<dom3.h>#include<xmdsutils.h>#include<xmdsclasses.h>extern bool debugFlag;// ******************************************************************************// ******************************************************************************//                              xmdsArgv Public// ******************************************************************************// ******************************************************************************// ******************************************************************************xmdsArgv::xmdsArgv(		   const xmdsSimulation *const yourSimulation,		   const bool& yourVerboseMode) :  xmdsElement(yourSimulation,yourVerboseMode) {  if(debugFlag) {    printf("xmdsArgv::xmdsArgv\n");  }};// ******************************************************************************xmdsArgv::~xmdsArgv() {  if(debugFlag) {    printf("xmdsArgv::~xmdsArgv\n");  }  // destroy xmdsArgs, since they are not managed by the xmdsElement class  for(list<const xmdsArg*>::const_iterator ppxmdsArg = myArgsList.begin(); ppxmdsArg != myArgsList.end(); ppxmdsArg++) {    delete (*ppxmdsArg);  }};// ******************************************************************************void xmdsArgv::processElement(			      const Element *const yourElement) {  if(debugFlag) {    printf("xmdsArgv::processElement\n");  }  if(verbose()) {    printf("Processing argv element ...\n");  }  list<XMLString> anXMLStringList;  // ************************************  // find and process arg elements  // ************************************  const NodeList* candidateElements;  candidateElements = yourElement->getElementsByTagName("arg",0);  if(candidateElements->length()==0) {    throw xmdsException(yourElement,"at least one argument expected");  }  for(unsigned long i=0; i<candidateElements->length(); i++) {    const Element* nextElement = dynamic_cast<const Element*>(candidateElements->item(i));    xmdsElement* newxmdsArgElement = createxmdsArgElement();    newxmdsArgElement->processElement(nextElement);  }};// ******************************************************************************void xmdsArgv::processArgs(			   const list<XMLString>& argNamesList,			   const unsigned long& space) const {  if(debugFlag) {    printf("xmdsArgv::processArgs\n");  }  for(list<XMLString>::const_iterator pXMLString = argNamesList.begin(); pXMLString != argNamesList.end(); pXMLString++) {    const xmdsArg* nextArg;    if(!getArg(*pXMLString,nextArg)) {      sprintf(errorMessage(),"Arg '%s' unknown",pXMLString->c_str());      throw xmdsException(errorMessage());    }    for(list<XMLString>::const_iterator pXMLString2 = argNamesList.begin(); pXMLString2 != pXMLString; pXMLString2++) {      if(*pXMLString == *pXMLString2) {	sprintf(errorMessage(),"Duplicate arg '%s'",pXMLString->c_str());	throw xmdsException(errorMessage());      }    }    if(verbose()) {      printf("adding arg '%s' to accessible args list\n",pXMLString->c_str());    }  }};// ******************************************************************************bool xmdsArgv::getArg(		      const XMLString& argName,		      const xmdsArg*& theArg) const {  if(debugFlag) {    printf("xmdsArgv::getArg\n");  }  theArg=0;  for(list<const xmdsArg*>::const_iterator ppxmdsArg = myArgsList.begin(); ppxmdsArg != myArgsList.end(); ppxmdsArg++) {    if(*(*ppxmdsArg)->name()==argName) {      theArg = *ppxmdsArg;      return 1;    }  }  return 0;};// ******************************************************************************void xmdsArgv::argNames(			list<XMLString>& argNamesList) const {  if(debugFlag) {    printf("xmdsArgv::argNames\n");  }  argNamesList.clear();  for(list<const xmdsArg*>::const_iterator ppxmdsArg = myArgsList.begin(); ppxmdsArg != myArgsList.end(); ppxmdsArg++) {    argNamesList.push_back(*(*ppxmdsArg)->name());  }};// ******************************************************************************xmdsArg* xmdsArgv::createxmdsArg() {  if(debugFlag) {    printf("xmdsArgv::createxmdsArg\n");  }  xmdsArg* newArg = new xmdsArg(this);  myArgsList.push_back(newArg);  return newArg;};// ******************************************************************************// ******************************************************************************//                              xmdsArgv protected// ******************************************************************************// ******************************************************************************// ******************************************************************************// ******************************************************************************//                              xmdsArgv private// ******************************************************************************// ******************************************************************************// ******************************************************************************xmdsArgElement* xmdsArgv::createxmdsArgElement() {  if(debugFlag) {    printf("xmdsArgv::createxmdsArgElement\n");  }  xmdsArgElement* newArgElement = new xmdsArgElement(simulation(),verbose(),this);  myArgsList.push_back(newArgElement);  return newArgElement;};

⌨️ 快捷键说明

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