idDynamicArray_Class Module

module~~iddynamicarray_class~~UsesGraph module~iddynamicarray_class idDynamicArray_Class module~variablekind variableKind module~variablekind->module~iddynamicarray_class module~m_sort m_sort module~variablekind->module~m_sort module~m_strings m_strings module~variablekind->module~m_strings module~m_errors m_errors module~variablekind->module~m_errors module~m_allocate m_allocate module~variablekind->module~m_allocate module~m_searching m_searching module~variablekind->module~m_searching module~m_deallocate m_deallocate module~variablekind->module~m_deallocate module~m_reallocate m_reallocate module~variablekind->module~m_reallocate module~m_parameters m_parameters module~variablekind->module~m_parameters module~m_unittester m_unitTester module~variablekind->module~m_unittester module~m_sort->module~iddynamicarray_class module~m_strings->module~iddynamicarray_class module~m_errors->module~iddynamicarray_class module~m_errors->module~m_strings module~m_errors->module~m_allocate module~m_errors->module~m_deallocate module~m_errors->module~m_reallocate module~m_errors->module~m_unittester module~m_allocate->module~iddynamicarray_class module~m_allocate->module~m_reallocate module~m_searching->module~iddynamicarray_class module~m_deallocate->module~iddynamicarray_class module~m_reallocate->module~iddynamicarray_class iso_fortran_env iso_fortran_env iso_fortran_env->module~variablekind iso_fortran_env->module~m_strings iso_fortran_env->module~m_errors iso_fortran_env->module~m_unittester module~m_parameters->module~m_strings module~m_unittester->module~m_allocate
Help

Class that act as stacks, queues, and priority queues. These classes use dynamically allocated contiguous blocks of memory to store a list of numbers. The queues can be sorted to become priority queues and use binary searches to quickly insert new numbers. If the allocated memory is filled, the available space is doubled. Memory is only reallocated to a smaller size, if the utilization is a quarter of that allocated.

program dynamicArray_test
use variableKind, only: i32
use m_dynamicArray, only: idDynamicArray

implicit none

type(idDynamicArray) :: da, da2
integer(i32) :: ia

da = idDynamicArray(10)
call da%insertAt(1, 10_i64)
call da%insertAt(1, 20_i64)
call da%prepend(30_i64)
call da%append(40_i64)
call da%remove(2)
call da%tighten()
da2 = da
da2%values(2) = 50_i64
call da%deallocate()
call da2%deallocate()

da = idDynamicArray(3, sorted=.true.)
call da%insertSorted(20_i64)
call da%insertSorted(30_i64)
call da%insertSorted(10_i64)
ia = da%locationOf(20_i64)
call da%insertSortedUnique(10_i64)
call da%insertSortedUnique(15_i64)
call da%deallocate()

da = idDynamicArray(3, sorted=.true., fixed=.true.)
call da%insertSorted(20_i64)
call da%insertSorted(30_i64)
call da%insertSorted(10_i64)
ia = da%locationOf(20_i64)
call da%insertSortedUnique(10_i64)
call da%insertSortedUnique(15_i64)
call da%deallocate()
end program

Used By

module~~iddynamicarray_class~~UsedByGraph module~iddynamicarray_class idDynamicArray_Class module~m_tests m_tests module~iddynamicarray_class->module~m_tests module~idargdynamicarray_class idArgDynamicArray_Class module~iddynamicarray_class->module~idargdynamicarray_class program~test_coretran test_coretran module~m_tests->program~test_coretran module~idargdynamicarray_class->module~m_tests
Help


Interfaces

public interface idDynamicArray

  • private function init_idDynamicArray_i1(M, sorted, fixed) result(this)

    Overloaded by interface idDynamicArray()

    Arguments

    Type IntentOptional AttributesName
    integer(kind=i32), intent(in), optional :: M

    Amount of memory to allocate.

    logical, intent(in), optional :: sorted

    Maintain a sorted array.

    logical, intent(in), optional :: fixed

    Maintain a fixed size array.

    Return Value type(idDynamicArray)

    Return type.

  • private function init_idDynamicArray_d1D(values, M, sorted, fixed) result(this)

    Overloaded by interface idDynamicArray()

    Arguments

    Type IntentOptional AttributesName
    integer(kind=i64), intent(in) :: values(:)

    Set of values to initialize with.

    integer(kind=i32), intent(in), optional :: M

    Amount of memory to allocate.

    logical, intent(in), optional :: sorted

    Maintain a sorted array.

    logical, intent(in), optional :: fixed

    Maintain a fixed size array.

    Return Value type(idDynamicArray)

    Return type


Derived Types

type, public :: idDynamicArray

Class that act as stacks, queues, and priority queues. See idDynamicArray_Class for more information on how to use this class.

Components

TypeVisibility AttributesNameInitial
integer(kind=i32), public :: N

Current size of the array

integer(kind=i64), public, allocatable:: values(:)

Memory for values, can be larger than N

logical, public :: sorted =.false.

Keep track of whether the array is sorted for potential speed increases

logical, public :: fixed =.false.

Don't allow the memory to change after initial instantiation.

Constructor

private function init_idDynamicArray_i1(M, sorted, fixed)

Overloaded by interface idDynamicArray()

private function init_idDynamicArray_d1D(values, M, sorted, fixed)

Overloaded by interface idDynamicArray()

Type-Bound Procedures

procedure, public :: append => append_idDynamicArray

idDynamicArray%append() - Append a value to the end of the dynamic array. Will change a sorted dynamic array to unsorted.

procedure, public :: deallocate => deallocate_idDynamicArray

idDynamicArray%deallocate() - Deallocate a dynamic array.

procedure, public :: insertAt => insertAt_idDynamicArray

idDynamicArray%insertAt() - Insert a value at a given index.

procedure, public :: insertSorted => insertSorted_idDynamicArray

idDynamicArray%insertSorted() - Insert a value into a sorted dynamic array.

procedure, public :: insertSortedUnique => insertSortedUnique_idDynamicArray

idDynamicArray%insertSortedUnique() - Inserts only unique numbers into a dynamic array.

procedure, public :: isEmpty => isEmpty_idDynamicArray

idDynamicArray%isEmpty() - True if the array is empty.

procedure, public :: isFilled => isFilled_idDynamicArray

idDynamicArray%isFilled() - True if the array is filled.

procedure, public :: locationOf => locationOf_idDynamicArray

idDynamicArray%locationOf() - Get the location of a value in a sorted dynamic array.

procedure, public :: prepend => prepend_idDynamicArray

idDynamicArray%prepend() - Prepend a value to the start of the dynamic array. Only for unsorted dynamic arrays

procedure, public :: reallocate => reallocate_idDynamicArray

idDynamicArray%reallocate() - Create new contiguous memory to match the needs of the expanding or shrinking array.

procedure, public :: remove => remove_idDynamicArray

idDynamicArray%remove() - Remove an element from the array.

procedure, public :: tighten => tighten_idDynamicArray

idDynamicArray%tighten() - Removes excess buffer memory and trims it to the current length.