#include #include #include #include #include #include #include "State.h" #include "Date.h" using namespace std; //Constructor to initialize all members to null State::State() { name = ""; pop = 0; popRank = 0; popDensity = 0.0; areaOfState = 0; areaRank = 0; orderOfAdmission = 0; capital = ""; } int State::initBuffer (DelimTextBuffer &buf) {return(true); // nothing else need be done } template char *toString(eltType elt) {ostrstream oss; oss << elt << '\0'; string temp=oss.str(); char *result=new char[15]; strcpy(result,temp.c_str()); return(result); } int State::pack (DelimTextBuffer & Buffer) const {// pack the fields into a TextBuffer, return TRUE if all succeed, FALSE o/w string temp; Buffer . Clear (); int result; result=Buffer.Pack(name.c_str()); result=result && Buffer.Pack(toString(pop)); result=result && Buffer.Pack(toString(popRank)); result=result && Buffer.Pack(toString(popDensity)); result=result && Buffer.Pack(toString(areaOfState)); result=result && Buffer.Pack(toString(areaRank)); result=result && Buffer.Pack(toString(capital)); return result; } template void fromString(char *elt,eltType &theElt) {istrstream iss(elt); iss >> theElt; } int State::unpack (DelimTextBuffer & Buffer) {// pack the fields into a TextBuffer, return TRUE if all succeed, FALSE o/w int result; char str[15]; // get the name result=Buffer.Unpack(str); fromString(str,name); result=Buffer.Unpack(str); fromString(str,pop); result=Buffer.Unpack(str); fromString(str,popRank); result=Buffer.Unpack(str); fromString(str,popDensity); result=Buffer.Unpack(str); fromString(str,areaOfState); result=Buffer.Unpack(str); fromString(str,areaRank); result=Buffer.Unpack(str); fromString(str,capital); return result; } ///overloading << operator ostream& operator<<(ostream& osObject, const State& cObject) { osObject<<"State Name: " <> operator ifstream& operator>>(ifstream& isObject, State& cObject) { getline(isObject, cObject.name); isObject>>cObject.pop >>cObject.popRank >>cObject.popDensity >>cObject.areaOfState >>cObject.areaRank >>cObject.dateOfAdmission >>cObject.orderOfAdmission; getline(isObject, cObject.capital); }