/* * 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); }
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(); } } }
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; }
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; }
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; }