/* Length cannot be used in these functions, big problem if a element dissector is not defined for these.  */
static guint16 elem_t(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, elem_idx_t idx, guint32 offset, const gchar *name_add, ansi_a_shared_data_t *data_p _U_)
/* Length cannot be used in these functions, big problem if a element dissector is not defined for these.  */
static guint16 elem_t(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, elem_idx_t idx, guint32 offset, const gchar *name_add, ansi_a_shared_data_t *data_p _U_)
{
    guint8      oct;
    guint32     curr_offset;
    guint16     consumed;
    curr_offset = offset;
    consumed = 0;
    if ((int) idx < 0 || idx >= ansi_a_elem_1_max-1)
    {
        return tvb_reported_length_remaining(tvb, offset);
    }
    oct = tvb_get_guint8(tvb, curr_offset);
    if (oct == (guint8) ansi_a_elem_1_strings[idx].value)
    {
        proto_tree_add_uint_format(tree, hf_ansi_a_elem_id, tvb, curr_offset, 1, oct,
            "%s%s",
            ansi_a_elem_1_strings[idx].strptr,
            (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
        consumed = 1;
    }
    return(consumed);
}