Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/librecsort/rskeyhdr.h
1808 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1996-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
* Phong Vo <[email protected]> *
18
* Glenn Fowler <[email protected]> *
19
* *
20
***********************************************************************/
21
#pragma prototyped
22
23
/*
24
* rskey internal interface
25
*/
26
27
#ifndef _RSKEYHDR_H
28
#define _RSKEYHDR_H 1
29
30
#if _PACKAGE_ast
31
#include <ast.h>
32
#endif
33
34
#include <ctype.h>
35
#include <ccode.h>
36
37
#ifndef UCHAR_MAX
38
#define UCHAR_MAX ((unsigned char)(~0))
39
#endif
40
#ifndef SHRT_MAX
41
#define SHRT_MAX ((short)(~((unsigned short)0)) >> 1)
42
#endif
43
#ifndef INT_MAX
44
#define INT_MAX ((int)(~((unsigned int)0)) >> 1)
45
#endif
46
#ifndef LONG_MAX
47
#define LONG_MAX ((long)(~((unsigned long)0)) >> 1)
48
#endif
49
50
#define INSIZE PROCSIZE /* default insize */
51
#define OUTSIZE (64*1024) /* default outsize */
52
#define PROCSIZE (4*1024*1024) /* default procsize */
53
54
#define MAXFIELD INT_MAX
55
56
#define blank(c) ((c)==' '||(c)=='\t')
57
58
typedef struct Position_s /* field position */
59
{
60
int field; /* field offset */
61
int index; /* char offset */
62
} Position_t;
63
64
#define _RSKEYFIELD_PRIVATE_ \
65
unsigned char aflag; /* accumulate dups here */ \
66
unsigned char bflag; /* skip initial blanks */ \
67
unsigned char eflag; /* skip trailing blanks */ \
68
unsigned char standard; /* 1:-k 0:+pos-pos */ \
69
int binary; /* binary data */ \
70
int code; /* coder ccode or conversion */ \
71
int index; /* field definition index */ \
72
int freetrans; /* free trans on close */ \
73
unsigned char* trans; /* translation table */ \
74
unsigned char* keep; /* deletion table */ \
75
void* data; /* coder specific data */ \
76
Position_t begin; /* key begins here */ \
77
Position_t end; /* and ends here */
78
79
typedef struct
80
{
81
unsigned char ident[UCHAR_MAX + 1]; /* identity transform */
82
unsigned char fold[UCHAR_MAX + 1]; /* fold case */
83
84
unsigned char all[UCHAR_MAX + 1]; /* all significant */
85
unsigned char dict[UCHAR_MAX + 1]; /* dictionary order */
86
unsigned char print[UCHAR_MAX + 1]; /* printable significant*/
87
} State_t;
88
89
#define _RSKEY_PRIVATE_ \
90
State_t* state; /* readonly state */ \
91
Rsdisc_t* disctail; /* rslib() disc stack tail */ \
92
struct \
93
{ \
94
Rskeyfield_t global; /* global field info */ \
95
Rskeyfield_t* prev; /* previous field list tail */ \
96
int index; /* last field index */ \
97
int maxfield; /* max field position */ \
98
unsigned char** positions; /* field start positions */ \
99
} field; /* key field info */ \
100
struct \
101
{ \
102
Rskeyfield_t* head; /* accumulate list head */ \
103
Rskeyfield_t* tail; /* accumulate list tail */ \
104
} accumulate; /* accumulate field info */ \
105
unsigned char* xfrmbuf; /* strxfrm buffer */ \
106
unsigned int xfrmsiz; /* strxfrm buffer size */ \
107
unsigned long shuffle; /* shuffle seed */ \
108
unsigned char coded; /* coded keys specified */
109
110
#include "rshdr.h"
111
112
#if !__STD_C && !defined(const)
113
#define const
114
#endif
115
116
#if !_PACKAGE_ast
117
#if __STD_C
118
#include <string.h>
119
#endif
120
#define elementsof(x) (sizeof(x)/sizeof(x[0]))
121
#define roundof(x,y) (((x)+(y)-1)&~((y)-1))
122
#define streq(a,b) (*(a)==*(b)&&!strcmp(a,b))
123
#endif
124
125
#endif
126
127