#include "Relations.h"
#include <string>
using namespace std;
//function prototypes
void listChildren(const OneMany<string, string>& MotherChildren,
const string& Mother);
void insertChild(OneMany<string, string>& MotherChildren,
const string& Mother, const string& Child);
void main(){
// declare the relationship
// each mother might have many children but each child indeed
// has only one mother
OneMany<string, string> MotherChildren;
string firstMother("Jane");
string secondMother("Ann");
string child;
child = "Paul";
insertChild(MotherChildren, firstMother, child);
child = "Paul";
// will fail because Paul is already in the relationship
insertChild(MotherChildren, firstMother, child);
child = "Richard";
insertChild(MotherChildren, firstMother, child);
child = "Ann";
insertChild(MotherChildren, firstMother, child);
child = "Alex";
insertChild(MotherChildren, firstMother, child);
/////////////////////////////////////////////
child = "Cathy";
insertChild(MotherChildren, secondMother, child);
//will fail because Richard is Jane's son
child = "Richard";
insertChild(MotherChildren, secondMother, child);
child = "Peter";
insertChild(MotherChildren, secondMother, child);
child = "Mary";
insertChild(MotherChildren, secondMother, child);
cout << "Listing Jane's children:" << endl;
listChildren(MotherChildren, firstMother);
cout << endl;
cout << "Listing Ann's children:" << endl;
listChildren(MotherChildren, secondMother);
cout << endl;
string* pMother = MotherChildren.getOne("Ann");
if(NULL != pMother)
cout << "Ann's mother is " << *pMother << endl;
}
void listChildren(const OneMany<string, string>& MotherChildren,
const string& Mother){
//Iterate through all children
for(OneMany<string, string>::const_iterator it =
MotherChildren.begin(Mother),
end = MotherChildren.end(Mother); it != end; ++it)
cout << *it << endl;
}
void insertChild(OneMany<string, string>& MotherChildren,
const string& Mother, const string& Child){
if(!MotherChildren.insert(Mother, Child))
cout << ">>>Can't insert " << Child << " into relationship "
<< Mother << "-" << Child << endl;
}
/*
Output:
>>>Can't insert Paul into relationship Jane-Paul
>>>Can't insert Richard into relationship Ann-Richard
Listing Jane's children:
Paul
Richard
Ann
Alex
Listing Ann's children:
Cathy
Peter
Mary
Ann's mother is Jane
*/
End of Listing