#include <Common.h>
#include <System/SysAll.h>
#include <UI/UIAll.h>
#include <stddef.h>
#include "PCalcMain.h"
#include "DataBase.h"
/* function definitions. */
void AddConstRecord(UInt i, CharPtr symbol, CharPtr desc, CharPtr value)
{
VoidHand h = DmNewRecord(gConstantDB, &i, sizeof(ConstDBType));
ConstDBType* c = MemHandleLock(h);
ConstDBType x;
StrCopy(x.symbol, symbol);
StrCopy(x.desc, desc);
StrCopy(x.value, value);
DmWrite(c, 0, &x, sizeof(ConstDBType));
MemHandleUnlock(h);
DmReleaseRecord(gConstantDB, i, true);
}
void ReadConstRecord(UInt i, ConstDBType* x)
{
VoidHand h = DmQueryRecord(gConstantDB, i);
ConstDBType* c = MemHandleLock(h);
StrCopy(x->symbol, c->symbol);
StrCopy(x->desc, c->desc);
StrCopy(x->value, c->value);
MemHandleUnlock(h);
}
Err ModifyConstRecord(UInt i, CharPtr symbol, CharPtr desc, CharPtr value)
{
Err err;
VoidHand h = DmGetRecord(gConstantDB, i);
ConstDBType* c = MemHandleLock(h);
ConstDBType x;
StrCopy(x.symbol, symbol);
StrCopy(x.desc, desc);
StrCopy(x.value, value);
err = DmWrite(c, 0, &x, sizeof(x));
MemHandleUnlock(h);
DmReleaseRecord(gConstantDB, i, true);
return err;
}
void ReadProgramTitle(UInt i, CharPtr title)
{
VoidHand h = DmQueryRecord(gProgramDB, i);
ProgramDBType* c = MemHandleLock(h);
StrCopy(title, c->title);
MemHandleUnlock(h);
}
void ReadProgramCode(UInt i, CharPtr code)
{
VoidHand h = DmQueryRecord(gProgramDB, i);
ProgramDBType* c = MemHandleLock(h);
StrCopy(code, c->code);
MemHandleUnlock(h);
}
void AddProgramRecord(UInt i, CharPtr title, CharPtr code)
{
UInt size = sizeof(ProgramDBType) + StrLen(code);
VoidHand h = DmNewRecord(gProgramDB, &i, size);
ProgramDBType* c = MemHandleLock(h);
DmWrite(c, 0, title, StrLen(title) + 1);
DmWrite(c, offsetof(ProgramDBType, code), code, StrLen(code) + 1);
MemHandleUnlock(h);
DmReleaseRecord(gProgramDB, i, true);
}
Err ModifyProgramRecord(UInt i, CharPtr title, CharPtr code)
{
Err err;
VoidHand h
= DmResizeRecord(gProgramDB, i, sizeof(ProgramDBType) + StrLen(code));
ProgramDBType* c = MemHandleLock(h);
err = DmWrite(c, 0, title, StrLen(title) + 1);
err = DmWrite(c, offsetof(ProgramDBType, code), code, StrLen(code) + 1);
MemHandleUnlock(h);
DmReleaseRecord(gProgramDB, i, true);
return err;
}