CONFIG = VL_OVERRIDE(CONFIG, UPDATE) copies recursively the fileds of the structure UPDATE to the corresponding fields of the struture CONFIG.

Usually CONFIG is interpreted as a list of paramters with their default values and UPDATE as a list of new paramete values.

VL_OVERRIDE(..., 'Warn') prints a warning message whenever: (i) UPDATE has a field not found in CONFIG, or (ii) non-leaf values of CONFIG are overwritten.

VL_OVERRIDE(..., 'Skip') skips fields of UPDATE that are not found in CONFIG instead of copying them.

VL_OVERRIDE(..., 'CaseI') matches field names in a case-insensitive manner.

Remark

  Fields are copied at the deepest possible level. For instance, if CONFIG has fields A.B.C1=1 and A.B.C2=2, and if UPDATE is the structure A.B.C1=3, then VL_OVERRIDE() returns a strucuture with fields A.B.C1=3, A.B.C2=2. By contrast, if UPDATE is the structure A.B=4, then the field A.B is copied, and VL_OVERRIDE() returns the structure A.B=4 (specifying 'Warn' would warn about the fact that the substructure B.C1, B.C2 is being deleted).

Remark

  Two fields are matched if they correspond exactly. Specifically, two fileds A(IA).(FA) and B(IA).FB of two struct arrays A and B match if, and only if, (i) A and B have the same dimensions, (ii) IA == IB, and (iii) FA == FB.

See also: VL_ARGPARSE(), VL_HELP().