home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1999 March
/
VPR9903A.BIN
/
APUPDATE
/
VC
/
Tx300d
/
TX300D.LZH
/
CONTEXT.CI
< prev
next >
Wrap
Text File
|
1996-03-22
|
1KB
|
78 lines
//1.00F CONTEXT -> CONTEXTTX
// MAXCONTEXTTX 最大コンテキスト数(#define)
// CONTEXTTX コンテキストタイプ(#define or typedef)
static CONTEXTTX tcontext[MAXCONTEXTTX];
static BYTE tfcontext[MAXCONTEXTTX];
static int ncontext = 0;
static void contextInit(void)
{
ncontext = 0;
}
static CONTEXTTX *contextNew(void)
{
int i = ncontext;
if (ncontext >= MAXCONTEXTTX) return NULL;
if (tfcontext[i]) {
for (i = 0;i < MAXCONTEXTTX;i++) {
if (!tfcontext[i]) break;
}
}
//
ncontext++;
tfcontext[i] = 1;
memset(tcontext + i,0,sizeof(CONTEXTTX));
return tcontext + i++;
}
static BOOL contextCheck(CONTEXTTX *context)
{
long d = (LPBYTE)context - (LPBYTE)tcontext;
if (
(0 <= d && d < sizeof(CONTEXTTX) * MAXCONTEXTTX) &&
(d % sizeof(CONTEXTTX) == 0) &&
tfcontext[context - tcontext] == 1
) {
return TRUE;
}
#ifndef __NOTX__
attention("%s:無効なハンドルが渡されました",__FILE__);
#endif
return FALSE;
}
static BOOL contextDelete(CONTEXTTX *context)
{
if (!contextCheck(context)) return FALSE;
tfcontext[context - tcontext] = 0;
ncontext--;
return TRUE;
}
static int contextGetCount(void)
{
return ncontext;
}
static CONTEXTTX *contextRead(int icontext)
{
if (0 <= icontext && icontext < ncontext) {
int i;
int j = 0;
for (i = 0;;i++) {
if (tfcontext[i]) {
if (j == icontext) return tcontext + i;
j++;
}
}
}
return NULL;
}