Skip to content

Commit b272def

Browse files
committed
docs: update example for array special member
1 parent 7938b56 commit b272def

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

docs/config_file.md

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,22 @@ Each object of this array has 3 fields:
6464
This must be name of type without any qualifiers, like 'const' or 'volatile'.
6565
- `memberName` - name of member of this type.
6666
- `lengthExpression` - expression to be evaluated to get array length.
67-
It is not just member name that contain array length - this is
68-
expression that getting evaluated.
69-
It evaluates using concatenation like `((typeName)variable)->${lengthExpression}`.
70-
I.e. if you add `+ 1` - it will be applied.
67+
68+
Length expression can be in 2 forms:
69+
70+
1. Member name concatenated to parent object.
71+
72+
In such case `lengthExpression` is just *concatenated* to parent object as
73+
`parent->lengthExpression`. As it is concatenated, then you can add some
74+
other expressions to it, i.e. `some_member + 1`.
75+
2. Generic expression
76+
77+
`lengthExpression` represents any expression which must be evaluated to
78+
some number (integer). This expression starts with `!` to distinguish between
79+
this form and member name form.
80+
81+
Note: in both cases you can refer to parent object using `{}`, i.e. `!{}->member1 + {}->member2`
82+
or the same in member form `member1 + {}->member2`.
7183
7284
Examples:
7385
@@ -87,9 +99,9 @@ Examples:
8799
"lengthExpression": "nreaders + 1"
88100
},
89101
{
90-
"typeName": "EPQState",
91-
"memberName": "relsubs_slot",
92-
"lengthExpression": "parentestate->es_range_table_size"
102+
"typeName": "RelOptInfo",
103+
"memberName": "attr_needed",
104+
"lengthExpression": "!{}->max_attr - {}->min_attr + 1"
93105
}
94106
]
95107
}

0 commit comments

Comments
 (0)