- char * str_act = "ACTION";
- char * str_obj = "OBJECT";
- static struct MapObjAct ** moa_p_p = &world.map_obj_acts;
- static struct MapObjDef ** mod_p_p = &world.map_obj_defs;
- static enum flag action_flags = READY_ACT;
- static enum flag object_flags = READY_OBJ;
- static struct EntryHead * moa = NULL;
- static struct EntryHead * mod = NULL;
- if ( !context->token0
- || !strcmp(context->token0,str_act) || !strcmp(context->token0,str_obj))
- {
- char * err_fin = "Last definition block not finished yet.";
- err_line((action_flags & READY_ACT) ^ READY_ACT,
- context->line, context->err_pre, err_fin);
- err_line((object_flags & READY_OBJ) ^ READY_OBJ,
- context->line, context->err_pre, err_fin);
- object_flags = action_flags = READY_OBJ;
- write_if_entry(&moa, (struct EntryHead ***) &moa_p_p);
- write_if_entry(&mod, (struct EntryHead ***) &mod_p_p);
- }
- if (!context->token0)
- {
- set_cleanup_flag(CLEANUP_MAP_OBJECT_ACTS | CLEANUP_MAP_OBJECT_DEFS);
- test_corpse_ids();
- return;
- }
- if (!( new_entry(context, str_act, &action_flags,
- sizeof(struct MapObjAct), (struct EntryHead**) &moa,
- (struct EntryHead *) world.map_obj_acts)
- || new_entry(context, str_obj, &object_flags,
- sizeof(struct MapObjDef), (struct EntryHead**) &mod,
- (struct EntryHead *) world.map_obj_defs)
- || set_members(context, &object_flags, &action_flags,
- (struct MapObjDef *) mod, (struct MapObjAct *) moa)))