Commit b0778ded authored by Sophie Wenzel-Teuber's avatar Sophie Wenzel-Teuber

Change physical and logical layout of the code

Change the file and folder layout, adding inline namespaces so the logical
namespaces match the physical locations of the files.
This also improves the organization and presentation of Doxygen documentation.

Change log:
* general:
    - Change names of classes and files to Snake case, starting with a capital
      letter
    - Tidy documentation and add @briefs everywhere
    - Adding namespaces inside #ifdef __cplusplus pragmas to C-files, such that
      the members will appear at the correct location in the documentation
* flow:
    - Move most of the classes in the flow namespace to a detail namespace
* piol:
    - Move communicator to utils namespace and rename CommunicatorInterface.hh
      to just Communicator.hh
    - Move Read and Write classes to namespace file and rename to Input_file and
      Output_file
    - Move Object read/Write-classes to detail namespace inside namespace file
    - Move ExSeis[PIOL] to configuration namespace
    - Rename Binary_file to IO_driver and move to own namespace
    - Create metadata namespace with Trace_metadata_key (formerly Meta) and a
      rules namespace containing everything concerning the rules for SEGY files
    - Create namespace segy for utilities and Trace header offsets (formerly Tr)
    - Create sort namespace inside operations namespace for the sort operations
* utils:
    - Move Distributed_vector classes to namespace of the same name
    - Remove mpi namespace and create mpi_utils for utilities and move
      MPI_Distributed_vector to distributed_vector namespace and MPI_types to
      types namespace
    - Create types namespace for various kinds of type definitions
parent 1e5d8c12
......@@ -145,46 +145,43 @@ include(third_party/third_party.cmake)
add_library(
exseisdat
src/PIOL_C_bindings.cc
src/flow/Cache.cc
src/flow/Flow_C_bindings.cc
src/flow/RadonGatherState.cc
src/flow/Set.cc
src/piol/mpi/MPI_Binary_file.cc
src/piol/segy/utils.cc
src/CommunicatorMPI.cc
src/ExSeis.cc
src/ExSeisPIOL.cc
src/ObjectInterface.cc
src/ObjectSEGY.cc
src/ReadInterface.cc
src/ReadSEGY.cc
src/ReadSEGYModel.cc
src/Rule.cc
src/Trace_metadata.cc
src/WriteInterface.cc
src/WriteSEGY.cc
src/gather.cc
src/minmax.cc
src/sort.cc
src/temporalfilter.cc
src/utils/decomposition/block_decomposition.cc
src/utils/encoding/character_encoding.cc
src/utils/encoding/number_encoding.cc
src/utils/logging/Log.cc
src/utils/logging/Status.cc
src/utils/mpi/MPI_error_to_string.cc
src/utils/mpi/MPI_max_array_length.cc
src/utils/signal_processing/AGC.cc
src/utils/signal_processing/Gain_function.cc
src/utils/signal_processing/Taper_function.cc
src/utils/signal_processing/mute.cc
src/utils/signal_processing/taper.cc
src/exseisdat/flow/detail/Cache.cc
src/exseisdat/flow/Flow_C_bindings.cc
src/exseisdat/flow/detail/Radon_gather_state.cc
src/exseisdat/flow/Set.cc
src/exseisdat/piol/configuration/ExSeis.cc
src/exseisdat/piol/configuration/ExSeisPIOL.cc
src/exseisdat/piol/file/Input_file.cc
src/exseisdat/piol/file/Input_file_segy.cc
src/exseisdat/piol/file/detail/ObjectInterface.cc
src/exseisdat/piol/file/detail/ObjectSEGY.cc
src/exseisdat/piol/file/detail/ReadSEGYModel.cc
src/exseisdat/piol/file/Output_file.cc
src/exseisdat/piol/file/Output_file_segy.cc
src/exseisdat/piol/io_driver/IO_driver_mpi.cc
src/exseisdat/piol/metadata/rules/Rule.cc
src/exseisdat/piol/metadata/Trace_metadata.cc
src/exseisdat/piol/operations/gather.cc
src/exseisdat/piol/operations/minmax.cc
src/exseisdat/piol/operations/sort_operations/sort.cc
src/exseisdat/piol/PIOL_C_bindings.cc
src/exseisdat/piol/segy/utils.cc
src/exseisdat/utils/communicator/Communicator_mpi.cc
src/exseisdat/utils/decomposition/block_decomposition.cc
src/exseisdat/utils/encoding/character_encoding.cc
src/exseisdat/utils/encoding/number_encoding.cc
src/exseisdat/utils/logging/Log.cc
src/exseisdat/utils/logging/Status.cc
src/exseisdat/utils/mpi_utils/MPI_error_to_string.cc
src/exseisdat/utils/mpi_utils/MPI_max_array_length.cc
src/exseisdat/utils/signal_processing/AGC.cc
src/exseisdat/utils/signal_processing/Gain_function.cc
src/exseisdat/utils/signal_processing/Taper_function.cc
src/exseisdat/utils/signal_processing/mute.cc
src/exseisdat/utils/signal_processing/taper.cc
src/exseisdat/utils/signal_processing/temporalfilter.cc
)
target_compile_features(exseisdat PUBLIC cxx_std_14)
......
......@@ -8,7 +8,7 @@ configure_file(
@ONLY
)
set(INCLUDE_DOXYFILE "@INCLUDE = Doxyfile")
set(INCLUDE_DOXYFILE "@INCLUDE = ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile-man.in
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-man
......@@ -66,14 +66,22 @@ add_custom_command(
COMMENT "Building the documentation..."
)
add_custom_target(make_man_directory)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/man/exseis-extract-metadata.1
TARGET make_man_directory PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory man
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/man/man/exseis-extract-metadata.1
COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-man"
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile-man.in
DEPENDS
DEPENDS
make_man_directory
${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile-man.in
${EXSEISDAT_DOCUMENTED_EXAMPLES}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man
COMMENT "Building the documentation..."
)
......@@ -82,7 +90,7 @@ add_custom_target(
doc ALL
DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/html/index.html
${CMAKE_CURRENT_BINARY_DIR}/man/exseis-extract-metadata.1
${CMAKE_CURRENT_BINARY_DIR}/man/man/exseis-extract-metadata.1
)
# Set install target
......
......@@ -6,6 +6,7 @@
PROJECT_NAME = ExSeisDat
GENERATE_HTML = NO
GENERATE_XML = NO
GENERATE_MAN = YES
INPUT = @CMAKE_SOURCE_DIR@/util
......
......@@ -36,7 +36,6 @@ WARN_AS_ERROR = YES
INPUT = \
@CMAKE_SOURCE_DIR@/doc/namespaces.dox \
@CMAKE_SOURCE_DIR@/include \
@CMAKE_SOURCE_DIR@/util \
@CMAKE_SOURCE_DIR@/README.md \
@CMAKE_CURRENT_BINARY_DIR@/examples/documented \
@CMAKE_SOURCE_DIR@/examples/README.md
......@@ -82,7 +81,9 @@ ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
PREDEFINED = __cplusplus
SEARCH_INCLUDES = YES
INCLUDE_PATH =
GENERATE_XML = YES
XML_NS_MEMB_FILE_SCOPE = YES
# Aliases for implicit members
ALIASES += special_member_functions="Special Member Functions"
......
......@@ -18,6 +18,63 @@
/// etc.
///
///
/// @namespace exseis::utils::communicator
///
/// @brief Interface and implementations of a communicator that is used for
/// message passing between the processes.
///
///
/// @namespace exseis::utils::decomposition
///
/// @brief Functions for splitting ranges across processes.
///
///
/// @namespace exseis::utils::distributed_vector
///
/// @brief Interface and implementations of a vector that is distributed
/// over several processes.
///
///
/// @namespace exseis::utils::encoding
///
/// @brief Functions for different kinds of encodings.
///
///
/// @namespace exseis::utils::logging
///
/// @brief Logging utilities.
///
///
/// @namespace exseis::utils::mpi_utils
///
/// @brief MPI utilities.
///
///
/// @namespace exseis::utils::signal_processing
///
/// @brief Functions for processing seismic signals.
///
///
/// @namespace exseis::utils::types
///
/// @brief Aliases for fundamental types and conversions used throughout the
/// ExSeisDat project.
///
///
/// @namespace exseis::utils::types::mpi
///
/// @brief Aliases for MPI datatypes
///
///
/// @namespace exseis::piol
///
......@@ -33,6 +90,54 @@
/// files.
///
///
/// @namespace exseis::piol::configuration
///
/// @brief Classes for storing configurations of the program.
///
///
/// @namespace exseis::piol::file
///
/// @brief Basic read and write classes.
///
///
/// @namespace exseis::piol::io_driver
///
/// @brief Interface and implementations that perform I/O operations
///
///
/// @namespace exseis::piol::metadata
///
/// @brief Seismic metadata utilities
///
///
/// @namespace exseis::piol::metadata::rules
///
/// @brief Rules associated with trace parameters
///
///
/// @namespace exseis::piol::operations
///
/// @brief Basic operations performed on the file data
///
///
/// @namespace exseis::piol::operations::sort_operations
///
/// @brief Classes and functions for sorting the data
///
///
/// @namespace exseis::piol::segy
///
/// @brief SEGY specific parameters and functions
///
///
/// @namespace exseis::flow
///
......
......@@ -39,7 +39,7 @@ int main(int argc, char** argv)
auto piol = ExSeis::make();
// Create a SEGY file object
WriteSEGY file(piol, name);
Output_file_segy file(piol, name);
// nt is the number of traces, ns the number of samples per trace
size_t nt = 40000, ns = 1000;
......@@ -60,15 +60,15 @@ int main(int argc, char** argv)
Trace_metadata prm(lnt);
for (size_t j = 0; j < lnt; j++) {
float k = offset + j;
prm.set_floating_point(j, Meta::x_src, 1600.0 + k);
prm.set_floating_point(j, Meta::y_src, 2400.0 + k);
prm.set_floating_point(j, Meta::x_rcv, 100000.0 + k);
prm.set_floating_point(j, Meta::y_rcv, 3000000.0 + k);
prm.set_floating_point(j, Meta::xCmp, 10000.0 + k);
prm.set_floating_point(j, Meta::yCmp, 4000.0 + k);
prm.set_integer(j, Meta::il, 2400 + k);
prm.set_integer(j, Meta::xl, 1600 + k);
prm.set_integer(j, Meta::tn, offset + j);
prm.set_floating_point(j, Trace_metadata_key::x_src, 1600.0 + k);
prm.set_floating_point(j, Trace_metadata_key::y_src, 2400.0 + k);
prm.set_floating_point(j, Trace_metadata_key::x_rcv, 100000.0 + k);
prm.set_floating_point(j, Trace_metadata_key::y_rcv, 3000000.0 + k);
prm.set_floating_point(j, Trace_metadata_key::xCmp, 10000.0 + k);
prm.set_floating_point(j, Trace_metadata_key::yCmp, 4000.0 + k);
prm.set_integer(j, Trace_metadata_key::il, 2400 + k);
prm.set_integer(j, Trace_metadata_key::xl, 1600 + k);
prm.set_integer(j, Trace_metadata_key::tn, offset + j);
}
file.write_param(offset, lnt, &prm);
......
......@@ -31,7 +31,7 @@ int main()
auto piol = ExSeis::make();
// Create new SEGY file
WriteSEGY file(piol, name);
Output_file_segy file(piol, name);
auto dec = block_decomposition(nt, piol->get_num_rank(), piol->get_rank());
size_t offset = dec.global_offset;
......@@ -47,15 +47,15 @@ int main()
Trace_metadata prm(lnt);
for (size_t j = 0; j < lnt; j++) {
float k = offset + j;
prm.set_floating_point(j, Meta::x_src, 1600.0 + k);
prm.set_floating_point(j, Meta::y_src, 2400.0 + k);
prm.set_floating_point(j, Meta::x_rcv, 100000.0 + k);
prm.set_floating_point(j, Meta::y_rcv, 3000000.0 + k);
prm.set_floating_point(j, Meta::xCmp, 10000.0 + k);
prm.set_floating_point(j, Meta::yCmp, 4000.0 + k);
prm.set_integer(j, Meta::il, 2400 + k);
prm.set_integer(j, Meta::xl, 1600 + k);
prm.set_integer(j, Meta::tn, offset + j);
prm.set_floating_point(j, Trace_metadata_key::x_src, 1600.0 + k);
prm.set_floating_point(j, Trace_metadata_key::y_src, 2400.0 + k);
prm.set_floating_point(j, Trace_metadata_key::x_rcv, 100000.0 + k);
prm.set_floating_point(j, Trace_metadata_key::y_rcv, 3000000.0 + k);
prm.set_floating_point(j, Trace_metadata_key::xCmp, 10000.0 + k);
prm.set_floating_point(j, Trace_metadata_key::yCmp, 4000.0 + k);
prm.set_integer(j, Trace_metadata_key::il, 2400 + k);
prm.set_integer(j, Trace_metadata_key::xl, 1600 + k);
prm.set_integer(j, Trace_metadata_key::tn, offset + j);
}
file.write_param(offset, lnt, &prm);
......
......@@ -13,6 +13,7 @@
using namespace exseis::piol;
using namespace exseis::flow;
using namespace exseis::utils;
int main()
{
......
......@@ -37,9 +37,12 @@ int main(int argc, char** argv)
Set set(piol, iname);
CoordElem minmax[12];
set.get_min_max(Meta::x_src, Meta::y_src, &minmax[0]);
set.get_min_max(Meta::x_rcv, Meta::y_rcv, &minmax[4]);
set.get_min_max(Meta::xCmp, Meta::yCmp, &minmax[8]);
set.get_min_max(
Trace_metadata_key::x_src, Trace_metadata_key::y_src, &minmax[0]);
set.get_min_max(
Trace_metadata_key::x_rcv, Trace_metadata_key::y_rcv, &minmax[4]);
set.get_min_max(
Trace_metadata_key::xCmp, Trace_metadata_key::yCmp, &minmax[8]);
if (piol->get_rank() == 0) {
std::cout << "x Src " << minmax[0].val << " (" << minmax[0].num
......
......@@ -16,6 +16,6 @@ int main()
{
auto piol = ExSeis::make();
Set set(piol, "/ichec/work/exseisdat/*dat/10*/b*", "temp");
set.sort(SortType::OffLine);
set.sort(Sort_type::OffLine);
return 0;
}
......@@ -6,7 +6,7 @@
#define EXSEISDAT_FLOW_H
#include "exseisdat/piol.h"
#include "exseisdat/piol/operations/SortType.h"
#include "exseisdat/piol/operations/sort_operations/SortType.h"
#include "exseisdat/utils/signal_processing/AGC.h"
#include "exseisdat/utils/signal_processing/Taper_function.h"
......@@ -26,26 +26,35 @@ typedef struct PIOL_Set PIOL_Set;
#ifdef __cplusplus
namespace exseis {
namespace piol {
using namespace exseis::utils;
// Everything from here on is C API functions needing C linkage.
extern "C" {
#endif
#endif // __cplusplus
/// @name PIOL Set functions
///
/// @{
/*! Initialise the set.
/*! @brief Initialise the set.
* @param[in] piol The PIOL handle
* @param[in] pattern The file-matching pattern
* @return The set handle
*/
PIOL_Set* piol_set_new(const piol_exseis* piol, const char* pattern);
/*! Free (deinit) the set.
/*! @brief Free (deinit) the set.
* @param[in,out] set The set handle
*/
void piol_set_delete(PIOL_Set* set);
/*! Get the min and the max of a set of parameters passed. This is a parallel
* operation. It is the collective min and max across all processes (which also
* must all call this file).
/*! @brief Get the min and the max of a set of parameters passed.
*
* @details This is a parallel operation. It is the collective min and max
* across all processes (which also must all call this file).
* @param[in,out] set The set handle
* @param[in] m1 The first parameter type
* @param[in] m2 The second parameter type
......@@ -55,17 +64,17 @@ void piol_set_delete(PIOL_Set* set);
*/
void piol_set_get_min_max(
PIOL_Set* set,
exseis_Meta m1,
exseis_Meta m2,
exseis_Trace_metadata_key m1,
exseis_Trace_metadata_key m2,
struct PIOL_CoordElem* minmax);
/*! Sort the set by the specified sort type.
/*! @brief Sort the set by the specified sort type.
* @param[in,out] set The set handle
* @param[in] type The sort type
*/
void piol_set_sort(PIOL_Set* set, exseis_SortType type);
/*! Sort the set using a custom comparison function
/*! @brief Sort the set using a custom comparison function
* @param[in,out] set A handle for the set.
* @param[in] func The custom comparison function to sort set
*/
......@@ -73,7 +82,7 @@ void piol_set_sort_fn(
PIOL_Set* set,
bool (*func)(const piol_file_trace_metadata* param, size_t i, size_t j));
/*! Perform tailed taper on a set of traces
/*! @brief Perform tailed taper on a set of traces
* @param[in,out] set A handle for the set
* @param[in] taper_function The type of taper to be applied to traces.
* @param[in] ntpstr The length of left-tail taper ramp.
......@@ -86,31 +95,31 @@ void piol_set_taper(
size_t ntpstr,
size_t ntpend);
/*! Output using the given output prefix
/*! @brief Output using the given output prefix
* @param[in,out] set The set handle
* @param[in] oname The output prefix
*/
void piol_set_output(PIOL_Set* set, const char* oname);
/*! Set the text-header of the output
/*! @brief Set the text-header of the output
* @param[in,out] set The set handle
* @param[in] outmsg The output message
*/
void piol_set_text(PIOL_Set* set, const char* outmsg);
/*! Summarise the current status by whatever means the PIOL instrinsically
* supports
/*! @brief Summarise the current status by whatever means the PIOL
* instrinsically supports
* @param[in] set The set handle
*/
void piol_set_summary(const PIOL_Set* set);
/*! Add a file to the set based on the name given
/*! @brief Add a file to the set based on the name given
* @param[in,out] set The set handle
* @param[in] name The input name
*/
void piol_set_add(PIOL_Set* set, const char* name);
/*! Scale traces using automatic gain control for visualization
/*! @brief Scale traces using automatic gain control for visualization
* @param[in,out] set The set handle
* @param[in] type They type of agc scaling function used
* @param[in] window Length of the agc window
......@@ -122,8 +131,12 @@ void piol_set_agc(
size_t window,
exseis_Trace_value target_amplitude);
/// @} PIOL Set functions
#ifdef __cplusplus
} // extern "C"
#endif
} // namespace piol
} // namespace exseis
#endif // __cplusplus
#endif // EXSEISDAT_FLOW_H
////////////////////////////////////////////////////////////////////////////////
/// @file
/// @brief Flow API header
////////////////////////////////////////////////////////////////////////////////
#ifndef EXSEISDAT_FLOW_HH
#define EXSEISDAT_FLOW_HH
#include "exseisdat/piol.hh"
#include "exseisdat/flow/Cache.hh"
#include "exseisdat/flow/CacheElem.hh"
#include "exseisdat/flow/FileDesc.hh"
#include "exseisdat/flow/FuncOpt.hh"
#include "exseisdat/flow/GatherState.hh"
#include "exseisdat/flow/Op.hh"
#include "exseisdat/flow/OpOpt.hh"
#include "exseisdat/flow/OpParent.hh"
#include "exseisdat/flow/RadonGatherState.hh"
#include "exseisdat/flow/Set.hh"
#include "exseisdat/flow/TraceBlock.hh"
#include "exseisdat/flow/detail/Cache.hh"
#include "exseisdat/flow/detail/Cache_elem.hh"
#include "exseisdat/flow/detail/File_descriptor.hh"
#include "exseisdat/flow/detail/Function_options.hh"
#include "exseisdat/flow/detail/Gather_state.hh"
#include "exseisdat/flow/detail/Operation.hh"
#include "exseisdat/flow/detail/Operation_options.hh"
#include "exseisdat/flow/detail/Operation_parent.hh"
#include "exseisdat/flow/detail/Radon_gather_state.hh"
#include "exseisdat/flow/detail/Trace_block.hh"
#endif // EXSEISDAT_FLOW_HH
This diff is collapsed.
......@@ -2,12 +2,12 @@
/// @file
/// @brief
////////////////////////////////////////////////////////////////////////////////
#ifndef EXSEISDAT_FLOW_CACHE_HH
#define EXSEISDAT_FLOW_CACHE_HH
#ifndef EXSEISDAT_FLOW_DETAIL_CACHE_HH
#define EXSEISDAT_FLOW_DETAIL_CACHE_HH
#include "exseisdat/flow/CacheElem.hh"
#include "exseisdat/flow/FileDesc.hh"
#include "exseisdat/flow/TraceBlock.hh"
#include "exseisdat/flow/detail/Cache_elem.hh"
#include "exseisdat/flow/detail/File_descriptor.hh"
#include "exseisdat/flow/detail/Trace_block.hh"
#include <algorithm>
#include <deque>
......@@ -21,11 +21,11 @@ namespace detail {
class Cache {
public:
/// Typedef for passing in a list of FileDesc objects.
typedef std::deque<std::shared_ptr<FileDesc>> FileDeque;
typedef std::deque<std::shared_ptr<File_descriptor>> FileDeque;
private:
/// A vector of cache elements
std::vector<CacheElem> m_cache;
std::vector<Cache_elem> m_cache;
/// The PIOL object
std::shared_ptr<exseis::piol::ExSeisPIOL> m_piol;
......@@ -44,7 +44,7 @@ class Cache {
* @param[in] c_trc if True, get the traces.
* @return Return a block with the traces and/or parameters.
*/
std::shared_ptr<TraceBlock> get_cache(
std::shared_ptr<Trace_block> get_cache(
std::shared_ptr<exseis::piol::Rule> rule,
FileDeque& desc,
bool c_prm,
......@@ -56,7 +56,7 @@ class Cache {
* @param[in] desc A deque of unique pointers to file descriptors.
* @return Return a block with the parameters.
*/
std::shared_ptr<TraceBlock> cache_prm(
std::shared_ptr<Trace_block> cache_prm(
std::shared_ptr<exseis::piol::Rule> rule, FileDeque& desc)
{
return get_cache(rule, desc, true, false);
......@@ -67,7 +67,7 @@ class Cache {
* @param[in] desc A deque of unique pointers to file descriptors.
* @return Return a block with the traces.
*/
std::shared_ptr<TraceBlock> cache_trc(FileDeque& desc)
std::shared_ptr<Trace_block> cache_trc(FileDeque& desc)
{
return get_cache(nullptr, desc, false, true);
}
......@@ -80,7 +80,7 @@ class Cache {
{
auto it = std::find_if(
m_cache.begin(), m_cache.end(),
[desc](const CacheElem& elem) -> bool {
[desc](const Cache_elem& elem) -> bool {
return elem.check_prm(desc);
});
return it != m_cache.end();
......@@ -94,7 +94,7 @@ class Cache {
{
auto it = std::find_if(
m_cache.begin(), m_cache.end(),
[desc](const CacheElem& elem) -> bool {
[desc](const Cache_elem& elem) -> bool {
return elem.check_trc(desc);
});
return it != m_cache.end();
......@@ -107,7 +107,7 @@ class Cache {
{
auto it = std::find_if(
m_cache.begin(), m_cache.end(),
[desc](const CacheElem& elem) -> bool {
[desc](const Cache_elem& elem) -> bool {
return elem.desc == desc;
});
m_cache.erase(it);
......@@ -131,4 +131,4 @@ class Cache {
} // namespace flow
} // namespace exseis
#endif // EXSEISDAT_FLOW_CACHE_HH
#endif // EXSEISDAT_FLOW_DETAIL_CACHE_HH
////////////////////////////////////////////////////////////////////////////////
/// @file
////////////////////////////////////////////////////////////////////////////////
#ifndef EXSEISDAT_FLOW_CACHEELEM_HH
#define EXSEISDAT_FLOW_CACHEELEM_HH
#ifndef EXSEISDAT_FLOW_DETAIL_CACHE_ELEM_HH
#define EXSEISDAT_FLOW_DETAIL_CACHE_ELEM_HH
#include "exseisdat/flow/FileDesc.hh"
#include "exseisdat/flow/TraceBlock.hh"
#include "exseisdat/flow/detail/File_descriptor.hh"
#include "exseisdat/flow/detail/Trace_block.hh"
#include <deque>
#include <memory>
......@@ -18,22 +18,22 @@ namespace detail {
/*! A structure to store cache elements of traces and parameters corresponding
* to a collection of files
*/
struct CacheElem {
struct Cache_elem {
/// Typedef for passing in a list of FileDesc objects.
typedef std::deque<std::shared_ptr<FileDesc>> FileDeque;
typedef std::deque<std::shared_ptr<File_descriptor>> FileDeque;
/// A deque of unique pointers to file descriptors
FileDeque desc;
/// The cached data
std::shared_ptr<TraceBlock> block = std::make_shared<TraceBlock>();
std::shared_ptr<Trace_block> block = std::make_shared<Trace_block>();
/*! Construct the cache element with the given parameter structure.
* @param[in] desc A deque of unique pointers to file descriptors