|
GnuCash
2.6.99
|
Files | |
| file | qofchoice.h |
| Linking one entity to other entities of many possible types. | |
Macros | |
| #define | QOF_MOD_CHOICE "qof.choice" |
| gboolean | qof_object_is_choice (QofIdTypeConst type) |
| Does this object contain a choice parameter? More... | |
| gboolean | qof_choice_create (char *type) |
| Set an object as using QOF_TYPE_CHOICE. | |
| gboolean | qof_choice_add_class (const char *choice, char *add, char *param_name) |
| Add the choices for this parameter to the object. More... | |
| GList * | qof_object_get_choices (QofIdType type, QofParam *param) |
| Return the list of all object types usable with this parameter. More... | |
| gboolean | qof_choice_check (const char *choice_obj, const char *param_name, const char *choice) |
| Is the choice valid for this param_name? More... | |
| #define | QOF_TYPE_CHOICE "choice" |
| Identify an object as containing a choice. More... | |
Objects can be linked together one-to-one by simply using the name of the related object as the parameter type in the QofClass parameter list.
{ FOO_PARAM, BAR_ID, (QofAccessFunc)qofFooGetBar, (QofSetterFunc)qofFooSetBar },
This is limited as each FOO entity can contain only one reference to a single BAR entity per parameter. Also, this parameter cannot be used to link to a similar object, OBJ. This requires "one to many" links.
There are two types of one-to-many links in QOF.
Currently, there is no explicit way to support many-to-many links but existing methods can be combined to give approximately the same results.
A QOF_TYPE_CHOICE object is like a C++ template. QOF_TYPE_CHOICE doesn't really exist by itself:
QOF_TYPE_CHOICE<QOF_X, QOF_Y, QOF_Z>
It holds a single entity of type X, Y, or Z for the purposes of QOF. For querying the object it queries as if it's an X, Y, or Z.
Each choice type has it's own definition of the allowable objects - each of which need to be registered as normal. Objects can declare themselves to be one option of a particular choice. There is no requirement for any object to be either a choice or an option for a choice object.
| #define QOF_TYPE_CHOICE "choice" |
| gboolean qof_choice_add_class | ( | const char * | choice, |
| char * | add, | ||
| char * | param_name | ||
| ) |
Add the choices for this parameter to the object.
| choice | The choice object. |
| add | The object to be added as an option. |
| param_name | The parameter that will be used to get or set options. |
| gboolean qof_choice_check | ( | const char * | choice_obj, |
| const char * | param_name, | ||
| const char * | choice | ||
| ) |
Is the choice valid for this param_name?
| choice_obj | The object containing the QOF_TYPE_CHOICE parameter. |
| param_name | The name of a QOF_TYPE_CHOICE parameter in this object. |
| choice | The QofIdType to look for in the list of choices. |
Return the list of all object types usable with this parameter.
| type | The choice object type. |
| param | The name of the parameter that will be used to get or set options. |
| gboolean qof_object_is_choice | ( | QofIdTypeConst | type | ) |
Does this object contain a choice parameter?
Returns TRUE if any parameter in the object definition uses a choice of elements, whether or not those parameters contain any data.
| type | Type of object/entity. |
1.8.6