Context *ContextSprout(Context *parent, Obj *sproutcon, PNode *sproutpn, Context *next) { Context *cx; cx = CREATE(Context); cx->parent = parent; cx->sense = parent->sense; cx->story_time = parent->story_time; TsRangeSetContext(&cx->story_time, cx); cx->story_tensestep = parent->story_tensestep; cx->last_question = parent->last_question; cx->dc = parent->dc; cx->next = next; TsSetNa(&cx->TsNA); cx->TsNA.cx = cx; cx->answer = NULL; cx->commentary = NULL; cx->makes_sense_reasons = parent->makes_sense_reasons; cx->not_make_sense_reasons = parent->not_make_sense_reasons; cx->reinterp = NULL; cx->anaphors = NULL; cx->questions = NULL; cx->mode = MODE_STOPPED; cx->rsn.sense = parent->rsn.sense; cx->rsn.relevance = parent->rsn.relevance; cx->rsn.novelty = parent->rsn.novelty; parent->numchildren++; cx->id = parent->id*10L + parent->numchildren; cx->numchildren = 0; cx->sproutcon = sproutcon; cx->sproutpn = sproutpn; cx->actors = NULL; #ifdef notdef ContextRepairChildAssertions(parent, cx); #endif cx->actors = ActorCopyAll(parent->actors, parent, cx); Dbg(DBGPLAN, DBGDETAIL, "sprouted Context %ld", cx->id); if (DbgOn(DBGPLAN, DBGHYPER)) { ContextPrint(Log, cx); } return(cx); }
Context *ContextCreate(Ts *ts, TenseStep tensestep, Discourse *dc, Context *next) { Context *cx; cx = CREATE(Context); cx->parent = ContextRoot; cx->sense = SENSE_TOTAL; TsRangeSetNa(&cx->story_time); cx->story_time.startts = *ts; cx->story_time.stopts = *ts; TsRangeSetContext(&cx->story_time, cx); cx->story_time.cx = cx; cx->story_tensestep = tensestep; cx->actors = NULL; cx->last_question = NULL; cx->dc = dc; cx->next = next; TsSetNa(&cx->TsNA); cx->TsNA.cx = cx; cx->answer = NULL; cx->commentary = NULL; cx->makes_sense_reasons = NULL; cx->not_make_sense_reasons = NULL; cx->reinterp = NULL; cx->anaphors = NULL; cx->questions = NULL; cx->mode = MODE_STOPPED; ContextRSNReset(cx); cx->id = ContextNextTopId; cx->numchildren = 0; ContextNextTopId++; cx->sproutcon = NULL; cx->sproutpn = NULL; Dbg(DBGPLAN, DBGDETAIL, "created Context %ld", cx->id); return(cx); }
void TsInit() { TsSetNa(&TsNA); }