Example #1
0
/*
 * Sanitycheck "new" keyword.
 */
NODE *
cxx_new(NODE *p)
{
	NODE *q = p;
	NODE *t1 = bcon(1);
	int nw = NM_NEW;

	while (p->n_op == LB) {
		nw = NM_NWA;
		t1 = buildtree(MUL, t1, eve(p->n_right));
		p->n_right = bcon(0);
		p = p->n_left;
	}
	if (p->n_op != TYPE)
		uerror("new used illegally");
	t1 = buildtree(MUL, t1, 
	    xbcon(tsize(p->n_type, p->n_df, p->n_ap)/SZCHAR, NULL, INTPTR));
	tfree(q);
	return callftn(decoratename(NULL, nw), t1, NULL);
}
Example #2
0
void recEventa::CreatePersonalEvent() const
{
    recEvent eve(0);
    recEventaPersonaVec eapas = GetEventaPersonas();
    for( size_t i = 0 ; i < eapas.size() ; i++ ) {
        recEventTypeRole ro(eapas[i].FGetRoleID());
        if( ro.FGetPrime() == 0 ) {
            continue;
        }
        // List of Individuls associated with this Persona
        recIdVec indIDs = recPersona::GetIndividualIDs( eapas[i].FGetPerID() );
        for( size_t j = 0 ; j < indIDs.size() ; j++ ) {
            if( eve.FGetID() == 0 ) {
                // About time we created the Event
                eve.CreateFromEventa( *this );
                recEventEventa::Create( eve.FGetID(), f_id );
            }
            // Find summary IndividualEvent
            idt ieSumID = recIndividual::GetPersonalSummaryIE( indIDs[j], ro.FGetTypeID() );
            if( ieSumID == 0 ) {
                // Create the summary personal Event.
                recEvent e(0);
                e.FSetTypeID( FGetTypeID() );
                e.SetAutoTitle( recIndividual::GetName( indIDs[j] ) + _(" - Summary") );
                e.FSetDate1ID( recIndividual::CreateBirthDate( indIDs[j] ) );
                e.FSetDate2ID( recIndividual::CreateDeathDate( indIDs[j] ) );
                e.Save();
                idt sum_etrID = recEventType::GetSummaryRole( FGetTypeID() );
                ieSumID = recIndividualEvent::Create( indIDs[j], e.FGetID(), sum_etrID );
            }
            recIndividualEvent ie(0);
            ie.FSetHigherID( ieSumID );
            ie.FSetIndID( indIDs[j] );
            ie.FSetEventID( eve.FGetID() );
            ie.FSetRoleID( ro.FGetID() );
            ie.FSetNote( eapas[i].FGetNote() );
            ie.Save();
        }
    }
}
Example #3
0
idt rgCreateIndEvent(
    wxWindow* wind, idt ind1ID, idt ind2ID, idt famID, unsigned grpfilter )
{
    wxASSERT( ind1ID != 0 );
    const wxString savepoint = recDb::GetSavepointStr();
    recDb::Savepoint( savepoint );

    if( ind2ID && grpfilter == recET_GRP_FILTER_All ) {
        grpfilter = recET_GRP_FILTER_Family;
    }
    idt typeID = rgSelectEventType( wind, rgSELSTYLE_Create, NULL, grpfilter );
    if( typeID == 0 ) {
        recDb::Rollback( savepoint );
        return 0;
    }

    recEvent eve(0);
    eve.FSetTypeID( typeID );
    eve.SetAutoTitle(
        recIndividual::GetName( ind1ID ),
        recIndividual::GetName( ind2ID )
    );
    eve.Save();
    idt eveID = eve.FGetID();

    recIndividualEvent ie(0);
    ie.FSetEventID( eveID );
    ie.FSetIndID( ind1ID );
    ie.Save();
    rgSHOWROLE sr = rgSHOWROLE_PrimeAll;
    if( ind2ID ) {
        Sex sex = recIndividual::GetSex( ind1ID );
        if( sex == SEX_Male ) sr = rgSHOWROLE_PrimeMale;
        if( sex == SEX_Female ) sr = rgSHOWROLE_PrimeFemale;
    }
    if( ! rgEditIndEventRole( wind, ie.FGetID(), sr )  ) {
        recDb::Rollback( savepoint );
        return 0;
    }

    if( ind2ID ) {
        ie.Clear();
        ie.FSetEventID( eveID );
        ie.FSetIndID( ind2ID );
        ie.Save();
        sr = rgSHOWROLE_PrimeAll;
        Sex sex = recIndividual::GetSex( ind2ID );
        if( sex == SEX_Male ) sr = rgSHOWROLE_PrimeMale;
        if( sex == SEX_Female ) sr = rgSHOWROLE_PrimeFemale;
        if( ! rgEditIndEventRole( wind, ie.FGetID(), sr )  ) {
            recDb::Rollback( savepoint );
            return 0;
        }
    }
    if( famID ) {
        recFamilyEvent fe(0);
        fe.FSetFamID( famID );
        fe.FSetEventID( eveID );
        fe.FSetFamSeq( recFamily::GetMaxEventSeqNumber( famID ) + 1 );
        fe.Save();
    }

    if( ! rgEditEvent( wind, eveID ) ) {
        recDb::Rollback( savepoint );
        return 0;
    }
    recDb::ReleaseSavepoint( savepoint );
    return eveID;
}
Example #4
0
idt rgCreateDefaultIndEvent( wxWindow* wind, idt ind1ID, idt ind2ID, recET_GRP grp )
{
    wxASSERT( ind1ID != 0 );
    // TODO: Determine what the default Event (for the given group)
    // by examining the individual (for some culture identity).
    recEventType::EType typeID;
    recEventTypeRole::Role roleID, role2ID = recEventTypeRole::ROLE_Marriage_Bride;
    switch( grp )
    {
    case recET_GRP_FamUnion:
        typeID = recEventType::ET_Marriage;
        roleID = recEventTypeRole::ROLE_Marriage_Groom;
        break;
    case recET_GRP_Birth:
        typeID = recEventType::ET_Birth;
        roleID = recEventTypeRole::ROLE_Birth_Born;
        break;
    case recET_GRP_NrBirth:
        typeID = recEventType::ET_Baptism;
        roleID = recEventTypeRole::ROLE_Baptism_Baptised;
        break;
    case recET_GRP_Death:
        typeID = recEventType::ET_Death;
        roleID = recEventTypeRole::ROLE_Death_Died;
        break;
    case recET_GRP_NrDeath:
        typeID = recEventType::ET_Burial;
        roleID = recEventTypeRole::ROLE_Burial_Deceased;
        break;
    default:
        return 0;
    }
    const wxString savepoint = recDb::GetSavepointStr();
    recDb::Savepoint( savepoint );

    recEvent eve(0);
    eve.FSetTypeID( typeID );
    eve.SetAutoTitle(
        recIndividual::GetName( ind1ID ),
        recIndividual::GetName( ind2ID )
    );
    eve.Save();
    idt eveID = eve.FGetID();

    recIndividualEvent ie(0);
    ie.FSetEventID( eveID );
    ie.FSetIndID( ind1ID );
    ie.FSetRoleID( roleID );
    ie.FSetIndSeq( recIndividual::GetMaxEventSeqNumber( ind1ID ) + 1 );
    ie.Save();
    if( ind2ID ) {
        ie.Clear();
        ie.FSetEventID( eveID );
        ie.FSetIndID( ind2ID );
        ie.FSetRoleID( role2ID );
        ie.FSetIndSeq( recIndividual::GetMaxEventSeqNumber( ind2ID ) + 1 );
        ie.Save();
        idt famID = recFamily::Find( ind1ID, ind2ID );
        wxASSERT( famID != 0 );
        recFamilyEvent fe(0);
        fe.FSetFamID( famID );
        fe.FSetEventID( eveID );
        fe.FSetFamSeq( recFamily::GetMaxEventSeqNumber( famID ) + 1 );
        fe.Save();
    }
    if( ! rgEditEvent( wind, eveID ) ) {
        recDb::Rollback( savepoint );
        return 0;
    }
    recDb::ReleaseSavepoint( savepoint );
    return eveID;
}
Example #5
0
int main(int argc, char** argv)
{
	/****	people (unrelated)	****/
	Person adam("Adam", male);
	Person eve("Eve", female);
	Person joan("Joan", female);
	Person george("George", male);
	Person joseph("Joseph", male);
	Person hillary("Hillary", female);

	/*****		2nd generation		*****/
	// Adam and Eve are parents of Abel, Martha, Mary, and Bill
	Person *pAbel = eve.addChild(new Person("Abel", male));
	adam.addChild(pAbel);

	Person *pMartha = eve.addChild(new Person("Martha", female));
	adam.addChild(pMartha);

	Person *pMary = eve.addChild(new Person("Mary", female));
	adam.addChild(pMary);

	Person *pBill = eve.addChild(new Person("Bill", male));
	adam.addChild(pBill);

	/*****		3nd generation		*****/
	// Joan Abel are parents of Missy
	Person *pMissy = joan.addChild("Missy", female);
	pAbel->addChild(pMissy);

	// George and Martha are parents of Jacky and Patsy
	Person *pJacky = george.addChild("Jacky", female);
	pMartha->addChild(pJacky);

	Person *pPatsy = george.addChild("Patsy", female);
	pMartha->addChild(pPatsy);

	// Mary and Joseph are parents of James
	Person *pJames = pMary->addChild("James", male);
	joseph.addChild(pJames);
	
	// Bill and Hillary are parents of Chelsea
	Person *pChelsea = pBill->addChild("Chelsea", female);
	hillary.addChild(pChelsea);
	
	/*****		Cousins		*****/
	pMissy->addCousin(pJacky);
	pMissy->addCousin(pPatsy);
	pMissy->addCousin(pJames);
	pMissy->addCousin(pChelsea);

	pJacky->addCousin(pMissy);
	pJacky->addCousin(pJames);
	pJacky->addCousin(pChelsea);

	pPatsy->addCousin(pMissy);
	pPatsy->addCousin(pJames);
	pPatsy->addCousin(pChelsea);

	pJames->addCousin(pMissy);
	pJames->addCousin(pJacky);
	pJames->addCousin(pPatsy);
	pJames->addCousin(pChelsea);

	pChelsea->addCousin(pMissy);
	pChelsea->addCousin(pJacky);
	pChelsea->addCousin(pPatsy);
	pChelsea->addCousin(pJames);

	// output all the people in the tree

	/*
	std::cout << "\nAll the people in the tree:\n\n";
	std::cout << adam << eve;
	std::cout << *pAbel << joan << george << *pMartha << *pMary << joseph << *pBill << hillary;
	std::cout << *pMissy << *pJacky << *pPatsy << *pJames << *pChelsea << "\n";
	*/

	std::cout << "\n\t********    Cousins    ********\n";
//	std::cout << "\n\t****    Parents and Cousins    ****\n";

//	pMissy->showParents(pMissy);
	pMissy->getCousins(pMissy);

//	pJacky->showParents(pJacky);
	pJacky->getCousins(pJacky);

//	pPatsy->showParents(pPatsy);
	pPatsy->getCousins(pPatsy);

//	pJames->showParents(pJames);
	pJames->getCousins(pJames);

//	pChelsea->showParents(pChelsea);
	pChelsea->getCousins(pChelsea);

	std::cout << "\n\n";
	return 0;
}
static void udp_server_input_handler(evutil_socket_t fd, short what, void* arg)
{
	int cycle = 0;

	dtls_listener_relay_server_type* server = (dtls_listener_relay_server_type*) arg;

	FUNCSTART;

	if (!(what & EV_READ)) {
		return;
	}

	ioa_network_buffer_handle *elem = NULL;

	start_udp_cycle:

	elem = (ioa_network_buffer_handle *)ioa_network_buffer_allocate(server->e);

	server->sm.m.sm.nd.nbh = elem;
	server->sm.m.sm.nd.recv_ttl = TTL_IGNORE;
	server->sm.m.sm.nd.recv_tos = TOS_IGNORE;

	int slen = server->slen0;
	ssize_t bsize = 0;

	int flags = 0;

	do {
		bsize = recvfrom(fd, ioa_network_buffer_data(elem), ioa_network_buffer_get_capacity(), flags, (struct sockaddr*) &(server->sm.m.sm.nd.src_addr), (socklen_t*) &slen);
	} while (bsize < 0 && (errno == EINTR));

	int conn_reset = is_connreset();
	int to_block = would_block();

	if (bsize < 0) {

		if(to_block) {
			ioa_network_buffer_delete(server->e, server->sm.m.sm.nd.nbh);
			server->sm.m.sm.nd.nbh = NULL;
			FUNCEND;
			return;
		}

	#if defined(MSG_ERRQUEUE)

		//Linux
		int eflags = MSG_ERRQUEUE | MSG_DONTWAIT;
		static s08bits buffer[65535];
		u32bits errcode = 0;
		ioa_addr orig_addr;
		int ttl = 0;
		int tos = 0;
		udp_recvfrom(fd, &orig_addr, &(server->addr), buffer,
					(int) sizeof(buffer), &ttl, &tos, server->e->cmsg, eflags,
					&errcode);
		//try again...
		do {
			bsize = recvfrom(fd, ioa_network_buffer_data(elem), ioa_network_buffer_get_capacity(), flags, (struct sockaddr*) &(server->sm.m.sm.nd.src_addr), (socklen_t*) &slen);
		} while (bsize < 0 && (errno == EINTR));

		conn_reset = is_connreset();
		to_block = would_block();

	#endif

		if(conn_reset) {
			ioa_network_buffer_delete(server->e, server->sm.m.sm.nd.nbh);
			server->sm.m.sm.nd.nbh = NULL;
			reopen_server_socket(server);
			FUNCEND;
			return;
		}
	}

	if(bsize<0) {
		if(!to_block && !conn_reset) {
			int ern=errno;
			perror(__FUNCTION__);
			TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: recvfrom error %d\n",__FUNCTION__,ern);
		}
		ioa_network_buffer_delete(server->e, server->sm.m.sm.nd.nbh);
		server->sm.m.sm.nd.nbh = NULL;
		FUNCEND;
		return;
	}

	if (bsize > 0) {

		ioa_network_buffer_set_size(elem, (size_t)bsize);
		server->sm.m.sm.s = server->udp_listen_s;

		int rc = handle_udp_packet(server, &(server->sm), server->e, server->ts);

		if(rc < 0) {
			if(eve(server->e->verbose)) {
				TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Cannot handle UDP event\n");
			}
		}
	}

	ioa_network_buffer_delete(server->e, server->sm.m.sm.nd.nbh);
	server->sm.m.sm.nd.nbh = NULL;

	if(cycle++<MAX_SINGLE_UDP_BATCH)
		goto start_udp_cycle;

	FUNCEND;
}