Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/librecsort/rskeydump.c
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 dump
25
*/
26
27
#include "rskeyhdr.h"
28
29
static void
30
#if __STD_C
31
dump(register Rskey_t* kp, Sfio_t* sp, register Rskeyfield_t* fp, const char* type)
32
#else
33
dump(kp, sp, fp, type)
34
register Rskey_t* kp;
35
Sfio_t* sp;
36
register Rskeyfield_t* fp;
37
char* type;
38
#endif
39
{
40
sfprintf(sp, "%s[%d]\n", type, fp->index);
41
sfprintf(sp, "\tbegin field = %d\n", fp->begin.field);
42
sfprintf(sp, "\t begin char = %d\n", fp->begin.index);
43
sfprintf(sp, "\t end field = %d\n", fp->end.field);
44
sfprintf(sp, "\t end char = %d\n", fp->end.index);
45
sfprintf(sp, "\t ccode = %d\n", fp->code);
46
sfprintf(sp, "\t coder = %c\n", fp->flag ? fp->flag : '?');
47
sfprintf(sp, "\t keep = %s\n", fp->keep == kp->state->all ? "all" : fp->keep == kp->state->print ? "print" : fp->keep == kp->state->dict ? "dict" : fp->keep ? "UNKNOWN" : "all");
48
sfprintf(sp, "\t trans = %s\n", fp->trans == kp->state->ident ? "ident" : fp->trans == kp->state->fold ? "fold" : fp->trans ? "UNKNOWN" : "ident");
49
sfprintf(sp, "\t bflag = %d\n", fp->bflag);
50
sfprintf(sp, "\t eflag = %d\n", fp->eflag);
51
sfprintf(sp, "\t rflag = %d\n", fp->rflag);
52
sfprintf(sp, "\t style = %s\n", fp->standard ? "standard" : "obsolete");
53
}
54
55
/*
56
* dump the sort options and fields
57
*/
58
59
void
60
#if __STD_C
61
rskeydump(register Rskey_t* kp, register Sfio_t* sp)
62
#else
63
rskeydump(kp, sp)
64
register Rskey_t* kp;
65
register Sfio_t* sp;
66
#endif
67
{
68
register Rskeyfield_t* fp;
69
70
sfprintf(sp, "state\n");
71
sfprintf(sp, "\tmethod=%s\n", kp->meth->name);
72
sfprintf(sp, "\tinsize=%ld outsize=%ld\n", kp->insize, kp->outsize);
73
sfprintf(sp, "\talignsize=%ld procsize=%ld recsize=%ld\n", kp->alignsize, kp->procsize, kp->recsize);
74
sfprintf(sp, "\tmerge=%d reverse=%d stable=%d uniq=%d ignore=%d verbose=%d\n", kp->merge, !!(kp->type & RS_REVERSE), !(kp->type & RS_DATA), !!(kp->type & RS_UNIQ), !!(kp->type & RS_IGNORE), kp->verbose);
75
sfprintf(sp, "\ttab='%s' keys=%s maxfield=%d", kp->tab[0] ? (char*)kp->tab : " ", kp->coded ? "coded" : "", kp->field.maxfield);
76
if (kp->fixed)
77
sfprintf(sp, " fixed=%d", kp->fixed);
78
if (kp->nproc > 1)
79
sfprintf(sp, " nproc=%d", kp->nproc);
80
sfprintf(sp, "\n");
81
sfprintf(sp, "\trecord format %s data%s 0x%08x key%s %d\n", fmtrec(kp->disc->data, 0), (kp->disc->type & RS_DSAMELEN) ? " DSAMELEN" : "", kp->disc->data, (kp->disc->type & RS_KSAMELEN) ? " KSAMELEN" : "", kp->disc->keylen);
82
for (fp = &kp->field.global; fp; fp = fp->next)
83
dump(kp, sp, fp, "field");
84
for (fp = kp->accumulate.head; fp; fp = fp->next)
85
dump(kp, sp, fp, "accumulate");
86
}
87
88