// Note: Instrumentation statements are highlighted in green
#include "PersonalInfo.hpp"
#include "string_io.hpp"
///////////////////////////////////////////////////////////////////////////////
// PersonalInfo class
///////////////////////////////////////////////////////////////////////////////
// Visual Member Definition
VISIBILITY_START(PersonalInfo, "Personal Info", 5)
VVARIABLE(PersonalInfo, newRelationship, "New Relationship", 0, 0)
VBITSET_VARIABLE(PersonalInfo, gender, Gender, "Gender", 0, 0)
VVARIABLE(PersonalInfo, enableBirthday, "Enable birthday", 0, 0)
VVARIABLE(PersonalInfo, enableAnniversary, "Enable anniversary", 0, 0)
VTIMET_VARIABLE(PersonalInfo, birthday, "Birthday", 0, 0)
VTIMET_VARIABLE(PersonalInfo, anniversary, "Anniversary", 0, 0)
VVCONTAINER(PersonalInfo, relationshipList, "Relationship list", 0, 0)
VVITERATOR(PersonalInfo, relationshipIter, relationshipList, RelationshipList, "Relationship iterator", 0, 0)
VVOID_FUNCTION(PersonalInfo, add, "Add", 0, 0)
VVOID_FUNCTION(PersonalInfo, remove, "Remove", 0, 0)
VVOID_FUNCTION(PersonalInfo, clear, "Clear", 0, 0)
VISIBILITY_END
PersonalInfo::PersonalInfo(void)
{
relationshipIter = relationshipList.begin();
}
PersonalInfo::PersonalInfo(const PersonalInfo & that)
{
*this = that;
}
PersonalInfo::~PersonalInfo(void)
{
}
PersonalInfo & PersonalInfo::operator =(const PersonalInfo & that)
{
if (this != &that) {
newRelationship = that.newRelationship;
gender = that.gender;
enableBirthday = that.enableBirthday;
enableAnniversary = that.enableAnniversary;
birthday = that.birthday;
anniversary = that.anniversary;
relationshipList = that.relationshipList;
relationshipIter = relationshipList.begin();
}
return *this;
}
std::ostream & operator<< (std::ostream& os, PersonalInfo & out_obj)
{
os << out_obj.newRelationship << " ";
os << out_obj.gender << " ";
os << out_obj.enableBirthday << " ";
os << out_obj.enableAnniversary << " ";
os << out_obj.birthday << " ";
os << out_obj.anniversary << " ";
int item_size = out_obj.relationshipList.size();
os << item_size << " ";
RelationshipList::iterator c_iter = out_obj.relationshipList.begin();
while (c_iter != out_obj.relationshipList.end()) {
os << *c_iter;
++c_iter;
}
return os;
}
std::istream & operator>> (std::istream & is, PersonalInfo & in_obj)
{
int item_size;
is >> in_obj.newRelationship;
is >> in_obj.gender;
is >> in_obj.enableBirthday;
is >> in_obj.enableAnniversary;
is >> in_obj.birthday;
is >> in_obj.anniversary;
is >> item_size;
if (item_size) {
RelationshipList::value_type s_obj;
while (item_size--) {
is >> s_obj;
in_obj.relationshipList.insert(in_obj.relationshipList.end(), s_obj);
}
}
in_obj.relationshipIter = in_obj.relationshipList.begin();
return is;
}
void PersonalInfo::add(void)
{
relationshipList.push_back(newRelationship);
}
void PersonalInfo::remove(void)
{
if (relationshipIter != relationshipList.end())
relationshipIter = relationshipList.erase(relationshipIter);
}
void PersonalInfo::clear(void)
{
newRelationship.clear();
gender = UNSPECIFIED;
enableBirthday = false;
enableAnniversary = false;
birthday = time(0);
anniversary = time(0);
relationshipList.clear();
relationshipIter = relationshipList.begin();
}
void PersonalInfo::populateEditView(void)
{
newRelationship.populateEditView();
gender = MALE;
enableBirthday = true;
enableAnniversary = false;
birthday = time(0);
anniversary = time(0);
RelationshipList::value_type c_object;
c_object.populateEditView();
relationshipList.insert(relationshipList.end(), c_object);
relationshipList.insert(relationshipList.end(), c_object);
relationshipList.insert(relationshipList.end(), c_object);
relationshipIter = relationshipList.begin();
}
|