| 83 | } |
| 84 | |
| 85 | static uint8_t pn_node2code(pn_encoder_t *encoder, pni_node_t *node) |
| 86 | { |
| 87 | switch (node->atom.type) { |
| 88 | case PN_LONG: |
| 89 | if (-128 <= node->atom.u.as_long && node->atom.u.as_long <= 127) { |
| 90 | return PNE_SMALLLONG; |
| 91 | } else { |
| 92 | return PNE_LONG; |
| 93 | } |
| 94 | case PN_INT: |
| 95 | if (-128 <= node->atom.u.as_int && node->atom.u.as_int <= 127) { |
| 96 | return PNE_SMALLINT; |
| 97 | } else { |
| 98 | return PNE_INT; |
| 99 | } |
| 100 | case PN_ULONG: |
| 101 | if (node->atom.u.as_ulong == 0) { |
| 102 | return PNE_ULONG0; |
| 103 | } else if (node->atom.u.as_ulong < 256) { |
| 104 | return PNE_SMALLULONG; |
| 105 | } else { |
| 106 | return PNE_ULONG; |
| 107 | } |
| 108 | case PN_UINT: |
| 109 | if (node->atom.u.as_uint == 0) { |
| 110 | return PNE_UINT0; |
| 111 | } else if (node->atom.u.as_uint < 256) { |
| 112 | return PNE_SMALLUINT; |
| 113 | } else { |
| 114 | return PNE_UINT; |
| 115 | } |
| 116 | case PN_BOOL: |
| 117 | if (node->atom.u.as_bool) { |
| 118 | return PNE_TRUE; |
| 119 | } else { |
| 120 | return PNE_FALSE; |
| 121 | } |
| 122 | case PN_STRING: |
| 123 | if (node->atom.u.as_bytes.size < 256) { |
| 124 | return PNE_STR8_UTF8; |
| 125 | } else { |
| 126 | return PNE_STR32_UTF8; |
| 127 | } |
| 128 | case PN_SYMBOL: |
| 129 | if (node->atom.u.as_bytes.size < 256) { |
| 130 | return PNE_SYM8; |
| 131 | } else { |
| 132 | return PNE_SYM32; |
| 133 | } |
| 134 | case PN_BINARY: |
| 135 | if (node->atom.u.as_bytes.size < 256) { |
| 136 | return PNE_VBIN8; |
| 137 | } else { |
| 138 | return PNE_VBIN32; |
| 139 | } |
| 140 | default: |
| 141 | return pn_type2code(encoder, node->atom.type); |
| 142 | } |
no test coverage detected