/* * NIST STEP Editor Class Library * cleditor/mgrnode.cc * April 1997 * David Sauder * K. C. Morris * Development of this software was funded by the United States Government, * and is not subject to copyright. */ /* $Id: mgrnode.cc,v 1.4 2000/01/21 13:43:12 gcosmo Exp $ */ #include #include #include #include #include //#include #include #include "G4ios.hh" void *MgrNode::SEE() { return (di ? di->SEE() : 0); } int MgrNode::GetFileId() { return (se ? se->GetFileId() : -1); } void MgrNode::Remove() { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::Remove()\n"; // if(debug_level >= PrintValues) // G4cout << "MgrNode::this : '" << this << "'\n"; GenericNode::Remove(); // DON'T DO THIS!! currState = noStateSE; } // searches current list for fileId MgrNode *MgrNode::StateFindFileId(int fileId) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::StateFindFileId()\n"; MgrNode *startNode = this; if(startNode->GetFileId() == fileId) return this; else { // mn is really a MgrNode MgrNode *mn = (MgrNode *)(startNode->Next()); while(mn != startNode) { if( mn->GetFileId() == fileId) return (MgrNode *)mn; mn = ((MgrNode *)mn->Next()); } return (MgrNode *)0; } } MgrNode::~MgrNode() { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::~MgrNode()\n"; // if(debug_level >= PrintValues) // G4cout << "MgrNode::this : '" << this << "'\n"; if(se) delete se; if(di) delete di; // GenericNode::Remove(); // this is called by default. } ///////////////////// class MgrNode Display Functions ///////////////////////// displayStateEnum MgrNode::DisplayState() { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::DisplayState()\n"; return (di ? di->DisplayState() : noMapState); } int MgrNode::IsDisplayState(displayStateEnum ds) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::IsDisplayState()\n"; return (di ? di->DisplayListMember(ds) : 0); } GenericNode *MgrNode::NextDisplay() { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::NextDisplay()\n"; // return (di ? ((DisplayNode *)di->Next()) : (DisplayNode *)0); if(di) { // GenericNode *dn = di->Next(); // return (DisplayNode *)dn; // return (DisplayNode *)(di->Next()); return di->Next(); } else return 0; } GenericNode *MgrNode::PrevDisplay() { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::PrevDisplay()\n"; // return (di ? ((DisplayNode *)di->Prev()) : 0); if(di) return di->Prev(); else return 0; } // STATE LIST OPERATIONS // deletes from previous cmd list & puts on cmd list cmdList int MgrNode::ChangeList(DisplayNodeList *cmdList) { if(!di) di = new class DisplayNode(this); return di->ChangeList(cmdList); } // deletes from previous cmd list & puts on cmd list cmdList int MgrNode::ChangeList(MgrNodeList *cmdList) { Remove(); cmdList->Append(this); return 1; } int MgrNode::ChangeState(displayStateEnum s) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::ChangeState()\n"; if(di) { return di->ChangeState(s); } return 0; } int MgrNode::ChangeState(stateEnum s) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::ChangeState()\n"; currState = s; // for now, later need to type check somehow and return success or failure return 1; } void MgrNode::Init(SCLP23(Application_instance) *s, stateEnum listState, MgrNodeList *list) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::Init()\n"; se = s; arrayIndex = -1; di = 0; currState = listState; if(list) { list->Append(this); } } // used for sentinel node on lists of MgrNodes MgrNode::MgrNode() { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::MgrNode()\n"; // if(debug_level >= PrintValues) // G4cout << "MgrNode::this : '" << this << "'\n"; Init(0, noStateSE, 0); } MgrNode::MgrNode(SCLP23(Application_instance) *StepEntPtr) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::MgrNode()\n"; // if(debug_level >= PrintValues) // G4cout << "MgrNode::this : '" << this << "'\n"; Init(StepEntPtr, noStateSE, 0); } // 'listState' == // completeSE - if reading valid exchange file // incompleteSE or completeSE - if reading working session file // newSE - if instance is created by user using editor (probe) MgrNode::MgrNode(SCLP23(Application_instance) *StepEntPtr, stateEnum listState) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::MgrNode()\n"; // if(debug_level >= PrintValues) // G4cout << "MgrNode::this : '" << this << "'\n"; Init(StepEntPtr, listState, 0); } // 'listState' == // completeSE - if reading valid exchange file // incompleteSE or completeSE - if reading working session file // newSE - if instance is created by user using editor (probe) MgrNode::MgrNode(SCLP23(Application_instance) *StepEntPtr, stateEnum listState, MgrNodeList *list) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::MgrNode()\n"; // if(debug_level >= PrintValues) // G4cout << "MgrNode::this : '" << this << "'\n"; Init(StepEntPtr, listState, list); }