OEConfigure¶
bool OEConfigure(OEInterface &itf, OEPlatform::oeistream &istr)
bool OEConfigure(OEInterface &itf, const unsigned char *dataptr)
Provides a mechanism for adding parameters and child OEInterface’s to an OEInterface object, itf, by parsing a specifically formatted text file. The text file must be converted into a null terminated character array at compile time, and passed as the configdata to this function. The format of the config file is a series of parameter or category records.
When OEConfigure encounters a parameter record, it adds an
OEParameter object to the OEInterface.
A parameter record takes the following form.
!PARAMETER <name> [order priority]
  !TYPE <type>
  !ALIAS <alias>
  !BRIEF <brief description>
  !DEFAULT <default value>
  !REQUIRED <true or false>
  !VISIBILITY <visibility>
  !KEYLESS <keyless setting>
  !LEGAL_VALUE <value>
  !ILLEGAL_VALUE <value>
  !LEGAL_RANGE <hi value> <low value>
  !ILLEGAL_RANGE <hi_value> <low_value>
  !DETAIL
    <detailed description line 1>
    <detailed description line 2>
    <detailed description line 3>
    .
    .
    .
!END
The order of individual fields appear within the parameter record
is unimportant. Each parameter record must begin with !PARAMETER
and end with !END, and each record must have a !TYPE field. All
other fields within the parameter record are optional. So the
simplest possible parameter record is.
!PARAMETER <name> [order priority]
  !TYPE <type>
!END
When OEConfigure parses this record it does the
equivalent of the
following C++ code.
OEParameter* param = itf.AddParameter(<type>);
param->SetName(<name>);
param->SetOrderPriority([order priority]);
If [order priority] isn’t specified, zero is assumed.
Legitimate values of <type> are
- string
 Creates a
std::stringparameter- double
 Creates a double parameter
- float
 Creates a float parameter
- bool
 Creates a bool parameter
- int
 Creates an int parameter
- file
 Creates a oeisstream parameter
- param_file
 Creates a oeisstream parameter that is recognized as a text file holding parameter settings, by
OEParseCommandLine.
The remaining fields in a parameter record are optional and do the following:
- !ALIAS
 alias
param->AddAlias(alias);
This field can appear multiple times.
- !BRIEF
 brief description
param->SetBrief(brief description);
This field can only appear once.
- !DEFAULT
 default value
param->SetStringDefault(default value);
This field can only appear once.
- !REQUIRED
 true or false
param->SetRequired(true or false);
This field can only appear once.
- !VISIBILITY
 visibility
Visibility must be either simple, normal or hidden This causes either:
param->SetVisibility(OEParamVisibility::Simple); param->SetVisibility(OEParamVisibility::Normal); param->SetVisibility(OEParamVisibility::Hidden);
to be called respectively. This field can only appear once in a parameter record.
- !KEYLESS
 keyless setting
param->SetKeyless(keyless setting);
The keyless setting must be a non-negative integer. This field can only appear once in a parameter record.
- !LEGAL_VALUE
 value
param->AddLegalValue(value);
Parameters of type bool cannot have a
!LEGAL_VALUEfield. This field can appear multiple times in a parameter record.- !ILLEGAL_VALUE
 value
param->AddIllegalValue(value);
Parameters of type bool cannot have an
!ILLEGAL_VALUEfield. This field can appear multiple times in a parameter record.- !LEGAL_RANGE
 high value low value
param->AddLegalRange(hi value, low value);
Parameters of type bool, string, file and file_param cannot have a
!LEGAL_RANGEfield. This field can appear multiple times in a parameter record.- !ILLEGAL_RANGE
 high value low value
param->AddIllegalRange(hi value, low value);
Parameters of type bool, string, file and file_param cannot have an
!ILLEGAL_RANGEfield. This field can appear multiple times in a parameter record.- !DETAIL
 multi-line
All the lines following the
!DETAILkeyword up until a line beginning with another parameter record keyword are added to the parameter.This field can only appear once.
!CATEGORY
Category record format
When
OEConfigureencounters a category record it adds a child OEInterface object to the current OEInterface. A category record takes the following form:!CATEGORY <name> [order priority] !DETAIL <detailed description line 1> [detailed description line 2] [detailed description line 3] . . . !BRIEF <brief description> [Parameter Record] [Category Record] !ENDThe order individual fields appear within the category record is unimportant. All fields within the category record are optional. So the following is the minimal category allowed:
!CATEGORY <name> [order priority] !ENDWhen parsed by
OEConfigureis equivalent to:OEInterface* child_itf = itf.AddInterface(); child_itf->SetName(<name>); child_itf->SetOrderPriority([order priority]);If [order priority] is not specified 0 is assumed.
Fields within the category record have the following meaning:
- !DETAIL
 multi-line
All the lines following the
!DETAILkeyword up until a line beginning with another category record keyword are added to the parameter.This field can appear once in a category record.
- !BRIEF
 brief description
param->SetBrief(brief description);This field can only appear once.
- parameter record
 Parameter records can appear inside category records. Their format is the same as those outside the category record, however the parameter will be added to the child interface. A category record can hold any number of parameter records.
- category record
 Category records can be nested within category records, thus creating a child OEInterface of a child OEInterface. There is no limit to the depth of nesting, and any number of nested category records can appear within a category record.