#############################################################  -*- c -*-
## generic include for XXX. Do not use directly.
##
## $Id$
########################################################################
@if $m2c_mark_boundary == 1@
/** START code generated by $RCSfile$ $Revision$ */
@end@
########################################################################
## }
@if $m2c_node_skip_mapping == 1@
    /** no mapping */
@   include generic-ctx-get.m2i@
@else@ // mapping
    /*
     * TODO:246:r: |-> Define $node mapping.
     * Map values between raw/native values and MIB values
     *
@   if $m2c_node_needlength == 1@
     * if(MFD_SUCCESS !=
     *    ${node}_map(&$m2c_ctx_lh, &$m2c_ctx_lhs,
     *                $m2c_ctx_rh, $m2c_ctx_rhs, $m2c_node_realloc)) {
     *    return MFD_ERROR;
     * }
     */
@      include generic-ctx-get.m2i@
##
@   elsif ($node.enums == 1) && ("$node.perltype" eq "INTEGER")@
##
    * enums usually need mapping.
    */
    if(MFD_SUCCESS !=
       ${node}_map(&${m2c_ctx_lh}, ${m2c_ctx_rh} )) {
        return MFD_ERROR;
    }
@   else@ // enums
     * Integer based value can usually just do a direct copy.
     */
@   include generic-ctx-get.m2i@
@   end@ 
@end@ // mapping
##
########################################################################
@if $m2c_mark_boundary == 1@
/** END code generated by $RCSfile$ $Revision$ */
@end@
