예제 #1
0
파일: kim.c 프로젝트: kamasamikon/zuk
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;
}
예제 #2
0
 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;
 }
}
예제 #3
0
파일: kim.c 프로젝트: kamasamikon/zuk
/*---------------------------------------------------------------------------------
 * 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;
}