80 lines
2.6 KiB
C
80 lines
2.6 KiB
C
############################################################# -*- c -*-
|
|
## generic include for enums. Do not use directly.
|
|
##
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** START code generated by details-enums.m2i */
|
|
@end@
|
|
########################################################################
|
|
@ifconf $node.syntax.m2i@
|
|
@ include $node.syntax.m2i@
|
|
@else@
|
|
##
|
|
## Generating enums
|
|
##
|
|
## Examples:
|
|
##
|
|
## enums syntax perltype net-snmp type cdecl m2c_decl
|
|
## ----- -------- -------- ------------- ----- -------
|
|
## 1 SomeTC BITS ASN_OCTET_STR char u_long
|
|
## 1 INTEGER INTEGER ASN_INTEGER long u_long
|
|
## 1 RowStatus INTEGER ASN_INTEGER long u_long
|
|
##
|
|
/*************************************************************
|
|
* constants for enums for the MIB node
|
|
* $node ($node.syntax / $node.type)
|
|
*
|
|
* since a Textual Convention may be referenced more than once in a
|
|
* MIB, protect againt redefinitions of the enum values.
|
|
*/
|
|
##
|
|
#ifndef ${m2c_de_pfx}_ENUMS
|
|
#define ${m2c_de_pfx}_ENUMS
|
|
|
|
@ eval $m2c_mask=""@
|
|
@ foreach $e $v enum@
|
|
@ include m2c_setup_enum.m2i@
|
|
@ if "$node.perltype" eq "BITS"@
|
|
@ if $v > 31@
|
|
@ print ** ACK! I cannot handle BITS longer than 4 bytes!@
|
|
@ exit@
|
|
@ end@
|
|
@ if "x$m2c_mask" eq "x"@
|
|
@ eval $m2c_mask="$m2c_ename"@
|
|
@ else@
|
|
@ eval $m2c_mask="$m2c_mask | $m2c_ename"@
|
|
@ end@
|
|
$m2c_const_dcl $m2c_ename $m2c_const_del (1 << (31-$v)) $m2c_const_sfx
|
|
@ else@
|
|
$m2c_const_dcl $m2c_ename $m2c_const_del $v $m2c_const_sfx
|
|
@ end@
|
|
@ end@ # for each
|
|
|
|
#endif /* ${m2c_de_pfx}_ENUMS */
|
|
|
|
@ if "$node.perltype" eq "BITS"@
|
|
$m2c_const_dcl $m2c_enum_mask $m2c_const_del ($m2c_mask)
|
|
|
|
@ end@
|
|
@ if ($m2c_node_skip_mapping != 1) && ($node.enums == 1)@
|
|
/*
|
|
* TODO:140:o: Define your interal representation of $node enums.
|
|
* (used for value mapping; see notes at top of file)
|
|
*/
|
|
@ foreach $e $v enum@
|
|
@ include m2c_setup_enum.m2i@
|
|
@ if ("$node.perltype" ne "BITS")@
|
|
$m2c_const_dcl INTERNAL_$context.uc_$m2c_iname $m2c_const_del $v $m2c_const_sfx
|
|
@ else@
|
|
$m2c_const_dcl INTERNAL_$context.uc_$m2c_iname $m2c_const_del (0x01 << $v) $m2c_const_sfx
|
|
@ end@
|
|
@ end@ // foreach
|
|
|
|
@ end@ // skip mapping / enums
|
|
|
|
@end@ # ! syntax include
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** END code generated by details-enums.m2i */
|
|
@end@
|