GCC Middle and Back End API Reference
ordered_hash_map< KeyId, Value, Traits > Class Template Reference

#include <ordered-hash-map.h>

Inheritance diagram for ordered_hash_map< KeyId, Value, Traits >:
Collaboration diagram for ordered_hash_map< KeyId, Value, Traits >:

Data Structures

class  iterator
 

Public Member Functions

 ordered_hash_map ()
 
 ordered_hash_map (const ordered_hash_map &other)
 
bool put (const Key &k, const Value &v)
 
Valueget (const Key &k)
 
Valueget_or_insert (const Key &k, bool *existed=NULL)
 
void remove (const Key &k)
 
size_t elements () const
 
iterator begin () const
 
iterator end () const
 

Private Types

typedef Traits::key_type Key
 

Private Member Functions

void operator= (const ordered_hash_map &)
 

Private Attributes

hash_map< KeyId, Value, Traitsm_map
 
auto_vec< Keym_keys
 
hash_map< KeyId, int > m_key_index
 

Detailed Description

template<typename KeyId, typename Value, typename Traits>
class ordered_hash_map< KeyId, Value, Traits >
A type-safe hash map that retains the insertion order of keys.
   Copyright (C) 2019-2024 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   
Notes:
- The keys must be PODs, since vec<> uses assignment to populate slots
  without properly initializing them.
- doesn't have GTY support.
- supports removal, but retains order of original insertion.
  (Removal might be better handled by using a doubly-linked list
  of nodes, holding the values).   
Two-argument form.   

Member Typedef Documentation

◆ Key

typedef Traits::key_type ordered_hash_map< KeyId, Value, Traits >::Key
private

Constructor & Destructor Documentation

◆ ordered_hash_map() [1/2]

◆ ordered_hash_map() [2/2]

Member Function Documentation

◆ begin()

◆ elements()

◆ end()

◆ get()

◆ get_or_insert()

◆ operator=()

◆ put()

◆ remove()

Field Documentation

◆ m_key_index

◆ m_keys

◆ m_map


The documentation for this class was generated from the following file: