World Builder
1.1.0-pre
A geodynamic initial conditions generator
interface.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2018-2024 by the authors of the World Builder code.
3
4
This file is part of the World Builder.
5
6
This program is free software: you can redistribute it and/or modify
7
it under the terms of the GNU Lesser General Public License as published
8
by the Free Software Foundation, either version 2 of the License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU Lesser General Public License for more details.
15
16
You should have received a copy of the GNU Lesser General Public License
17
along with this program. If not, see <https://www.gnu.org/licenses/>.
18
*/
19
20
#ifndef WORLD_BUILDER_TYPES_INTERFACE_H
21
#define WORLD_BUILDER_TYPES_INTERFACE_H
22
23
#include "rapidjson/pointer.h"
24
#include "
assert.h
"
25
26
#include <memory>
27
#include <iostream>
28
29
namespace
WorldBuilder
30
{
31
class
Parameters;
32
37
namespace
Types
38
{
39
40
enum class
type
41
{
42
None
,
Bool
,
String
,
Double
,
Int
,
UnsignedInt
,
Array
,
Object
,
List
,
Point2D
,
Point3D
,
CoordinateSystem
,
PluginSystem
,
Segment
,
ConstantLayer
,
ValueAtPoints
,
OneOf
43
};
44
45
class
Interface
46
{
47
public
:
51
Interface
();
52
56
virtual
57
~
Interface
();
58
62
virtual
63
void
write_schema(
Parameters
&prm,
64
const
std::string &name,
65
const
std::string &documentation)
const
= 0;
66
70
virtual
71
std::unique_ptr<Interface>
clone
()
const
72
{
73
return
std::unique_ptr<Interface>(clone_impl());
74
}
75
80
type
get_type()
const
;
81
82
83
protected
:
84
type
type_name {
type::None
};
85
86
87
virtual
88
Interface
*clone_impl()
const
= 0;
89
};
90
}
// namespace Types
91
}
// namespace WorldBuilder
92
93
#endif
WorldBuilder::Types::type::Bool
WorldBuilder::Types::type::Array
WorldBuilder::Types::type::UnsignedInt
WorldBuilder::Types::type::ValueAtPoints
WorldBuilder::Types::Interface::clone
virtual std::unique_ptr< Interface > clone() const
Definition:
interface.h:71
WorldBuilder::Types::Interface
Definition:
interface.h:45
WorldBuilder::Types::type::None
assert.h
WorldBuilder::Types::type::Point3D
WorldBuilder::Types::type::Object
WorldBuilder::Types::type::Point2D
WorldBuilder::Types::type::Segment
WorldBuilder::Types::OneOf
Definition:
one_of.h:37
WorldBuilder::Types::type::PluginSystem
WorldBuilder::Types::type::ConstantLayer
WorldBuilder::Types::type
type
Definition:
interface.h:40
WorldBuilder::Types::type::CoordinateSystem
WorldBuilder::Types::type::String
WorldBuilder
Definition:
cartesian.cc:24
WorldBuilder::Parameters
Definition:
parameters.h:78
WorldBuilder::Types::type::Int
WorldBuilder::Types::type::Double
WorldBuilder::Types::type::List
include
world_builder
types
interface.h
Generated by
1.8.13