generic-ctx-get.m2i
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:2k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #############################################################  -*- c -*-
  2. ## generic include for XXX. Do not use directly.
  3. ##
  4. ## $Id: generic-ctx-get.m2i,v 1.10.2.1 2005/07/25 23:13:52 rstory Exp $
  5. ########################################################################
  6. @if $m2c_mark_boundary == 1@
  7. /** START code generated by $RCSfile: generic-ctx-get.m2i,v $ $Revision: 1.10.2.1 $ */
  8. @end@
  9. ########################################################################
  10. ##/*
  11. ## This include will generate the code needed to assign data from
  12. ## a generated data context to a parameter reference.
  13. ##
  14. ## EXAMPLE (prototype generated elsewhere)
  15. ## int
  16. ## ifName_get(ifXTable_ctx * ctx, char **ifName_ptr_ptr,
  17. ##            size_t * ifName_len_ptr) {
  18. ##
  19. ## 
  20. ## m2c_node_lh :   temp_ifName / (*ifName_ptr_ptr)
  21. ## m2c_node_lhs:   temp_ifName_len / (*ifName_len_ptr);
  22. ## m2c_ctx_rh  :   ctx->data.
  23. ## node        :  ifName
  24. ##
  25. ##    if (temp_ifName_len < ctx->data.ifName_len) {
  26. ##        temp_ifName = malloc(ctx->data.ifName_len);
  27. ##    }
  28. ##    temp_ifName_len = ctx->data.ifName_len;
  29. ##    memcpy(temp_ifName, ctx->data.ifName, temp_ifName_len);
  30. ##*/
  31. @if "$m2c_data_context" ne "generated"@
  32.     /** WARNING: this code might not work for $m2c_data_context */
  33. @end@
  34. @if $m2c_node_needlength == 1@
  35.     /*
  36.      * make sure there is enough space for $node data
  37.      */
  38.     if ((NULL == $m2c_ctx_lh) ||
  39.         ($m2c_ctx_lhs < ($m2c_ctx_rhs * sizeof(${m2c_ctx_lh}[0])))) {
  40. @   if $m2c_node_realloc == 0@
  41.         snmp_log(LOG_ERR,"not enough space for valuen");
  42.         return MFD_ERROR;
  43. @   else@
  44.         /*
  45.          * allocate space for $node data
  46.          */
  47. @      if $m2c_node_realloc == 1@
  48.         $m2c_ctx_lh = realloc($m2c_ctx_lh, $m2c_ctx_rhs * sizeof(${m2c_ctx_lh}[0]));
  49. @      else@
  50.         $m2c_ctx_lh = malloc($m2c_ctx_rhs * sizeof(${m2c_ctx_lh}[0]));
  51. @      end@
  52.         if(NULL == $m2c_ctx_lh) {
  53.             snmp_log(LOG_ERR,"could not allocate memoryn");
  54.             return MFD_ERROR;
  55.         }
  56. @   end@
  57.     }
  58.     $m2c_ctx_lhs = $m2c_ctx_rhs * sizeof(${m2c_ctx_lh}[0]);
  59.     memcpy( $m2c_ctx_lh, $m2c_ctx_rh, $m2c_ctx_lhs );
  60. @else@
  61. @   if $node.decl =~ /U64/i@ #              ASN_COUNTER64
  62.     ${m2c_ctx_lh}.high = ${m2c_ctx_rh}.high;
  63.     ${m2c_ctx_lh}.low = ${m2c_ctx_rh}.low;
  64. @   else@
  65.     $m2c_ctx_lh = $m2c_ctx_rh;
  66. @   end@
  67. @end@ # length
  68. ##
  69. ########################################################################
  70. @if $m2c_mark_boundary == 1@
  71. /** END code generated by $RCSfile: generic-ctx-get.m2i,v $ $Revision: 1.10.2.1 $ */
  72. @end@