mirror of
https://github.com/zydeco/minivmac4ios.git
synced 2024-11-26 00:49:20 +00:00
122 lines
2.0 KiB
C
122 lines
2.0 KiB
C
/*
|
|
PBUFSTDC.h
|
|
|
|
Copyright (C) 2018 Paul C. Pratt
|
|
|
|
You can redistribute this file and/or modify it under the terms
|
|
of version 2 of the GNU General Public License as published by
|
|
the Free Software Foundation. You should have received a copy
|
|
of the license along with this file; see the file COPYING.
|
|
|
|
This file is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
license for more details.
|
|
*/
|
|
|
|
/*
|
|
Parameter BUFfers implemented with STanDard C library
|
|
*/
|
|
|
|
|
|
#if IncludePbufs
|
|
LOCALVAR void *PbufDat[NumPbufs];
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
LOCALFUNC tMacErr PbufNewFromPtr(void *p, ui5b count, tPbuf *r)
|
|
{
|
|
tPbuf i;
|
|
tMacErr err;
|
|
|
|
if (! FirstFreePbuf(&i)) {
|
|
free(p);
|
|
err = mnvm_miscErr;
|
|
} else {
|
|
*r = i;
|
|
PbufDat[i] = p;
|
|
PbufNewNotify(i, count);
|
|
err = mnvm_noErr;
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
LOCALPROC PbufKillToPtr(void **p, ui5r *count, tPbuf r)
|
|
{
|
|
*p = PbufDat[r];
|
|
*count = PbufSize[r];
|
|
|
|
PbufDisposeNotify(r);
|
|
}
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
GLOBALOSGLUFUNC tMacErr PbufNew(ui5b count, tPbuf *r)
|
|
{
|
|
tMacErr err = mnvm_miscErr;
|
|
|
|
void *p = calloc(1, count);
|
|
if (NULL != p) {
|
|
err = PbufNewFromPtr(p, count, r);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
GLOBALOSGLUPROC PbufDispose(tPbuf i)
|
|
{
|
|
void *p;
|
|
ui5r count;
|
|
|
|
PbufKillToPtr(&p, &count, i);
|
|
|
|
free(p);
|
|
}
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
LOCALPROC UnInitPbufs(void)
|
|
{
|
|
tPbuf i;
|
|
|
|
for (i = 0; i < NumPbufs; ++i) {
|
|
if (PbufIsAllocated(i)) {
|
|
PbufDispose(i);
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
#define PbufHaveLock 1
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
LOCALFUNC ui3p PbufLock(tPbuf i)
|
|
{
|
|
return (ui3p)PbufDat[i];
|
|
}
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
#define PbufUnlock(i)
|
|
#endif
|
|
|
|
#if IncludePbufs
|
|
GLOBALOSGLUPROC PbufTransfer(ui3p Buffer,
|
|
tPbuf i, ui5r offset, ui5r count, blnr IsWrite)
|
|
{
|
|
void *p = ((ui3p)PbufDat[i]) + offset;
|
|
if (IsWrite) {
|
|
(void) memcpy(p, Buffer, count);
|
|
} else {
|
|
(void) memcpy(Buffer, p, count);
|
|
}
|
|
}
|
|
#endif
|