Example #1
0
void RetinueAddWarrior(struct Retinue* _Retinue, const struct Person* _Warrior) {
	if(RetinueIsWarrior(_Retinue, _Warrior) != 0 || _Retinue->Leader->Person == _Warrior)
		return;
	ArrayInsertSort_S(&_Retinue->Warriors, (void*)_Warrior, ObjectCmp);	
	_Retinue->FamilySz += FamilySize(_Warrior->Family);
	PushEvent(EVENT_NEWRECRUIT, _Retinue->Leader, (void*)_Warrior);
}
Example #2
0
Blob IPAddress::GetAddressBytes() const {
	int size = FamilySize(AddressFamily);
	if (!size)
		Throw(ExtErr::UnknownHostAddressType);
	switch ((int)get_AddressFamily()) {
	case AF_INET:
		return Blob(&m_sin.sin_addr, 4);
	case AF_INET6:
		return Blob(&m_sin6.sin6_addr, 16);
	default:
		Throw(ExtErr::UnknownHostAddressType);
	}
}
Example #3
0
void ExportMendelPedigree (individual *indlist)
{
  int i;
  namelist *pedigree, *pedlist;
  markerlist *marker;

  individual *ind;
  pedlist = MakePedigreeList(indlist);

  cfopen ("mendel.ped", "w");
  fprintf(F, "(I4,A15,A8)\n");
  fprintf(F, "(3A11,3A2");

  // Add marker info
  if (numberofmarkers()>0)
    fprintf(F, ",%d(1X,A7)", numberofmarkers());
  if (numberoftraits()>0)
    fprintf(F, ",%d(1X,A8)", numberoftraits());

  fprintf(F, ")\n");

  for (pedigree = pedlist; pedigree; pedigree = pedigree ->next) {
    fprintf(F, "%-4d%-15s\n",FamilySize(indlist, pedigree->name), pedigree->name);

    for (ind = indlist; ind; ind = ind->next)
    {
      if (!strcmpl(pedigree->name, ind->pedigree)) {
	if (founder(ind)) {
	  fprintf(F, "%-11s%-11s%-11s", ind->id, "","");
	}
	else {
 	  fprintf(F, "%-11s%-11s%-11s", ind->id, ind->father->id, ind->mother->id);
	}
	// Spaces here for non-existing disease status and monozygotic twin status?
	fprintf(F, "%2s    ", ind->sex==S_MALE ? "M" : "F");

        // Now write the marker information
     
	for (i=1; i<=numberofmarkers(); i++) {
	  marker = markernumber(ind, order[i]);
	  if (marker->allele1 == 0 || marker->allele2 == 0) {
	    fprintf(F, " %7s", "");
	  }
	  else {
	    //	    fprintf(F, " %3d/%-3d", marker->allele1, marker->allele2);
	    fprintf(F, " %3c/%-3c", 64+marker->allele1, 64+marker->allele2);
	  }
	}

        // Then write the trait information
	for (i=1; i<=numberoftraits(); i++) {
	  if (!traitmiss(ind, i)) 
	    fprintf(F, " %8f", trait(ind, i));
	  else
	    fprintf(F, " %8s", "");

	}
        fprintf(F, "\n");
      }
    }
  }

  freelist(pedlist);  
  fclose(F);
}