summaryrefslogtreecommitdiff
path: root/inc/LibCtl_GlobalNode.gxx
blob: 31906db2dbb53d2c8f30342c7eaacfbc0ed4da38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//#include <LibCtl_GlobalNode.ixx>

//  Classe generique imbriquee dans Library : utilisee pour construire les
//  listes globales de Modules attaches a une classe instanciee de Library
//  (cf Library pour plus de details)


    LibCtl_GlobalNode::LibCtl_GlobalNode ()    {  }

// ATTENTION, Add agit en substitution : pour un Protocol donne, c est le
//   dernier appel qui l emporte
    void LibCtl_GlobalNode::Add
  (const Handle(TheModule)& amodule, const Handle(TheProtocol)& aprotocol)
{
  if (themod == amodule) return;
  if (theprot == aprotocol) themod = amodule;
  else if (thenext.IsNull()) {
    if (themod.IsNull()) {  themod = amodule;   theprot = aprotocol;  }
    else {
      thenext = new LibCtl_GlobalNode;
      thenext->Add (amodule,aprotocol);
    }
  }
  else thenext->Add (amodule,aprotocol);
}

    const Handle(TheModule)& LibCtl_GlobalNode::Module () const
      {  return themod;  }

    const Handle(TheProtocol)& LibCtl_GlobalNode::Protocol () const
      {  return theprot;  }

    const Handle(LibCtl_GlobalNode)& LibCtl_GlobalNode::Next () const
      {  return thenext;  }