/* @(#)consorti.cc (c) Telelogic AB */

#include "consorti.h"

#include "bank.h"
#include <assert.h>
#include "atm.h"

void Consortium::GenInit()
{
    ATM = 0;
    Bank = 0;
}

Consortium::Consortium()
{
    GenInit();
}

Consortium::Consortium(const char* name)
{
    GenInit();
    Name.SetStr(name);
}

Consortium::~Consortium()
{
//    {
//       class Bank *p, *aux;
//       for (p = Bank; p; p = aux) {
//	  aux = p ->same_Consortium;
//	  delete p;
//       }
//    }
}

void Consortium::add_Bank (class Bank& a_Bank)		    //GENB
{							    //GENB
   p_connect_Bank(a_Bank);				    //GENB
   a_Bank.p_connect_Consortium(*this);			    //GENB
}							    //GENB

void Consortium::rem_Bank(class Bank& a_Bank)		    //GENB
{							    //GENB
   p_disconnect_Bank(a_Bank);				    //GENB
   a_Bank.p_disconnect_Consortium(*this);		    //GENB
}							    //GENB

void Consortium::p_connect_Bank (class Bank& a_Bank)	    //GENB
{							    //GENB
   a_Bank.same_Consortium = Bank;			    //GENB
   Bank = &a_Bank;					    //GENB
}							    //GENB

void Consortium::p_disconnect_Bank(class Bank& a_Bank)	    //GENB
{							    //GENB
   class Bank **p;					    //GENB
   for (p = &Bank; *p && *p != &a_Bank; p = &(*p) ->same_Consortium);		//GENB
   if (*p) *p = (*p) ->same_Consortium;			    //GENB
}							    //GENB

void Consortium::add_ATM (class ATM& a_ATM)		    //GENB
{							    //GENB
   p_connect_ATM(a_ATM);				    //GENB
   a_ATM.p_connect_owner(*this);			    //GENB
}							    //GENB

void Consortium::rem_ATM(class ATM& a_ATM)		    //GENB
{							    //GENB
   p_disconnect_ATM(a_ATM);				    //GENB
   a_ATM.p_disconnect_owner(*this);			    //GENB
}							    //GENB

void Consortium::p_connect_ATM (class ATM& a_ATM)	    //GENB
{							    //GENB
   a_ATM.same_owner = ATM;				    //GENB
   ATM = &a_ATM;					    //GENB
}							    //GENB

void Consortium::p_disconnect_ATM(class ATM& a_ATM)	    //GENB
{							    //GENB
   class ATM **p;					    //GENB
   for (p = &ATM; *p && *p != &a_ATM; p = &(*p) ->same_owner);			//GENB
   if (*p) *p = (*p) ->same_owner;			    //GENB
}							    //GENB