PK_MTOPOL_map_record_r_t   

struct PK_MTOPOL_map_record_r_s
    {
    PK_MTOPOL_map_t                      map;
    int                                  n_original_mtopols;
    PK_MTOPOL_t                         *original_mtopols;
    PK_CLASS_t                          *original_classes;
    int                                  n_product_mtopols;
    PK_MTOPOL_t                         *product_mtopols;
    };
typedef struct PK_MTOPOL_map_record_r_s PK_MTOPOL_map_record_r_t;



This data structure encapsulates the association between mtopols before
and after the modelling operation.

Used in:

PK_MTOPOL_map_r_t


Description of fields:

'map'                 The value of this field indicates what type of mapping
                      information the record represents. Permitted values
                      are :

                        PK_MTOPOL_map_copy_c
                        PK_MTOPOL_map_split_c
                        PK_MTOPOL_map_merge_c
                        PK_MTOPOL_map_derive_c

'n_original_mtopols'  The length of the 'original_mtopols' and
                      'original_mtopol_classes' arrays.

'original_mtopols'    These were the mtopols which participated in the
                      modelling operation. These mtopols may no longer exist.
                      The class that each mtopol was before the operation is
                      held in the corresponding element of the
                      'original_classes' array.

'original_classes'    The class of each participating mtopol within the
                      'original_mtopols' array.

'n_product_mtopols'   The length of the 'product_mtopols' array.

'product_mtopols'     The mtopols resulting from the modelling operation.

The expectations on the contents of the structure for each map type :


PK_MTOPOL_map_copy_c

 o 'original_mtopols' holds the list of mtopols that have been copied to create
    the products. These mtopols exist.

 o The class of the original mtopols can be determined from the
   corresponding entry in the 'original_classes' array.

 o 'product_mtopols' holds the newly created mtopols.

 o The entries in the 'original_mtopols' and 'product_mtopols' arrays are in
   one to one correspondence. The nth item in 'product_mtopols' is derived from
   the nth item in 'original_mtopols'.


PK_MTOPOL_map_split_c

 o 'original_mtopols' holds a single mtopol that has been split to create the
    products. These mtopols may not exist.

 o The class of the original mtopols can be determined from the
   corresponding entry in the 'original_classes' array.

 o 'product_mtopols' holds the newly created mtopols.

 o All entries in 'product_mtopols' have been split from the entry in
   'original_mtopols'.


PK_MTOPOL_map_merge_c

 o 'original_mtopols' holds the list of mtopols that have been merged to create
    the single product mtopol. These mtopols may not exist.

 o The class of the original mtopols can be determined from the
   corresponding entry in the 'original_classes' array.

 o 'product_mtopols' holds the single mtopol created by merging the mtopols in
   'original_mtopols'.


PK_MTOPOL_map_derive_c

 o 'original_mtopols' holds the list of mtopols from which the products have
   been derived. These mtopols may not exist.

 o The class of the original mtopols can be determined from the
   corresponding entry in the 'original_classes' array.

 o All entries in 'product_mtopols' have been derived from the entries in
   'original_mtopols'.