Files
geant4/source/geometry/solids/STEP/src/mgrnode.cc
T
2016-06-08 15:42:07 +02:00

221 lines
5.3 KiB
C++

/*
* 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 <mgrnode.h>
#include <mgrnodelist.h>
#include <dispnode.h>
#include <dispnodelist.h>
#include <instmgr.h>
//#include <STEPentity.h>
#include <sdai.h>
#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);
}