mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
STYLE: split off HashTableCore into separate header
This commit is contained in:
@ -44,8 +44,6 @@ Note
|
|||||||
SourceFiles
|
SourceFiles
|
||||||
HashTableI.H
|
HashTableI.H
|
||||||
HashTable.C
|
HashTable.C
|
||||||
HashTableCoreI.H
|
|
||||||
HashTableCore.C
|
|
||||||
HashTableIO.C
|
HashTableIO.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
@ -53,13 +51,10 @@ SourceFiles
|
|||||||
#ifndef HashTable_H
|
#ifndef HashTable_H
|
||||||
#define HashTable_H
|
#define HashTable_H
|
||||||
|
|
||||||
#include "label.H"
|
|
||||||
#include "uLabel.H"
|
|
||||||
#include "word.H"
|
#include "word.H"
|
||||||
#include "Xfer.H"
|
#include "Xfer.H"
|
||||||
#include "Hash.H"
|
#include "Hash.H"
|
||||||
#include "className.H"
|
#include "HashTableCore.H"
|
||||||
#include "nullObject.H"
|
|
||||||
|
|
||||||
#include <initializer_list>
|
#include <initializer_list>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
@ -84,80 +79,6 @@ template<class T, class Key, class Hash>
|
|||||||
Ostream& operator<<(Ostream& os, const HashTable<T, Key, Hash>& tbl);
|
Ostream& operator<<(Ostream& os, const HashTable<T, Key, Hash>& tbl);
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
Class HashTableCore Declaration
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
//- Bits that are independent of the HashTable template parameters.
|
|
||||||
struct HashTableCore
|
|
||||||
{
|
|
||||||
//- Maximum allowable internal table size. Approximately labelMax/4
|
|
||||||
static const label maxTableSize;
|
|
||||||
|
|
||||||
//- Return a canonical (power-of-two) of the requested size.
|
|
||||||
static label canonicalSize(const label requested_size);
|
|
||||||
|
|
||||||
//- Construct null
|
|
||||||
HashTableCore()
|
|
||||||
{}
|
|
||||||
|
|
||||||
//- Define template name and debug
|
|
||||||
ClassName("HashTable");
|
|
||||||
|
|
||||||
static_assert
|
|
||||||
(
|
|
||||||
sizeof(NullObject) >= sizeof(void*),
|
|
||||||
"NullObject is too small to reinterpret_cast as HashTable::iterator"
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
//- Factory method to create a non-const iterator begin
|
|
||||||
template<class IteratorType, class TableType>
|
|
||||||
inline static IteratorType iterator_begin(TableType& table);
|
|
||||||
|
|
||||||
//- Factory method to create a const iterator begin
|
|
||||||
template<class IteratorType, class TableType>
|
|
||||||
inline static IteratorType iterator_begin(const TableType& table);
|
|
||||||
|
|
||||||
//- Factory method to create a const iterator begin
|
|
||||||
template<class IteratorType, class TableType>
|
|
||||||
inline static IteratorType iterator_cbegin(const TableType& table);
|
|
||||||
|
|
||||||
//- Factory method to create a non-const iterator end
|
|
||||||
// Simply reinterprets a NullObject as a hash-table iterator.
|
|
||||||
template<class IteratorType>
|
|
||||||
inline static const IteratorType& iterator_end();
|
|
||||||
|
|
||||||
//- Factory method to create a const iterator cend
|
|
||||||
// Simply reinterprets a NullObject as a hash-table iterator.
|
|
||||||
template<class IteratorType>
|
|
||||||
inline static const IteratorType& iterator_cend();
|
|
||||||
|
|
||||||
|
|
||||||
//- Factory class for creating a begin/end pair for any const iterator.
|
|
||||||
template<class IteratorType, class TableType>
|
|
||||||
class const_iterator_pair
|
|
||||||
{
|
|
||||||
label size_;
|
|
||||||
IteratorType iter_;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
inline const_iterator_pair(const TableType& tbl);
|
|
||||||
|
|
||||||
inline label size() const;
|
|
||||||
inline bool empty() const;
|
|
||||||
|
|
||||||
inline IteratorType begin() const;
|
|
||||||
inline IteratorType cbegin() const;
|
|
||||||
|
|
||||||
inline const IteratorType& end() const;
|
|
||||||
inline const IteratorType& cend() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class HashTable Declaration
|
Class HashTable Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
@ -871,7 +792,6 @@ inline void Swap
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#include "HashTableCoreI.H"
|
|
||||||
#include "HashTableI.H"
|
#include "HashTableI.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|||||||
@ -23,7 +23,7 @@ License
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "HashTable.H"
|
#include "HashTableCore.H"
|
||||||
#include "uLabel.H"
|
#include "uLabel.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|||||||
134
src/OpenFOAM/containers/HashTables/HashTable/HashTableCore.H
Normal file
134
src/OpenFOAM/containers/HashTables/HashTable/HashTableCore.H
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM 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 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::HashTableCore
|
||||||
|
|
||||||
|
Description
|
||||||
|
Template invariant parts of hash table implementation.
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
HashTableCoreI.H
|
||||||
|
HashTableCore.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef HashTableCore_H
|
||||||
|
#define HashTableCore_H
|
||||||
|
|
||||||
|
#include "label.H"
|
||||||
|
#include "uLabel.H"
|
||||||
|
#include "className.H"
|
||||||
|
#include "nullObject.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class HashTableCore Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
//- Bits that are independent of HashTable template parameters.
|
||||||
|
struct HashTableCore
|
||||||
|
{
|
||||||
|
//- Maximum allowable internal table size. Approximately labelMax/4
|
||||||
|
static const label maxTableSize;
|
||||||
|
|
||||||
|
//- Return a canonical (power-of-two) of the requested size.
|
||||||
|
static label canonicalSize(const label requested_size);
|
||||||
|
|
||||||
|
//- Construct null
|
||||||
|
HashTableCore()
|
||||||
|
{}
|
||||||
|
|
||||||
|
//- Define template name and debug
|
||||||
|
ClassName("HashTable");
|
||||||
|
|
||||||
|
static_assert
|
||||||
|
(
|
||||||
|
sizeof(NullObject) >= sizeof(void*),
|
||||||
|
"NullObject is too small to reinterpret_cast as HashTable::iterator"
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Factory method to create a non-const iterator begin
|
||||||
|
template<class IteratorType, class TableType>
|
||||||
|
inline static IteratorType iterator_begin(TableType& table);
|
||||||
|
|
||||||
|
//- Factory method to create a const iterator begin
|
||||||
|
template<class IteratorType, class TableType>
|
||||||
|
inline static IteratorType iterator_begin(const TableType& table);
|
||||||
|
|
||||||
|
//- Factory method to create a const iterator begin
|
||||||
|
template<class IteratorType, class TableType>
|
||||||
|
inline static IteratorType iterator_cbegin(const TableType& table);
|
||||||
|
|
||||||
|
//- Factory method to create a non-const iterator end
|
||||||
|
// Simply reinterprets a NullObject as a hash-table iterator.
|
||||||
|
template<class IteratorType>
|
||||||
|
inline static const IteratorType& iterator_end();
|
||||||
|
|
||||||
|
//- Factory method to create a const iterator cend
|
||||||
|
// Simply reinterprets a NullObject as a hash-table iterator.
|
||||||
|
template<class IteratorType>
|
||||||
|
inline static const IteratorType& iterator_cend();
|
||||||
|
|
||||||
|
|
||||||
|
//- Factory class for creating a begin/end pair for any const iterator.
|
||||||
|
template<class IteratorType, class TableType>
|
||||||
|
class const_iterator_pair
|
||||||
|
{
|
||||||
|
label size_;
|
||||||
|
IteratorType iter_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
inline const_iterator_pair(const TableType& tbl);
|
||||||
|
|
||||||
|
inline label size() const;
|
||||||
|
inline bool empty() const;
|
||||||
|
|
||||||
|
inline IteratorType begin() const;
|
||||||
|
inline IteratorType cbegin() const;
|
||||||
|
|
||||||
|
inline const IteratorType& end() const;
|
||||||
|
inline const IteratorType& cend() const;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#include "HashTableCoreI.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -343,13 +343,6 @@ Foam::StaticHashTable<T, Key, Hash>::begin()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FULLDEBUG
|
|
||||||
if (debug)
|
|
||||||
{
|
|
||||||
Info<< "StaticHashTable is empty\n";
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return StaticHashTable<T, Key, Hash>::endIter_;
|
return StaticHashTable<T, Key, Hash>::endIter_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,13 +368,6 @@ Foam::StaticHashTable<T, Key, Hash>::cbegin() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FULLDEBUG
|
|
||||||
if (debug)
|
|
||||||
{
|
|
||||||
Info<< "StaticHashTable is empty\n";
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return StaticHashTable<T, Key, Hash>::endConstIter_;
|
return StaticHashTable<T, Key, Hash>::endConstIter_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user