aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
BIFXMLIDWriter.h
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2025 by *
5 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
6 * - Christophe GONZALES(_at_AMU) *
7 * *
8 * The aGrUM/pyAgrum library is free software; you can redistribute it *
9 * and/or modify it under the terms of either : *
10 * *
11 * - the GNU Lesser General Public License as published by *
12 * the Free Software Foundation, either version 3 of the License, *
13 * or (at your option) any later version, *
14 * - the MIT license (MIT), *
15 * - or both in dual license, as here. *
16 * *
17 * (see https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html) *
18 * *
19 * This aGrUM/pyAgrum library is distributed in the hope that it will be *
20 * useful, but WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
21 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES MERCHANTABILITY or FITNESS *
22 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
26 * OTHER DEALINGS IN THE SOFTWARE. *
27 * *
28 * See LICENCES for more details. *
29 * *
30 * SPDX-FileCopyrightText: Copyright 2005-2025 *
31 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
32 * - Christophe GONZALES(_at_AMU) *
33 * SPDX-License-Identifier: LGPL-3.0-or-later OR MIT *
34 * *
35 * Contact : info_at_agrum_dot_org *
36 * homepage : http://agrum.gitlab.io *
37 * gitlab : https://gitlab.com/agrumery/agrum *
38 * *
39 ****************************************************************************/
40
41
51
52#ifndef GUM_BIF_XML_ID_WRITER_H
53#define GUM_BIF_XML_ID_WRITER_H
54
55#define TIXML_USE_TICPP
56
57#include <fstream>
58#include <iostream>
59#include <sstream>
60#include <string>
61
62#include <agrum/agrum.h>
63
65
66namespace gum {
67
79 template < typename GUM_SCALAR >
80
81 class BIFXMLIDWriter: public IDWriter< GUM_SCALAR > {
82 public:
83 // ==========================================================================
85 // ==========================================================================
87
92
96 virtual ~BIFXMLIDWriter();
97
99
107 virtual void write(std::ostream& output, const InfluenceDiagram< GUM_SCALAR >& infdiag);
108
118 virtual void write(std::string filePath, const InfluenceDiagram< GUM_SCALAR >& infdiag);
119
120 private:
124 std::string _heading_();
125
129 std::string _documentend_();
130
134 std::string _variableBloc_(const DiscreteVariable& var, int nodeType);
135
140 std::string _variableDefinition_(const NodeId& varNodeId,
141 const InfluenceDiagram< GUM_SCALAR >& infdiag);
142 };
143} /* namespace gum */
144
146#endif // GUM_BIF_XML_ID_WRITER_H
Head of abstract classe for export of influence diagram.
virtual ~BIFXMLIDWriter()
Destructor.
std::string _heading_()
Returns the header of the BIF file.
std::string _variableBloc_(const DiscreteVariable &var, int nodeType)
Returns a bloc defining a variable in the BIF format.
BIFXMLIDWriter()
Default constructor.
std::string _variableDefinition_(const NodeId &varNodeId, const InfluenceDiagram< GUM_SCALAR > &infdiag)
Returns a bloc defining a variable's table (if she has) in the BIF format.
std::string _documentend_()
Returns the end of the BIF file.
virtual void write(std::string filePath, const InfluenceDiagram< GUM_SCALAR > &infdiag)
Writes an Influence Diagram in the file referenced by filePath.
virtual void write(std::ostream &output, const InfluenceDiagram< GUM_SCALAR > &infdiag)
Writes an influence diagram in the given ouput stream.
Base class for discrete random variable.
IDWriter()
Default constructor.
Class representing an Influence Diagram.
Size NodeId
Type for node ids.
gum is the global namespace for all aGrUM entities
Definition agrum.h:46