| ############################################################# -*- c -*- |
| ## generic include for enums. Do not use directly. |
| ## |
| ## $Id$ |
| ######################################################################## |
| @if $m2c_mark_boundary == 1@ |
| /** START code generated by $RCSfile$ $Revision$ */ |
| @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 $RCSfile$ $Revision$ */ |
| @end@ |