############################################################# -*- c -*-
## generic include for XXX. Do not use directly.
##
########################################################################
########################################################################
## lower conf files get confused with multiple processing types, so
## set single options
@eval $mfd_data_get_processing_type_save = "$m2c_processing_type"@
@if "$mfd_processing_types" =~ /h/@
@eval $m2c_processing_type = 'h'@
@if $m2c_create_fewer_files != 1@
@   open ${name}_data_get.h@
/*
 * Note: this file originally auto-generated by mib2c
 * using mfd-data-get.m2c
 *
 * @file ${name}_data_get.h
 *
 * @addtogroup get
 *
 * Prototypes for get functions
 *
 * @{
 */
@   eval $m2c_tmp = "$name"@
@   eval $name = "${name}_DATA_GET"@
@   include generic-header-top.m2i@
@   eval $name = "$m2c_tmp"@
@end@ // m2c_create_fewer_files
@if $m2c_mark_boundary == 1@
/** START header generated by mfd-data-get.m2c */
@end@
########################################################################
##
/* *********************************************************************
 * GET function declarations
 */

/* *********************************************************************
 * GET Table declarations
 */
@foreach $table table@
@    include m2c_setup_table.m2i@
@    include details-table.m2i@
    /*
     * indexes
     */
@    foreach $node index@
@        include m2c_setup_node.m2i@
@        if $m2c_node_skip_mapping != 1@
    int ${node}_map($m2c_node_map_param);
@        end@ # // skip mapping
@    end@ # index

@    foreach $node nonindex@
@        include m2c_setup_node.m2i@
@        if $m2c_node_skip_mapping != 1@
    int ${node}_map($m2c_node_map_param);
@        end@ # // skip mapping
    int ${node}_get( ${context}_rowreq_ctx *rowreq_ctx, $m2c_node_param_ref );
@    end@ // nonindex

@    include generic-table-indexes-set.m2i@

@end@ // table

@if $m2c_mark_boundary == 1@
/** END header generated by mfd-data-get.m2c */
@end@
@if $m2c_create_fewer_files != 1@
@   eval $m2c_tmp = "$name"@
@   eval $name = "${name}_DATA_GET"@
@   include generic-header-bottom.m2i@
@   eval $name = "$m2c_tmp"@
/** @} */
@end@ // m2c_create_fewer_files
######################################################################
@end@ // $mfd_processing_types =~ /h/
######################################################################
######################################################################
######################################################################
@if "$mfd_processing_types" =~ /c/@
@eval $m2c_processing_type = 'c'@
@if $m2c_create_fewer_files != 1@
@open ${name}_data_get.c@
/*
 * Note: this file originally auto-generated by mib2c
 * using mfd-data-get.m2c
 */
@include generic-source-includes.m2i@

/** @defgroup data_get data_get: Routines to get data
 *
 * TODO:230:M: Implement $context get routines.
 * TODO:240:M: Implement $context mapping routines (if any).
 *
 * These routine are used to get the value for individual objects. The
 * row context is passed, along with a pointer to the memory where the
 * value should be copied.
 *
 * @{
 */
@end@ // m2c_create_fewer_files
@if $m2c_mark_boundary == 1@
/** START code generated by mfd-data-get.m2c */
@end@
@foreach $table table@
@    include m2c_setup_table.m2i@
@    include details-table.m2i@

/* ---------------------------------------------------------------------
 * TODO:200:r: Implement $context data context functions.
 */
@    if (($m2c_data_allocate == 1) || ($m2c_undo_embed == 0))  && ("$m2c_data_context" ne "generated")@
@        include generic-data-allocate.m2i@
@    end@

##
##   do nodes
##
##// internal only? how to know how to map external?
@    foreach $node index@
@        include m2c_setup_node.m2i@
@        if $m2c_node_skip_mapping != 0@
@           next@
@        end@
@        include details-node.m2i@
@        if $m2c_report_progress == 1@
@           print | |   +-> Processing index $node@
@        end@
@        include generic-value-map-func.m2i@
@    end@ # foreach column

@    include generic-table-indexes-set.m2i@

@    foreach $node nonindex@
@        include m2c_setup_node.m2i@
@        include details-node.m2i@
@        if $node.noaccess == 1@
@            next@ # skip to next column
@        end@
@        if $m2c_report_progress == 1@
@           print | |   +-> Processing nonindex $node@
@        end@
@        if $m2c_node_skip_mapping == 0@
@           include generic-value-map-func.m2i@
@        end@
@        include node-get.m2i@
@    end@ # foreach column

@end@ # foreach table

##
/** @} */
########################################################################
@if $m2c_mark_boundary == 1@
/** END code generated by mfd-data-get.m2c */
@end@
########################################################################
@end@ // $mfd_processing_types =~ /c/
## restore original processing types
@eval $m2c_processing_type = "$mfd_data_get_processing_type_save"@
