Source:SLASH'EM 0.0.7E7F2/nhxdr.h

From NetHackWiki
Jump to navigation Jump to search

Below is the full text to nhxdr.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/nhxdr.h#line123]], for example.

The latest source code for vanilla NetHack is at Source code.


The NetHack General Public License applies to screenshots, source code and other content from NetHack.

This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.

1.    /* $Id: nhxdr.h,v 1.7 2003/10/25 18:06:00 j_ali Exp $ */
2.    /* Copyright (c) Slash'EM Development Team 2001-2003 */
3.    /* NetHack may be freely redistributed.  See license for details. */
4.    
5.    #ifndef NHXDR_H
6.    #define NHXDR_H
7.    
8.    #ifndef FALSE
9.    #define FALSE 0
10.   #endif
11.   
12.   #ifndef TRUE
13.   #define TRUE 1
14.   #endif
15.   
16.   #ifndef MIN
17.   #define MIN(a, b)	((a) <= (b) ? (a) : (b))
18.   #endif
19.   
20.   #ifndef MAX
21.   #define MAX(a, b)	((a) >= (b) ? (a) : (b))
22.   #endif
23.   
24.   #ifndef NDECL
25.   /*
26.    * Assume an ANSI X3.159 compatible compiler
27.    */
28.   #define NDECL(f)		(f)(void)
29.   #define FDECL(f, p)		(f)p
30.   #define VDECL(f, p)		(f)p
31.   #define CHAR_P			int
32.   #define SHORT_P			int
33.   #define BOOLEAN_P		int
34.   #endif
35.   
36.   #define NHEXT_XDR_RNDUP(x)	(((x) - 1 | 3) + 1)
37.   
38.   typedef enum { nhext_xdr_false = 0, nhext_xdr_true = 1 } nhext_xdr_bool_t;
39.   
40.   enum nhext_xdr_op {
41.       NHEXT_XDR_ENCODE, NHEXT_XDR_DECODE, NHEXT_XDR_FREE, NHEXT_XDR_COUNT
42.   };
43.   
44.   typedef struct nhext_xdr {
45.       void *x_data;
46.       enum nhext_xdr_op x_op;
47.       nhext_xdr_bool_t (*x_write)(struct nhext_xdr *xdrs, const void *addr,
48.         int size);
49.       nhext_xdr_bool_t (*x_read)(struct nhext_xdr *xdrs, void *addr, int size);
50.       void (*x_destroy)(struct nhext_xdr *xdrs);
51.       unsigned int x_pos, x_size;
52.   } NhExtXdr;
53.   
54.   typedef struct NhExtIO_ NhExtIO;
55.   typedef int (*nhext_io_func)(void *handle, void *buf, unsigned int len);
56.   typedef struct NhExtNB_ NhExtNB;
57.   
58.   #define E extern
59.   
60.   E unsigned int FDECL(nhext_xdr_getpos, (NhExtXdr *));
61.   E nhext_xdr_bool_t FDECL(nhext_xdr_setpos, (NhExtXdr *, unsigned int));
62.   E void FDECL(nhext_xdr_free, (nhext_xdr_bool_t (*)(), char *));
63.   E void FDECL(nhext_xdrmem_create, (NhExtXdr *, char *, unsigned int,
64.   			enum nhext_xdr_op));
65.   E void FDECL(nhext_xdrio_create, (NhExtXdr *, NhExtIO *, enum nhext_xdr_op));
66.   
67.   #define nhext_xdr_destroy(xdrs)	(*(xdrs)->x_destroy)(xdrs)
68.   
69.   E nhext_xdr_bool_t FDECL(nhext_xdr_long, (NhExtXdr *, long *));
70.   E nhext_xdr_bool_t FDECL(nhext_xdr_u_long, (NhExtXdr *, unsigned long *));
71.   E nhext_xdr_bool_t FDECL(nhext_xdr_short, (NhExtXdr *, short *));
72.   E nhext_xdr_bool_t FDECL(nhext_xdr_u_short, (NhExtXdr *, unsigned short *));
73.   E nhext_xdr_bool_t FDECL(nhext_xdr_int, (NhExtXdr *, int *));
74.   E nhext_xdr_bool_t FDECL(nhext_xdr_u_int, (NhExtXdr *, unsigned int *));
75.   E nhext_xdr_bool_t FDECL(nhext_xdr_char, (NhExtXdr *, char *));
76.   E nhext_xdr_bool_t FDECL(nhext_xdr_u_char, (NhExtXdr *, unsigned char *));
77.   E nhext_xdr_bool_t FDECL(nhext_xdr_enum, (NhExtXdr *, int *));
78.   E nhext_xdr_bool_t FDECL(nhext_xdr_bool, (NhExtXdr *, nhext_xdr_bool_t *));
79.   E nhext_xdr_bool_t FDECL(nhext_xdr_string, (NhExtXdr *, char **, unsigned int));
80.   E nhext_xdr_bool_t FDECL(nhext_xdr_bytes, (NhExtXdr *, char **, unsigned int *,
81.     unsigned int));
82.   E nhext_xdr_bool_t FDECL(nhext_xdr_wrapstring, (NhExtXdr *, char **));
83.   E nhext_xdr_bool_t FDECL(nhext_xdr_vector, (NhExtXdr *, char *, unsigned int,
84.     unsigned int, nhext_xdr_bool_t (*)()));
85.   E nhext_xdr_bool_t FDECL(nhext_xdr_array, (NhExtXdr *, char **, unsigned int *,
86.     unsigned int, unsigned int, nhext_xdr_bool_t (*)()));
87.   
88.   #define NHEXT_IO_RDONLY		1
89.   #define NHEXT_IO_WRONLY		2
90.   #define NHEXT_IO_NBLOCK		4
91.   #define NHEXT_IO_NOAUTOFILL	8
92.   #define NHEXT_IO_LINEBUF	16	/* Only honoured by text based calls */
93.   #define NHEXT_IO_SIMPLEBUFFER	32
94.   #define NHEXT_IO_PENDING	64
95.   
96.   #if __GNUC__ >= 3 || __GNUC__ == 2 && __GNUC_MINOR__ >= 5
97.   #define NHEXT__PRINTF(p_fmt, p_arg0) \
98.   	__attribute__((format(printf, p_fmt, p_arg0)))
99.   #else
100.  #define NHEXT__PRINTF(p_fmt, p_arg0)
101.  #endif
102.  
103.  E NhExtIO *FDECL(nhext_io_open, (nhext_io_func, void *, unsigned int));
104.  E int FDECL(nhext_io_close, (NhExtIO *));
105.  E unsigned int FDECL(nhext_io_getmode, (NhExtIO *));
106.  E void FDECL(nhext_io_setmode, (NhExtIO *, unsigned int));
107.  E void FDECL(nhext_io_setautofill_limit, (NhExtIO *, unsigned int));
108.  E void FDECL(nhext_io_setnbfunc, (NhExtIO *, nhext_io_func));
109.  E int FDECL(nhext_io_filbuf, (NhExtIO *, int));
110.  E int FDECL(nhext_io_getc, (NhExtIO *));
111.  E int FDECL(nhext_io_read, (NhExtIO *, char *, int));
112.  E char *FDECL(nhext_io_getpacket, (NhExtIO *, int *));
113.  E int FDECL(nhext_io_willblock, (NhExtIO *));
114.  E int FDECL(nhext_io_flush, (NhExtIO *));
115.  E int FDECL(nhext_io_fputc, (int, NhExtIO *));
116.  E int FDECL(nhext_io_write, (NhExtIO *, char *, int));
117.  E int FDECL(nhext_io_writet, (NhExtIO *, char *, int));
118.  #ifdef _STDARG_H
119.  E int FDECL(nhext_io_vprintf, (NhExtIO *, char *, va_list));
120.  #endif
121.  E int FDECL(nhext_io_printf, (NhExtIO *, char *, ...)) NHEXT__PRINTF(2, 3);
122.  
123.  E NhExtNB *FDECL(nhext_nb_open, (nhext_io_func, void *));
124.  E int FDECL(nhext_nb_close, (NhExtNB *));
125.  E int FDECL(nhext_nb_read, (NhExtNB *, char *, int, int));
126.  
127.  #endif /* NHXDR_H */