/* @(#)bank.cc (c) Telelogic AB */ #include #include "support.h" #include "account.h" #include "bank.h" #include "cashcard.h" #include "customer.h" #include "cardauth.h" #include "consorti.h" #include "cashiers.h" #include "cashier.h" CashCardObj Bank::create_cashcard(class Customer& customer) { CashCard *cashcard; cashcard = new CashCard; return(cashcard); } AccountObj Bank::create_account(class Customer& customer) { AccountObj account; account = new Account(1000); // Limit per default return (account); } void Bank::GenInit() { BankAccount = 0; BankCashier = 0; CashierStation = 0; Consortium = 0; CardAuthorization = 0; } Bank::Bank() { GenInit(); } Bank::Bank(const char* name, const char* code) { GenInit(); Name.SetStr(name); Code.SetStr(code); } void Bank::Print() { std::cout<<"Bank:\n"; std::cout<<"\t"<<"Name : \t\t"<same_Bank); //GENB if (*p) *p = (*p) ->same_Bank; //GENB } //GENB class CardAuthorization& Bank::get_NthCardAuthorization (int icard) { CardAuthorizationObj cardauth; cardauth = CardAuthorization; while ((cardauth != NULL) && POSITIVE(icard--)) { cardauth = cardauth->same_Bank; } return (*cardauth); } class CashCard& Bank::get_NthCashCard (int icard) { return (*((get_NthCardAuthorization(icard)).CashCard)); } void Bank::set_Consortium (class Consortium& a_Consortium) //GENB { //GENB p_connect_Consortium(a_Consortium); //GENB a_Consortium.p_connect_Bank(*this); //GENB } //GENB void Bank::unset_Consortium() //GENB { //GENB if (Consortium) Consortium->p_disconnect_Bank(*this); //GENB p_disconnect_Consortium(*Consortium); //GENB } //GENB void Bank::p_connect_Consortium (class Consortium& a_Consortium) //GENB { //GENB unset_Consortium(); //GENB Consortium = &a_Consortium; //GENB } //GENB void Bank::p_disconnect_Consortium(class Consortium& a_Consortium) //GENB { //GENB assert(&a_Consortium == Consortium); //GENB Consortium = 0; //GENB } //GENB void Bank::add_CashierStation (class CashierStation& a_CashierStation) //GENB { //GENB p_connect_CashierStation(a_CashierStation); //GENB a_CashierStation.p_connect_Bank(*this); //GENB } //GENB void Bank::rem_CashierStation(class CashierStation& a_CashierStation) //GENB { //GENB p_disconnect_CashierStation(a_CashierStation); //GENB a_CashierStation.p_disconnect_Bank(*this); //GENB } //GENB void Bank::p_connect_CashierStation (class CashierStation& a_CashierStation) //GENB { //GENB a_CashierStation.same_Bank = CashierStation; //GENB CashierStation = &a_CashierStation; //GENB } //GENB void Bank::p_disconnect_CashierStation(class CashierStation& a_CashierStation) //GENB { //GENB class CashierStation **p; //GENB for (p = &CashierStation; *p && *p != &a_CashierStation; p = &(*p) ->same_Bank); //GENB if (*p) *p = (*p) ->same_Bank; //GENB } //GENB void Bank::add_Cashier (class Cashier& a_Cashier) //GENB { //GENB p_connect_Cashier(a_Cashier); //GENB a_Cashier.p_connect_Bank(*this); //GENB } //GENB void Bank::rem_Cashier(class Cashier& a_Cashier) //GENB { //GENB p_disconnect_Cashier(a_Cashier); //GENB a_Cashier.p_disconnect_Bank(*this); //GENB } //GENB void Bank::p_connect_Cashier (class Cashier& a_Cashier) //GENB { //GENB a_Cashier.same_Bank = BankCashier; //GENB BankCashier = &a_Cashier; //GENB } //GENB void Bank::p_disconnect_Cashier(class Cashier& a_Cashier) //GENB { //GENB class Cashier **p; //GENB for (p = &BankCashier; *p && *p != &a_Cashier; p = &(*p) ->same_Bank); //GENB if (*p) *p = (*p) ->same_Bank; //GENB } //GENB void Bank::add_Account (class Account& a_Account) //GENB { //GENB p_connect_Account(a_Account); //GENB a_Account.p_connect_Bank(*this); //GENB } //GENB void Bank::rem_Account(class Account& a_Account) //GENB { //GENB p_disconnect_Account(a_Account); //GENB a_Account.p_disconnect_Bank(*this); //GENB } //GENB void Bank::p_connect_Account (class Account& a_Account) //GENB { //GENB a_Account.same_Bank = BankAccount; //GENB BankAccount = &a_Account; //GENB } //GENB void Bank::p_disconnect_Account(class Account& a_Account) //GENB { //GENB class Account **p; //GENB for (p = &BankAccount; *p && *p != &a_Account; p = &(*p) ->same_Bank); //GENB if (*p) *p = (*p) ->same_Bank; //GENB } //GENB