OSDN Git Service

OK, folks, here is the pgindent output.
[pg-rex/syncrep.git] / src / include / access / strat.h
1 /*-------------------------------------------------------------------------
2  *
3  * strat.h--
4  *        index strategy type definitions
5  *        (separated out from original istrat.h to avoid circular refs)
6  *
7  *
8  * Copyright (c) 1994, Regents of the University of California
9  *
10  * $Id: strat.h,v 1.11 1998/09/01 04:34:30 momjian Exp $
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef STRAT_H
15 #define STRAT_H
16
17 #include <access/skey.h>
18
19 typedef uint16 StrategyNumber;
20
21 #define InvalidStrategy 0
22
23 typedef struct StrategyTransformMapData
24 {
25         StrategyNumber strategy[1]; /* VARIABLE LENGTH ARRAY */
26 } StrategyTransformMapData;             /* VARIABLE LENGTH
27
28                                                                  *
29                                                                  *
30                                                                  *
31                                                                  *
32                                                                  *
33                                                                  *
34                                                                  * STRUCTURE */
35
36 typedef StrategyTransformMapData *StrategyTransformMap;
37
38 typedef struct StrategyOperatorData
39 {
40         StrategyNumber strategy;
41         bits16          flags;                  /* scan qualification flags h/skey.h */
42 } StrategyOperatorData;
43
44 typedef StrategyOperatorData *StrategyOperator;
45
46 typedef struct StrategyTermData
47 {                                                               /* conjunctive term */
48         uint16          degree;
49         StrategyOperatorData operatorData[1];           /* VARIABLE LENGTH */
50 } StrategyTermData;                             /* VARIABLE LENGTH STRUCTURE */
51
52 typedef StrategyTermData *StrategyTerm;
53
54 typedef struct StrategyExpressionData
55 {                                                               /* disjunctive normal form */
56         StrategyTerm term[1];           /* VARIABLE LENGTH ARRAY */
57 } StrategyExpressionData;               /* VARIABLE LENGTH STRUCTURE */
58
59 typedef StrategyExpressionData *StrategyExpression;
60
61 typedef struct StrategyEvaluationData
62 {
63         StrategyNumber maxStrategy;
64         StrategyTransformMap negateTransform;
65         StrategyTransformMap commuteTransform;
66         StrategyTransformMap negateCommuteTransform;
67         StrategyExpression expression[12];      /* XXX VARIABLE LENGTH */
68 } StrategyEvaluationData;               /* VARIABLE LENGTH STRUCTURE */
69
70 typedef StrategyEvaluationData *StrategyEvaluation;
71
72 /*
73  * StrategyTransformMapIsValid --
74  *              Returns true iff strategy transformation map is valid.
75  */
76 #define StrategyTransformMapIsValid(transform) PointerIsValid(transform)
77
78
79 #define AMStrategies(foo)               (foo)
80
81 typedef struct StrategyMapData
82 {
83         ScanKeyData entry[1];           /* VARIABLE LENGTH ARRAY */
84 } StrategyMapData;                              /* VARIABLE LENGTH STRUCTURE */
85
86 typedef StrategyMapData *StrategyMap;
87
88 typedef struct IndexStrategyData
89 {
90         StrategyMapData strategyMapData[1]; /* VARIABLE LENGTH ARRAY */
91 } IndexStrategyData;                    /* VARIABLE LENGTH STRUCTURE */
92
93 typedef IndexStrategyData *IndexStrategy;
94
95 #endif   /* STRAT_H */