// Note: Instrumentation statements are highlighted in green

#include "RelationshipInfo.hpp"
#include "string_io.hpp"

///////////////////////////////////////////////////////////////////////////////
// RelationshipInfo class
///////////////////////////////////////////////////////////////////////////////

// Visual Member Definition
VISIBILITY_START(RelationshipInfo, "Relationship Info", 5)
VVARIABLE(RelationshipInfo, first, "First", 0, 0)
VVARIABLE(RelationshipInfo, middle, "Middle", 0, 0)
VVARIABLE(RelationshipInfo, last, "Last", 0, 0)
VVARIABLE(RelationshipInfo, nickName, "Nickname", 0, 0)
VVARIABLE(RelationshipInfo, gender, "Gender", 0, 0)
VVARIABLE(RelationshipInfo, relationshipType, "Relationship", 0, 0)
VTIMET_VARIABLE(RelationshipInfo, birthday, "Birthday", 0, 0)
VVOID_FUNCTION(RelationshipInfo, clear, "Clear", 0, 0)
VISIBILITY_END

RelationshipInfo::RelationshipInfo(void)
{
}

RelationshipInfo::RelationshipInfo(const RelationshipInfo & that)
{
  *this = that;
}

RelationshipInfo::~RelationshipInfo(void)
{
}

RelationshipInfo & RelationshipInfo::operator =(const RelationshipInfo & that)
{
  if (this != &that) {
    first = that.first;
    middle = that.middle;
    last = that.last;
    nickName = that.nickName;
    gender = that.gender;
    relationshipType = that.relationshipType;
    birthday = that.birthday;
  }
  return *this;
}

std::ostream & operator<< (std::ostream& os, RelationshipInfo & out_obj)
{
  write_string(os, out_obj.first);
  write_string(os, out_obj.middle);
  write_string(os, out_obj.last);
  write_string(os, out_obj.nickName);
  os << out_obj.gender << " ";
  write_string(os, out_obj.relationshipType);
  os << out_obj.birthday << " ";
  return os;
}

std::istream & operator>> (std::istream & is, RelationshipInfo & in_obj)
{
  read_string(is, in_obj.first);
  read_string(is, in_obj.middle);
  read_string(is, in_obj.last);
  read_string(is, in_obj.nickName);
  is >> in_obj.gender;
  read_string(is, in_obj.relationshipType);
  is >> in_obj.birthday;
  return is;
}

bool RelationshipInfo::operator==(const RelationshipInfo & that) const
{
  return relationshipType == that.relationshipType;
}

bool RelationshipInfo::operator!=(const RelationshipInfo & that) const
{
  return relationshipType != that.relationshipType;
}

bool RelationshipInfo::operator<(const RelationshipInfo & that) const
{
  return relationshipType < that.relationshipType;
}

bool RelationshipInfo::operator>(const RelationshipInfo & that) const
{
  return relationshipType > that.relationshipType;
}

void RelationshipInfo::clear(void)
{
  first = "";
  middle = "";
  last = "";
  nickName = "";
  gender = 1;
  relationshipType = "";
  birthday = time(0);
}

void RelationshipInfo::populateEditView(void)
{
  first = "Jack";
  middle = "Frank";
  last = "Sprat";
  nickName =  "Jackie";
  gender = 1;
  relationshipType = "Unspecified";
  birthday = time(0);
}

Copyright 2002-2007 Outerface Technologies, Inc.