Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libast/include/recfmt.h
1810 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1985-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* David Korn <[email protected]> *
19
* Phong Vo <[email protected]> *
20
* *
21
***********************************************************************/
22
#pragma prototyped
23
/*
24
* Glenn Fowler
25
* AT&T Research
26
*
27
* record format interface
28
*/
29
30
#ifndef _RECFMT_H
31
#define _RECFMT_H 1
32
33
#include <ast.h>
34
35
typedef uint32_t Recfmt_t;
36
37
#define REC_delimited 0
38
#define REC_fixed 1
39
#define REC_variable 2
40
#define REC_method 14
41
#define REC_none 15
42
43
#define REC_M_path 0
44
#define REC_M_data 1
45
46
#define RECTYPE(f) (((f)>>28)&((1<<4)-1))
47
48
#define REC_D_TYPE(d) ((REC_delimited<<28)|((d)&((1<<8)-1)))
49
#define REC_D_DELIMITER(f) ((f)&((1<<8)-1))
50
51
#define REC_F_TYPE(s) ((REC_fixed<<28)|((s)&((1<<28)-1)))
52
#define REC_F_SIZE(f) ((f)&((1<<28)-1))
53
54
#define REC_U_TYPE(t,a) (((t)<<28)|((a)&((1<<28)-1)))
55
#define REC_U_ATTRIBUTES(f) ((f)&~((1<<28)-1))
56
57
#define REC_V_TYPE(h,o,z,l,i) ((REC_variable<<28)|((h)<<23)|((o)<<19)|(((z)-1)<<18)|((l)<<17)|((i)<<16))
58
#define REC_V_RECORD(f,s) (((f)&(((1<<16)-1)<<16))|(s))
59
#define REC_V_HEADER(f) (((f)>>23)&((1<<5)-1))
60
#define REC_V_OFFSET(f) (((f)>>19)&((1<<4)-1))
61
#define REC_V_LENGTH(f) ((((f)>>18)&1)+1)
62
#define REC_V_LITTLE(f) (((f)>>17)&1)
63
#define REC_V_INCLUSIVE(f) (((f)>>16)&1)
64
#define REC_V_SIZE(f) ((f)&((1<<16)-1))
65
#define REC_V_ATTRIBUTES(f) ((f)&~((1<<16)-1))
66
67
#define REC_M_TYPE(i) ((REC_method<<28)|(i))
68
#define REC_M_INDEX(f) ((f)&((1<<28)-1))
69
70
#define REC_N_TYPE() 0xffffffff
71
72
#if _BLD_ast && defined(__EXPORT__)
73
#define extern __EXPORT__
74
#endif
75
76
extern char* fmtrec(Recfmt_t, int);
77
extern Recfmt_t recfmt(const void*, size_t, off_t);
78
extern Recfmt_t recstr(const char*, char**);
79
extern ssize_t reclen(Recfmt_t, const void*, size_t);
80
81
#undef extern
82
83
#endif
84
85