# mco_dict_ifield
RT

> Return an index field descriptor.

### Prototype

        MCO_RET mco_dict_ifield(	/*IN*/ mco_metadict_header_t * metadict,
                      /*IN*/ unsigned short dict_no,
                      /*IN*/ unsigned short struct_no,
                      /*IN*/ unsigned short index_no,
                      /*IN*/ unsigned short ifield_no,
                      /*OUT*/ mco_dict_ifield_info_t * ifield_info );

### Arguments

metadict | The address of an initialized mco_metadict_header_t structure
dict_no | The number of the dictionary (must be between 0 and `mco_metadict_count()` - 1)
struct_no | The structure/class number (must be between 0 and `mco_dict_struct_count()` - 1)
index_no | The index number (must be between 0 and `struct_info.index_count` - 1)
ifield_no | The compound index field (segment) number (0 and `index_info.n_fields` - 1)
ifield_info | The address of a `mco_dict_ifield_info_t` variable to receive the index field descriptor

### Description

> This function returns a compound index field (segment) descriptor by index field number `ifield_no`.

### Return Codes

MCO_S_OK | The index field descriptor was successfully returned
MCO_E_UDA_DICT_NOTFOUND | The dictionary is not registered
MCO_E_UDA_STRUCT_NOTFOUND | Invalid `struct_no`
MCO_E_UDA_STRUCT_NOT_CLASS | Invalid `struct_no` (not a class)
MCO_E_UDA_INDEX_NOTFOUND | Invalid `index_no`
MCO_E_UDA_IFIELD_NOTFOUND | Invalid index field (segment) number `ifield_no`

### Example

        Application snippet:

        const char * dbname = "SimpleDb";

        int main(int argc, char* argv[])
        {
            MCO_RET rc;
            unsigned int dict_no = 0;
            unsigned int struct_no = 0;
            unsigned int index_no = 0;
            unsigned int count;
            mco_metadict_header_t *header;
            mco_dict_index_info_t index_info;

            ...

            header = (mco_metadict_header_t *) malloc(size);
            mco_metadict_init(header, size); /* initialize the metadict */
            ...
            rc = mco_dict_index(header, dict_no, struct_no, index_no, &index_info);
            for (i = 0; i < index_info.n_fields; ++i)
            {
                mco_dict_ifield_info_t ifield_info;
                mco_dict_field_info_t field_info;
                /* get index field descriptor */
                rc = mco_dict_ifield(header, dict_no, struct_no, index_no, i, &ifield_info);

                rc = mco_dict_field(header, dict_no, struct_no, ifield_info.field_no, &field_info);
                printf("Compound index field %d : %s\n", i, field_info.name);
            }
            ...
        }

### Files

Header file:
mcouda.h
Source file:
mcouda.c
Library:
libmcouda.a