Exemplo n.º 1
0
const char *
dr_meta_copy_union_find_select_entry_name(
    const char * src_data, size_t src_capacity, LPDRMETAENTRY src_entry, LPDRMETA src_meta) 
{
    LPDRMETAENTRY src_select_entry;
    LPDRMETAENTRY src_union_entry;
    int32_t src_union_entry_id;
    int32_t src_union_entry_pos;

    src_select_entry = dr_entry_select_entry(src_entry);
    if (src_select_entry == 0) return NULL;

    if (src_entry->m_select_data_start_pos + dr_entry_element_size(src_select_entry) > src_capacity) 
        return NULL;

    if (dr_entry_try_read_int32(
            &src_union_entry_id,
            src_data + src_entry->m_select_data_start_pos,
            src_select_entry,
            NULL) != 0)
    {
        return NULL;
    }

    src_union_entry_pos = dr_meta_find_entry_idx_by_id(src_meta, src_union_entry_id);
    if (src_union_entry_pos < 0) return NULL;

    src_union_entry = dr_meta_entry_at(src_meta, src_union_entry_pos);
    if (src_union_entry == NULL) return NULL;

    return dr_entry_name(src_union_entry);
}
Exemplo n.º 2
0
 int findEntryIdx(int id) const { return dr_meta_find_entry_idx_by_id(*this, id); }