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

📄 ipv2_print.cc

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 CC
字号:
//// ipv2_print.cc//// Copyright (C) 1996 Limit Point Systems, Inc.//// Author: Curtis Janssen <cljanss@limitpt.com>// Maintainer: LPS//// This file is part of the SC Toolkit.//// The SC Toolkit is free software; you can redistribute it and/or modify// it under the terms of the GNU Library General Public License as published by// the Free Software Foundation; either version 2, or (at your option)// any later version.//// The SC Toolkit 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 Library General Public License for more details.//// You should have received a copy of the GNU Library General Public License// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.//// The U.S. Government is granted a limited license as per AL 91-7.//#include <iostream>#include <util/misc/formio.h>#include <util/keyval/ipv2.h>using namespace std;using namespace sc;voidIPV2::print_keyword(ostream&fp,ip_keyword_tree_t*st){  if (st) {    if (st->up) print_keyword(fp,st->up);    fp << st->keyword << ":";    }  }/* This prints out a keyword tree, tree.  If tree is NULL then ip_tree * is printed out. */voidIPV2::print_tree(ostream&fp,ip_keyword_tree_t*tree){  if (!tree) tree = ip_tree;  if (!tree) return;  print_tree_(fp,tree);  }/* This prints out a keyword tree, tree.  If tree is NULL then ip_tree * is printed out. */voidIPV2::print_tree_(ostream&fp,ip_keyword_tree_t*tree){  ip_keyword_tree_t *I;  I=tree;  do {    //if (I->value && I->down) {    //  warn("print_tree: tree has both value and subtrees - can't print");    //  warn("keyword is %s, value is %s, subtree key is %s\n",    //       I->keyword,I->value,I->down->keyword);    //  }    if (!I->keyword) {      warn("print_tree: tree has no keyword - impossible");      }    fp << indent;    if (ip_special_characters(I->keyword)) {      fp << "\"" << I->keyword << "\"" << endl;      }    else {      fp << I->keyword << endl;      }    if (I->classname) {      fp << "<" << I->keyword << ">" << endl;      }    if (!(I->value || I->down || I->variable)) {      fp << ": (" << endl;      }    if (I->variable) {      fp << " = $" << I->variable << endl;      }    if (I->truename) {      fp << "\"" << I->truename << "\"";      }    if (I->value) {      if (I->down) fp << " (= " << I->value << ")";      else fp << " = " << I->value << endl;      }    if (I->down) {      fp << ": (" << endl;      fp << incindent;      print_tree_(fp,I->down);      fp << decindent;      fp << indent << ")" << endl;      }    } while ((I = I->across) != tree);  }/* This prints out a keyword tree, tree.  If tree is NULL then ip_tree * is printed out. */voidIPV2::print_unseen(ostream&fp,ip_keyword_tree_t*I){  if (!I) I = ip_tree;  if (!I) return;  ip_keyword_tree_t *start = I;  do {      if (!I->seen) {          fp << indent;          print_keyword(fp,I->up);          fp << I->keyword << endl;        }      else if (I->down) {          print_unseen(fp,I->down);        }    } while ((I = I->across) != start);}/* This prints out a keyword tree, tree.  If tree is NULL then ip_tree * is printed out. */intIPV2::have_unseen(ip_keyword_tree_t*I){  if (!I) I = ip_tree;  if (!I) return 0;  ip_keyword_tree_t *start = I;  do {      if (!I->seen) {          return 1;        }      else if (I->down) {          if (have_unseen(I->down)) return 1;        }    } while ((I = I->across) != start);  return 0;}intIPV2::ip_special_characters(char*keyword){  char *ch=keyword;  if (!keyword) return 0;  while (*ch) {    if (!(  (*ch >= 'a' && *ch <= 'z')          ||(*ch >= 'A' && *ch <= 'Z')          ||(*ch >= '0' && *ch <= '9')          ||(*ch == '<')          ||(*ch == '>')          ||(*ch == '+')          ||(*ch == '-')          ||(*ch == '.')          ||(*ch == '_'))) return 1;    ch++;    }  return 0;  }

⌨️ 快捷键说明

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