home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
gnu
/
gemlib27.lzh
/
GEMLIB27
/
COMMON.H
< prev
next >
Wrap
C/C++ Source or Header
|
1993-07-30
|
3KB
|
96 lines
/*
* gemlib bindings library visible commons only
*
* ++jrb bammi@cadence.com
*
* modified: mj -- ntomczak@vm.ucs.ualberta.ca
*/
#ifndef _COMMON_H
#define _COMMON_H
/* Array sizes in vdi control block */
#define CNTRLMAX 12 /* It seems that 11 is enough - max reached
for vex_* functions */
#define INTINMAX 255 /* This library will allow strings up to this
size in v_gtext and vr[qm]_string */
#define INTOUTMAX 45 /* A limit for number of elements in _intout
for usual functions - reached for v_opnwk */
#define PTSINMAX 1024 /* Max number of points in _ptsin - 2 shorts
for a point. Value raised to accomodate
TT and fsmgdos printer drivers */
#define PTSOUTMAX 6 /* Max number of points in _ptsout - 2 shorts
for a point. Max reached in v_opnwk */
/* Size for _global in aes control block - most other stuff overlapped
with arrays for vdi - sizes needed for _control, _int_in, _int_out,
respectively are 5, 16 and 7 shorts and 2 and 1 longs for
_addrin and addrout */
#define GLOBMAX 15
#define _control (&_contrl[0])
#define _int_in (&_intin[0])
#define _int_out (&_intout[0])
#define _addrin ((void **)(&_ptsin[0]))
#define _addrout ((void **)(&_ptsout[0]))
/* code up _control[] elements for __aes__() calls
* (evaluated at compile time, no runtime overhead)
* see common.c for encoding semantics.
*/
#define AES_CONTROL_ENCODE(A, B, C, D) (unsigned long) \
( \
(((unsigned long)A) << 24) | \
(((unsigned long)B) << 16) | \
(((unsigned long)C) << 8) | \
(((unsigned long)D) ) \
)
/*
* code up _contrl[] elements for __vdi__() calls
* (note with gcc hardly any runtime overhead, most of the uses
* end up getting evaluated at compile time)
* see common.c for encoding semantics.
*/
/*
* WARNING!! - this coding will accomodate vdi calls with
* opcodes (A) in range 0 - 255
* _ptsin size (B) up to 2047 = 0x7ff nodes (up to 1024 currently used)
* _intin size (C) up to 255 = 0xff shorts
* and subcodes (D) in range 0 - 31
* Any function for which parameters "stick out" has to be coded
* without using this macro. Failure to comply may cause very
* funny results.
*/
#define VDI_CONTRL_ENCODE(A, B, C, D) (unsigned long) \
( \
(((unsigned long)D) << 27) | \
(((unsigned long)B) << 16) | \
(((unsigned long)C) << 8) | \
(((unsigned long)A) ) \
)
/* binding arrays */
/* takes care of ptsin containing upto PTSINMAX vertices
* (tt and fsmgdos require this value to be not smaller than 1024)
*/
#ifndef __IN_COMMON_C__
extern short _intin[INTINMAX], _intout[INTOUTMAX];
extern short _ptsin[2 * PTSINMAX], _ptsout[2 * PTSOUTMAX];
extern unsigned short _contrl[CNTRLMAX], _global[GLOBMAX];
extern int gl_apid, gl_ap_version;
extern void *_vdiparams[];
#endif
/* aes trap interface func */
int __aes__(unsigned long coded_control);
/* vdi trap interface func */
void __vdi__(unsigned long coded_contrl, int handle);
void vdi(void);
#endif /* _COMMON_H */