Tpetra parallel linear algebra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
Tpetra_HashTable_decl.hpp
1
/*
2
// @HEADER
3
// ***********************************************************************
4
//
5
// Tpetra: Templated Linear Algebra Services Package
6
// Copyright (2008) Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39
//
40
// ************************************************************************
41
// @HEADER
42
*/
43
44
#ifndef TPETRA_HASHTABLE_DECL_HPP
45
#define TPETRA_HASHTABLE_DECL_HPP
46
47
#include <Teuchos_Describable.hpp>
48
#include "Tpetra_ConfigDefs.hpp"
49
50
namespace
Tpetra
{
51
namespace
Details
{
52
65
template
<
typename
KeyType,
typename
ValueType>
66
class
HashTable
:
public
Teuchos::Describable {
68
struct
Node {
69
KeyType Key;
70
ValueType Value;
71
Node * Ptr;
72
73
Node (
const
KeyType key = 0,
const
ValueType value = 0, Node * ptr = NULL)
74
: Key(key), Value(value), Ptr(ptr) {}
75
76
private
:
77
Node (
const
Node& src) : Key(src.Key), Value(src.Value), Ptr(src.Ptr) {}
78
79
Node& operator= (
const
Node& src) {
80
// We may safely omit the usual check for this == &src.
81
Key = src.Key;
82
Value = src.Value;
83
Ptr = src.Ptr;
84
return
*
this
;
85
}
86
};
87
88
Node ** Container_;
89
KeyType Size_;
90
unsigned
int
Seed_;
91
#ifdef HAVE_TPETRA_DEBUG
92
int
maxc_;
// Max size of the list among all entries w/ collisions. debug only.
93
int
nc_;
// Number of entries with collisions; use only in debug mode.
94
#endif
// HAVE_TPETRA_DEBUG
95
98
int
hashFunc(
const
KeyType key );
99
100
int
getRecommendedSize(
const
int
size );
101
102
public
:
109
HashTable
(
const
int
size,
const
unsigned
int
seed = (2654435761U));
110
111
HashTable
(
const
HashTable
& obj);
112
~HashTable
();
113
115
void
add
(
const
KeyType key,
const
ValueType value);
116
118
ValueType
get
(
const
KeyType key);
119
121
122
123
std::string
description
()
const
;
124
126
void
127
describe
(Teuchos::FancyOStream &out,
128
const
Teuchos::EVerbosityLevel verbLevel=
129
Teuchos::Describable::verbLevel_default)
const
;
131
132
private
:
134
HashTable<KeyType,ValueType>
&
135
operator= (
const
HashTable<KeyType,ValueType>
& source);
136
};
137
138
}
// Details namespace
139
140
}
// Tpetra namespace
141
142
#endif
Tpetra::Details::HashTable::HashTable
HashTable(const int size, const unsigned int seed=(2654435761U))
Definition
Tpetra_HashTable_def.hpp:140
Tpetra::Details::HashTable::get
ValueType get(const KeyType key)
Get the value corresponding to the given key.
Definition
Tpetra_HashTable_def.hpp:199
Tpetra::Details::HashTable::description
std::string description() const
Implementation of Teuchos::Describable.
Definition
Tpetra_HashTable_def.hpp:222
Tpetra::Details::HashTable::describe
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
Print this object with the given verbosity to the output stream.
Definition
Tpetra_HashTable_def.hpp:232
Tpetra::Details::HashTable::add
void add(const KeyType key, const ValueType value)
Add a key and its value to the hash table.
Definition
Tpetra_HashTable_def.hpp:190
Tpetra::Details
Nonmember function that computes a residual Computes R = B - A * X.
Definition
Tpetra_KokkosRefactor_Details_MultiVectorLocalDeepCopy.hpp:51
Tpetra
Namespace Tpetra contains the class and methods constituting the Tpetra library.
Generated by
1.17.0