Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Variable.h 1.37 KiB
/*
 * Distributed under the OSI-approved Apache License, Version 2.0.  See
 * accompanying file Copyright.txt for details.
 *
 * Variable.h : template class for self-describing primitive variables
 *
 *  Created on: Oct 6, 2016
 *      Author: William F Godoy
 */

#ifndef ADIOS2_CORE_VARIABLE_H_
#define ADIOS2_CORE_VARIABLE_H_

/// \cond EXCLUDE_FROM_DOXYGEN
#include <map>
#include <ostream> //std::ostream in MonitorGroups
#include <string>
#include <vector>
/// \endcond

#include "adios2/core/VariableBase.h"

namespace adios2
{

/**
 * @param Base (parent) class for template derived (child) class Variable.
 */
template <class T>
class Variable : public VariableBase
{

public:
    /** pointer to values passed from application in Engine Write*/
    const T *m_AppValues = nullptr;

    /** reference to non-const data, mostly used for reading */
    T *m_AppPointer = nullptr;

    std::vector<T> m_Data;

    /**
     * Unique constructor
     * @param name
     * @param shape
     * @param start
     * @param count
     * @param constantShape
     * @param debugMode
     */
    Variable<T>(const std::string &name, const Dims &shape, const Dims &start,
                const Dims &count, const bool constantShape,
                const bool debugMode);

    ~Variable<T>() = default;

    void ApplyTransforms() final;
};

} // end namespace adios2

#endif /* ADIOS2_CORE_VARIABLE_H_ */