2 /* : : generated by proto : : */
3 /***********************************************************************
5 * This software is part of the ast package *
6 * Copyright (c) 1985-2010 AT&T Intellectual Property *
7 * and is licensed under the *
8 * Common Public License, Version 1.0 *
9 * by AT&T Intellectual Property *
11 * A copy of the License is available at *
12 * http://www.opensource.org/licenses/cpl1.0.txt *
13 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
15 * Information and Software Systems Research *
19 * Glenn Fowler <gsf@research.att.com> *
20 * David Korn <dgk@research.att.com> *
21 * Phong Vo <kpv@research.att.com> *
23 ***********************************************************************/
29 * record format interface
33 #if !defined(__PROTO__)
34 #include <prototyped.h>
36 #if !defined(__LINKAGE__)
37 #define __LINKAGE__ /* 2004-08-11 transition */
44 typedef uint32_t Recfmt_t
;
46 #define REC_delimited 0
48 #define REC_variable 2
55 #define RECTYPE(f) (((f)>>28)&((1<<4)-1))
57 #define REC_D_TYPE(d) ((REC_delimited<<28)|((d)&((1<<8)-1)))
58 #define REC_D_DELIMITER(f) ((f)&((1<<8)-1))
60 #define REC_F_TYPE(s) ((REC_fixed<<28)|((s)&((1<<28)-1)))
61 #define REC_F_SIZE(f) ((f)&((1<<28)-1))
63 #define REC_U_TYPE(t,a) (((t)<<28)|((a)&((1<<28)-1)))
64 #define REC_U_ATTRIBUTES(f) ((f)&~((1<<28)-1))
66 #define REC_V_TYPE(h,o,z,l,i) ((REC_variable<<28)|((h)<<23)|((o)<<19)|(((z)-1)<<18)|((l)<<17)|((i)<<16))
67 #define REC_V_RECORD(f,s) (((f)&(((1<<16)-1)<<16))|(s))
68 #define REC_V_HEADER(f) (((f)>>23)&((1<<5)-1))
69 #define REC_V_OFFSET(f) (((f)>>19)&((1<<4)-1))
70 #define REC_V_LENGTH(f) ((((f)>>18)&1)+1)
71 #define REC_V_LITTLE(f) (((f)>>17)&1)
72 #define REC_V_INCLUSIVE(f) (((f)>>16)&1)
73 #define REC_V_SIZE(f) ((f)&((1<<16)-1))
74 #define REC_V_ATTRIBUTES(f) ((f)&~((1<<16)-1))
76 #define REC_M_TYPE(i) ((REC_method<<28)|(i))
77 #define REC_M_INDEX(f) ((f)&((1<<28)-1))
79 #define REC_N_TYPE() 0xffffffff
81 #if _BLD_ast && defined(__EXPORT__)
83 #define __MANGLE__ __LINKAGE__ __EXPORT__
86 extern __MANGLE__
char* fmtrec
__PROTO__((Recfmt_t
, int));
87 extern __MANGLE__ Recfmt_t recfmt
__PROTO__((const __V_
*, size_t, off_t
));
88 extern __MANGLE__ Recfmt_t recstr
__PROTO__((const char*, char**));
89 extern __MANGLE__ ssize_t reclen
__PROTO__((Recfmt_t
, const __V_
*, size_t));
92 #define __MANGLE__ __LINKAGE__