blob: ef795c341b64270c361c97e94bac320822b878e8 [file] [log] [blame]
############################################################# -*- c -*-
## generic include for XXX. Do not use directly.
##
## $Id$
########################################################################
@if $m2c_mark_boundary == 1@
/** START code generated by $RCSfile$ $Revision$ */
@end@
########################################################################
##/*
## This include will generate the code needed to assign data from
## a generated data context to a parameter reference.
##
## EXAMPLE (prototype generated elsewhere)
## int
## ifName_get(ifXTable_ctx * ctx, char **ifName_ptr_ptr,
## size_t * ifName_len_ptr) {
##
##
## m2c_node_lh : temp_ifName / (*ifName_ptr_ptr)
## m2c_node_lhs: temp_ifName_len / (*ifName_len_ptr);
## m2c_ctx_rh : ctx->data.
## node : ifName
##
## if (temp_ifName_len < ctx->data.ifName_len) {
## temp_ifName = malloc(ctx->data.ifName_len);
## }
## temp_ifName_len = ctx->data.ifName_len;
## memcpy(temp_ifName, ctx->data.ifName, temp_ifName_len);
##*/
@if "$m2c_data_context" ne "generated"@
/** WARNING: this code might not work for $m2c_data_context */
@end@
##/* set up for length/copy conversions for various cases.
## length mod applies to left hand side. copy mod applies to right hand side
##
##*/
@if ("$m2c_ctx_rhu" ne "elements") && ("$m2c_ctx_rhu" ne "bytes")@
@ print Invalid rh units '$m2c_ctx_rhu'@
@ exit@
@end@
@if ("$m2c_ctx_lhu" ne "elements") && ("$m2c_ctx_lhu" ne "bytes")@
@ print Invalid lh units '$m2c_ctx_lhu'@
@ exit@
@end@
@if "$m2c_ctx_rhu" ne "$m2c_ctx_lhu"@
##/* elements = bytes, length mod="/sizeof", copy mult="" */
@ if "$m2c_ctx_lhu" eq "elements"@
@ eval $m2c_ctx_lm = "/ sizeof($m2c_ctx_rh[0])"@
@ eval $m2c_ctx_cm = ""@
@ else@
##/* bytes = elements, length mod="*sizeof", copy mult="sizeof" */
@ eval $m2c_ctx_lm = "* sizeof($m2c_ctx_rh[0])"@
@ eval $m2c_ctx_cm = "* sizeof($m2c_ctx_rh[0])"@
@ end@
@else@
##/* elements = elements, length mod="", copy mult="sizeof" */
@ if "$m2c_ctx_lhu" eq "elements"@
@ eval $m2c_ctx_lm = ""@
@ eval $m2c_ctx_cm = "* sizeof($m2c_ctx_rh[0])"@
@ else@
##/* bytes = bytes, length mod="", copy mult="" */
@ eval $m2c_ctx_lm = ""@
@ eval $m2c_ctx_cm = ""@
@ end@
@end@
@if $m2c_node_needlength == 1@
/*
* make sure there is enough space for $node data
*/
if ((NULL == $m2c_ctx_lh) ||
($m2c_ctx_lhs <
($m2c_ctx_rhs$m2c_ctx_lm))) {
@ if $m2c_node_realloc == 0@
snmp_log(LOG_ERR,"not enough space for value ($m2c_ctx_rh)\n");
return MFD_ERROR;
@ else@
/*
* allocate space for $node data
*/
@ if $m2c_node_realloc == 1@
$m2c_ctx_lh = realloc($m2c_ctx_lh, $m2c_ctx_rhs$m2c_ctx_cm );
@ else@
$m2c_ctx_lh = malloc($m2c_ctx_rhs$m2c_ctx_cm);
@ end@
if(NULL == $m2c_ctx_lh) {
snmp_log(LOG_ERR,"could not allocate memory ($m2c_ctx_rh)\n");
return MFD_ERROR;
}
@ end@
}
$m2c_ctx_lhs = $m2c_ctx_rhs$m2c_ctx_lm;
memcpy( $m2c_ctx_lh, $m2c_ctx_rh, $m2c_ctx_rhs$m2c_ctx_cm );
@else@
@ if $node.decl =~ /U64/i@ # ASN_COUNTER64
${m2c_ctx_lh}.high = ${m2c_ctx_rh}.high;
${m2c_ctx_lh}.low = ${m2c_ctx_rh}.low;
@ else@
$m2c_ctx_lh = $m2c_ctx_rh;
@ end@
@end@ # length
##
########################################################################
@if $m2c_mark_boundary == 1@
/** END code generated by $RCSfile$ $Revision$ */
@end@