# `sample_resize_trigger` Interface

A sample resize trigger policy.

This class serves to show the interface a trigger policy needs to support.

Defined in: `sample_resize_trigger.hpp`

## Public Types and Constants

### General definitions.

Type | Definition | Description
    size_type
    size_t, e.g.
| Size type.

## Public Methods

### Constructors, destructor, and related.

Method | Description
      sample_resize_trigger
      ()
| Default constructor. Must be default constructable.
      sample_range_hashing
      (const sample_resize_trigger &other)
| Copy constructor. Must be copy constructable.
    inline void
      swap
      (sample_resize_trigger &other)
| Swaps content. Must be swappable (if there is such a word).

## Protected Methods

### Insert search notifications.

Notifications called during an insert operation.

Method | Description
    inline void
      notify_insert_search_start
      ()
| Notifies a search started.
    inline void
      notify_insert_search_collision
      ()
| Notifies a search encountered a collision.
    inline void
      notify_insert_search_end
      ()
| Notifies a search ended.

### Find search notifications.

Notifications called during a find operation.

Method | Description
    inline void
      notify_find_search_start
      ()
| Notifies a search started.
    inline void
      notify_find_search_collision
      ()
| Notifies a search encountered a collision.
    inline void
      notify_find_search_end
      ()
| Notifies a search ended.

### Erase search notifications.

Notifications called during an insert operation.

Method | Description
    inline void
      notify_erase_search_start
      ()
| Notifies a search started.
    inline void
      notify_erase_search_collision
      ()
| Notifies a search encountered a collision.
    inline void
      notify_erase_search_end
      ()
| Notifies a search ended.

### Content change notifications.

Notifications called when the content of the table changes in a way that can affect the resize policy.

Method | Description
    inline void
      notify_inserted
      (size_type num_entries)
| Notifies an element was inserted. the total number of entries in the table is `num_entries`.
    inline void
      notify_erased
      (size_type num_entries)
| Notifies an element was erased.
    void
      notify_cleared
      ()
| Notifies the table was cleared.

### Size change notifications.

Notifications called when the table changes size.

Method | Description
    void
      notify_resized
      (size_type new_size)
| Notifies the table was resized as a result of this object's signifying that a resize is needed.
    void
      notify_externally_resized
      (size_type new_size)
| Notifies the table was resized externally.

### Queries.

Called to query whether/how to resize.

Method | Description
    inline bool
      is_resize_needed
      () const
| Queries whether a resize is needed.
    inline bool
      is_grow_needed
      (size_type size,
        size_type num_entries) const
| Queries whether a grow is needed. This method is called only if this object indicated resize is needed. The actual `size` of the table is `size`, and the number of entries in it is `num_entries`.

## Private Methods

### Overrides.

Method | Description
    virtual void
      do_resize
      (size_type new_size)
| Resizes to `new_size`.