Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
MemoryDataReaderWriter.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* MemoryDataReaderWriter.h (C) 2000-2009 */
9/* */
10/* Reading/writing data in memory. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMPL_MEMORYDATAREADERWRITER_H
13#define ARCANE_IMPL_MEMORYDATAREADERWRITER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/core/IDataReaderWriter.h"
19
20#include <map>
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class IVariable;
32class IData;
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
44class ARCANE_IMPL_EXPORT MemoryDataReaderWriter
45: public TraceAccessor
46, public IDataReaderWriter
47{
48 private:
49
50 typedef std::map<String, Ref<IData>> VarToDataMap;
51
52 public:
53
54 MemoryDataReaderWriter(ITraceMng* tm)
55 : TraceAccessor(tm)
56 {
57 }
58 virtual ~MemoryDataReaderWriter();
59
60 public:
61
62 virtual void beginWrite(const VariableCollection& vars);
63 virtual void endWrite() {}
64 virtual void setMetaData(const String& meta_data) { m_meta_data = meta_data; }
65 virtual void write(IVariable* var, IData* data);
66
67 virtual void beginRead(const VariableCollection&) {}
68 virtual void endRead() {}
69 virtual String metaData() { return m_meta_data; }
70 virtual void read(IVariable* var, IData* data);
71
72 void free();
73
74 private:
75
76 Ref<IData> _findData(IVariable* var);
77
78 private:
79
80 String m_meta_data;
81 VarToDataMap m_vars_to_data;
82};
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
87} // namespace Arcane
88
89/*---------------------------------------------------------------------------*/
90/*---------------------------------------------------------------------------*/
91
92#endif
Interface for reading/writing variable data.
Interface of a data item.
Definition IData.h:34
Interface of a variable.
Definition IVariable.h:40
virtual void setMetaData(const String &meta_data)
Sets the metadata information.
virtual String metaData()
Metadata.
Reference to an instance.
TraceAccessor(ITraceMng *m)
Constructs an accessor via the trace manager m.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --