#############################################################  -*- c -*-
## generic include for XXX. Do not use directly.
##
## $Id$
########################################################################
@if $m2c_mark_boundary == 1@
/** START code generated by $RCSfile$ $Revision$ */
    ## }
@end@
########################################################################
##
@include generic-get-decl.m2i@
/*
 * TODO:231:o: |-> copy $node data.
 * get ${m2c_node_lh}.low and ${m2c_node_lh}.high from $m2c_data_item_base
 */
@if ("$m2c_data_context" eq "generated")@
    ${m2c_node_lh}.high = ${m2c_data_item}${node}.high;
    ${m2c_node_lh}.low = ${m2c_data_item}${node}.low;
@else@
    return MFD_SKIP; /* TODO:235:M: |-> Remove SKIP once you've set $node data */
@end@
## spirit of @include generic-get-decl-bot.m2i@
@if $m2c_get_use_temp == 1@

    /* copy temporary value to passed parameter */
    ${node}_ptr->high = ${m2c_node_lh}.high;
    ${node}_ptr->low = ${m2c_node_lh}.low;
@end@

##
########################################################################
@if $m2c_mark_boundary == 1@
/** END code generated by $RCSfile$ $Revision$ */
@end@
