131 lines
2.5 KiB
C
131 lines
2.5 KiB
C
/* NOENGINE.C */
|
|
|
|
#include <notes.g>
|
|
#include <notes.rsg>
|
|
#include <hwim.h>
|
|
|
|
GLREF_D PR_VAFLAT *DatApp1;
|
|
|
|
GLDEF_C NOTE *ePointToNote(INT pos)
|
|
{
|
|
return((NOTE *)p_send3(DatApp1,O_VA_PREC,pos));
|
|
}
|
|
|
|
GLDEF_C INT eAppendNullEntry(VOID)
|
|
{
|
|
NOTE note;
|
|
|
|
if (DatApp1->varoot.nrec==MAX_NUMBER_NOTES)
|
|
{
|
|
hInfoPrint(NOSTR_MAX_NUMBER_NOTES);
|
|
p_leave(RUN_ACTIVE_CLEANUP_NONOTIFY);
|
|
}
|
|
p_bfil(¬e,sizeof(NOTE),0);
|
|
p_send3(DatApp1,O_VA_APPEND,¬e);
|
|
return(DatApp1->varoot.nrec-1);
|
|
}
|
|
|
|
LOCAL_C VOID ZeroLenBuf(LENBUF *lb)
|
|
{
|
|
p_free(lb->buf);
|
|
lb->buf=NULL;
|
|
lb->len=0;
|
|
}
|
|
|
|
GLDEF_C VOID eZeroNote(NOTE *pn)
|
|
{
|
|
ZeroLenBuf(&pn->title);
|
|
ZeroLenBuf(&pn->note);
|
|
pn->tagged=FALSE;
|
|
}
|
|
|
|
GLDEF_C INT eDeleteNote(INT pos)
|
|
{
|
|
if (DatApp1->varoot.nrec==1)
|
|
{
|
|
eZeroNote(ePointToNote(0));
|
|
return(0);
|
|
}
|
|
p_send3(DatApp1,O_VA_DELETE,pos);
|
|
p_send(DatApp1,O_VA_COMPRESS);
|
|
if (pos==DatApp1->varoot.nrec)
|
|
pos--;
|
|
return(pos);
|
|
}
|
|
|
|
GLDEF_C VOID eInitialiseEngine(VOID)
|
|
{
|
|
DatApp1=f_newsend(CAT_NOTES_OLIB,C_VAFLAT,O_VA_INIT,sizeof(NOTE),4);
|
|
eAppendNullEntry();
|
|
}
|
|
|
|
GLDEF_C INT eCountTaggedNotes(VOID)
|
|
{
|
|
INT ret;
|
|
INT i;
|
|
NOTE *pn;
|
|
|
|
ret=0;
|
|
pn=ePointToNote(0);
|
|
i=DatApp1->varoot.nrec;
|
|
while (i--)
|
|
{
|
|
if (pn->tagged)
|
|
ret++;
|
|
pn++;
|
|
}
|
|
return(ret);
|
|
}
|
|
|
|
GLDEF_C VOID eTagAllNotes(INT clear)
|
|
{
|
|
INT set;
|
|
INT i;
|
|
NOTE *pn;
|
|
|
|
set=(!clear);
|
|
pn=ePointToNote(0);
|
|
i=DatApp1->varoot.nrec;
|
|
while (i--)
|
|
{
|
|
pn->tagged=set;
|
|
pn++;
|
|
}
|
|
}
|
|
|
|
#pragma save,ENTER_CALL
|
|
|
|
LOCAL_C INT TakeCopyLenBuf(LENBUF *targ,LENBUF *src)
|
|
{
|
|
targ->buf=f_alloc(src->len);
|
|
p_bcpy(targ->buf,src->buf,src->len);
|
|
targ->len=src->len;
|
|
return(0);
|
|
}
|
|
|
|
#pragma restore
|
|
|
|
GLDEF_C VOID eTakeCopy(NOTE *targ,NOTE *src)
|
|
{
|
|
INT ret;
|
|
|
|
TakeCopyLenBuf(&targ->title,&src->title);
|
|
ret=p_enter3(TakeCopyLenBuf,&targ->note,&src->note);
|
|
if (ret)
|
|
{
|
|
p_free(targ->title.buf);
|
|
targ->title.buf=0;
|
|
p_leave(ret);
|
|
}
|
|
targ->tagged=src->tagged;
|
|
}
|
|
|
|
GLDEF_C VOID eMoveNoteTo(INT newpos,INT pos)
|
|
{
|
|
NOTE moving;
|
|
|
|
moving=*ePointToNote(pos);
|
|
p_send3(DatApp1,O_VA_DELETE,pos);
|
|
p_send4(DatApp1,O_VA_INSERT,newpos,&moving);
|
|
}
|