kint kim_delint(KIM *im, const kchar *id) { KRtiRec *rec = kim_chkrec(im, id); if (rec) { assert(RT_INT == rec->var.type); return delrec(im, rec); } else kerror(("KIM: kim_delint: not found record : %s\n", id)); return -1; }
void menu() { int opt,style,size=2,x,y; while(1) { cleardevice(); style = TRIPLEX_FONT; /* select the text style */ settextstyle(style, HORIZ_DIR, size); // outtext("student record project"); outtextxy(200,200," 1.new record"); setcolor(4); outtextxy(220,220,"\n 2.modification in record"); setcolor(5); outtextxy(240,240,"\n 3.delete record"); setcolor(6); outtextxy(260,260,"\n 4.display"); setcolor(7); outtextxy(280,280,"\n 8.exit"); setcolor(8); outtextxy(300,300,"\n option "); setcolor(9); scanf("%d",&opt); if(opt>7||opt<0) break; else switch(opt) { case 1: add(); break; case 2: modrec(); break; case 4: display(); break; case 3: delrec(); break; } getch(); return; } }
/*--------------------------------------------------------------------------------- * Add Value to RTI */ static KRtiRec *addrec(KIM *im, const kchar *id, kuchar type, kvoid *def, kint flg, ATPROC at, const kchar *desc) { KRtiRec *rec; KRtiWatch *wch; K_dlist_entry *wchentry; ksyn_lck_get(im->lck); rec = kim_chkrec(im, id); if (rec) delrec(im, rec); rec = (KRtiRec *) kmem_alloz(sizeof(KRtiRec)); if (rec) { rec->id = kstr_dup(id); rec->desc = desc ? kstr_dup(desc) : knil; rec->var.type = type; rec->flg = flg; rec->at = at; init_dlist_head(&rec->awchhdr); init_dlist_head(&rec->bwchhdr); init_dlist_head(&rec->entry); switch (type) { case RT_STR: if (def) rec->var.def.sv = kstr_dup((kchar *) def); break; case RT_PTR: rec->var.def.pv = (kvoid *) def; break; case RT_INT: rec->var.def.iv = (kint) def; break; default: delrec(im, rec); ksyn_lck_rel(im->lck); return knil; } /* XXX queue to im */ insert_dlist_tail_entry(&im->rechdr, &rec->entry); /* XXX process the NY watches */ wchentry = im->nywch.ahdr.next; while (wchentry != &im->nywch.ahdr) { wch = FIELD_TO_STRUCTURE(wchentry, KRtiWatch, abwchentry); wchentry = wchentry->next; if (0 == strcmp(wch->forid, id)) { remove_dlist_entry(&wch->abwchentry); insert_dlist_tail_entry(&rec->awchhdr, &wch->abwchentry); } } wchentry = im->nywch.bhdr.next; while (wchentry != &im->nywch.bhdr) { wch = FIELD_TO_STRUCTURE(wchentry, KRtiWatch, abwchentry); wchentry = wchentry->next; if (0 == strcmp(wch->forid, id)) { remove_dlist_entry(&wch->abwchentry); insert_dlist_tail_entry(&rec->bwchhdr, &wch->abwchentry); } } if (RF_AUTOSET & flg) setrec(im, rec, (kvoid *) def, knil, knil); } ksyn_lck_rel(im->lck); return rec; }