message: Variable.h Prototype for groupless version
  Testing github branching
diff: #include "core/Transform.h"
  +class Group;
  namespace adios
  {
  @@ -23,21 +24,67 @@ namespace adios
  * @param Base (parent) class for template derived (child) class CVariable. Required to put CVariable objects in STL containers.
  */
  template< class T >
  -struct Variable
  +class Variable
  {
  - std::string DimensionsCSV; ///< comma separated list for variables to search for local dimensions
  - const T* Values; ///< pointer to values passed from user in ADIOS Write, it might change in ADIOS Read
  - int GlobalBoundsIndex; ///< if global > 0, index corresponds to global-bounds in m_GlobalBounds in CGroup, if local then = -1
  - std::vector< Transform* > Transforms; ///< associated transforms, sequence determines application order, e.g. first Transforms[0] then Transforms[1]. Pointer used as reference (no memory management).
  - std::vector< int > Parameters; ///< additional optional parameter understood by the corresponding Transform in Transforms vector
  +public:
  - bool IsDimension; ///< true: is used as a dimension in another variable (typically scalars), false: none
  + const Group& m_Group; ///< reference to the group it belongs to
  + const std::string m_Name; ///< variable name
  + const std::string m_Type; ///< variable type
  + const std::string m_DimensionsCSV; ///< comma separated list for variables to search for local dimensions
  + const std::string m_GlobalDimensionsCSV; ///< comma separated list for variables to search for global dimensions
  + const std::string m_GlobalOffsetsCSV; ///< comma separated list for variables to search for global offsets
  + const bool m_DebugMode = false;
  +
  + const T* m_ValuesWrite = nullptr; ///< pointer to values passed from user in ADIOS Write, it might change in ADIOS Read
  + T* m_ValuesRead = nullptr;
  +
  + bool IsDimension = false; ///< true: is used as a dimension in another variable (typically scalars), false: none
  +
  +
  + struct TransformData
  + {
  + Transform* Transform = nullptr; ///< pointer to transform object
  + std::map<std::string, std::string> Parameters; ///< transforms parameters
  + std::vector<std::size_t> Size; ///< vector that carries the sizes after a transformation is applied
  };
  + std::vector< TransformData > m_Transforms; ///< associated transforms, sequence determines application order, e.g. first Transforms[0] then Transforms[1]. Pointer used as reference (no memory management).
  -} //end namespace
  + /**
  + * Constructor from Group
  + * @param group
  + * @param name
  + * @param dimensionsCSV
  + * @param globalBoundsIndex
  + * @param debugMode
  + */
  + template< class T >
  + Variable( const Group& group, const std::string name, const std::string dimensionsCSV, const std::string globalDimensionsCSV = "",
  + const std::string globalOffsetsCSV = "", const bool debugMode = false ):
  + m_Group{ group },
  + m_Name{ name },
  + m_DimensionsCSV{ dimensionsCSV },
  + m_GlobalDimensionsCSV{ globalDimensionsCSV },
  + m_GlobalOffsetsCSV{ globalOffsetsCSV },
  + m_DebugMode{ debugMode }
  + { }
  + template< class ...Args>
  + void AddTransform( Transform& transform, Args... args )
  + {
  + std::vector<std::string> parameters = { args... };
  + m_Transforms.emplace_back( transform, BuildParametersMap( parameters, m_DebugMode ) ); //need to check
  + }
  +
  +
  +private:
  +
  + std::vector<size_t> GetDimensions( const std::string csvDimensions );
  -#endif /* VARIABLE_H_ */
  +};
  +
  +
  +} //end namespace
  