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

📄 state.cc

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 CC
字号:
//// state.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.//#ifdef __GNUC__#pragma implementation#endif#include <stdlib.h>#include <sys/time.h>#include <unistd.h>#include <util/misc/formio.h>#include <util/class/class.h>#include <util/state/state.h>#include <util/state/stateio.h>using namespace std;using namespace sc;#define DEBUG 0/////////////////////////////////////////////////////////////////static ClassDesc SavableState_cd(    typeid(SavableState),"SavableState",1,"public DescribedClass");SavableState::SavableState(){}SavableState::SavableState(const SavableState&){}SavableState& SavableState::operator=(const SavableState&){  return *this;}SavableState::SavableState(StateIn&si){  // In case si is looking for the next pointer, let it know i  // have one.  reference();  Ref<SavableState> th(this);  si.haveobject(th);  th = 0;  dereference();  // The following gets the version of this class and all of the  // parent classes.  This is only needed for restoring objects  // that were saved with save_object_state and don't necessarily  // have all of their version information already restored.  if (si.need_classdesc()) {      const ClassDesc* tcd;      si.get(&tcd);    }}SavableState::~SavableState(){}voidSavableState::save_state(StateOut&so){  save_state(this,so);}voidSavableState::save_state(SavableState*th,StateOut&so){  so.putobject(th);}SavableState*SavableState::restore_state(StateIn& si){  return dir_restore_state(si,0,0);}SavableState*SavableState::key_restore_state(StateIn& si,                                const char *keyword){  return dir_restore_state(si,0,keyword);}SavableState*SavableState::dir_restore_state(StateIn&si, const char *objectname,                                const char *keyword){  Ref<KeyVal> old_override;  Ref<SavableState> overriding_value;  int p = si.push_key(keyword);  const int can_override_objects = 0;  if (can_override_objects && keyword && si.override().nonnull()) {      overriding_value << si.override()->describedclassvalue(si.key());      old_override = si.override();      if (overriding_value.nonnull()) {          si.set_override(0);        }    }  // restore the pointer  Ref<SavableState> ss;  if (objectname) si.dir_getobject(ss, objectname);  else si.getobject(ss);  if (overriding_value.nonnull()) {      ExEnv::out0() << indent           << "overriding \"" << si.key() << "\": object of type ";      if (ss.null()) ExEnv::out0() << "(null)";      else ExEnv::out0() << ss->class_name();      ExEnv::out0() << " -> object of type "           << overriding_value->class_name()           << endl;      ss = overriding_value;    }  SavableState *ret = ss.pointer();  if (ret) {      ret->reference();      ss = 0;      ret->dereference();    }  if (old_override.nonnull()) {      si.set_override(old_override);    }  si.pop_key(p);  return ret;}voidSavableState::save_object_state(StateOut&so){  save_vbase_state(so);  save_data_state(so);}voidSavableState::save_vbase_state(StateOut&so){  SavableState::save_data_state(so);}voidSavableState::save_data_state(StateOut& so){  if (so.need_classdesc()) so.put(class_desc());}/////////////////////////////////////////////////////////////////////////////// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

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