Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
OperatorMng.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/* OperatorMng.h (C) 2000-2004 */
9/* */
10/* Stores all possible operator types on expressions. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_OPERATORMNG_H
13#define ARCANE_UTILS_OPERATORMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/expr/UnaryExpressionImpl.h"
18#include "arcane/expr/BinaryExpressionImpl.h"
19#include "arcane/expr/WhereExpressionImpl.h"
20#include "arcane/expr/LitteralExpressionImpl.h"
21
22//%% ARCANE_EXPR_SUPPRESS_BEGIN
23#include "arcane/VariableExpressionImpl.h"
24//%% ARCANE_EXPR_SUPPRESS_END
25
26#include <map>
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Arcane
32{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
40class ARCANE_EXPR_EXPORT OperatorMng
41{
42 protected:
43
44 OperatorMng();
45 ~OperatorMng();
46
47 public:
48
49 static OperatorMng* instance();
50
51 public:
52
54 VariantBase::eType type,
55 UnaryExpressionImpl::eOperationType operation);
56
58 VariantBase::eType type,
59 BinaryExpressionImpl::eOperationType operation);
60
62 VariantBase::eType type);
63
65 VariantBase::eType type);
66
67 //%% ARCANE_EXPR_SUPPRESS_BEGIN
68 VariableOperator* find(VariableExpressionImpl* e,
69 VariantBase::eType type);
70 //%% ARCANE_EXPR_SUPPRESS_END
71
72 private:
73
74 static OperatorMng* m_instance;
75
76 private:
77
78 typedef std::map<VariantBase::eType, UnaryOperator*,
79 std::less<VariantBase::eType>>
80 UnaryOpMap;
81 UnaryOpMap m_unary_op[UnaryExpressionImpl::NbOperationType];
82
83 typedef std::map<VariantBase::eType, BinaryOperator*,
84 std::less<Integer>>
85 BinaryOpMap;
86 BinaryOpMap m_binary_op[BinaryExpressionImpl::NbOperationType];
87
88 typedef std::map<VariantBase::eType, WhereOperator*,
89 std::less<VariantBase::eType>>
90 WhereOpMap;
91 WhereOpMap m_where_op;
92
93 typedef std::map<VariantBase::eType, LitteralOperator*,
94 std::less<VariantBase::eType>>
95 LitteralOpMap;
96 LitteralOpMap m_litteral_op;
97
98 //%% ARCANE_EXPR_SUPPRESS_BEGIN
99 typedef std::map<VariantBase::eType, VariableOperator*,
100 std::less<VariantBase::eType>>
101 VariableOpMap;
102 VariableOpMap m_variable_op;
103 //%% ARCANE_EXPR_SUPPRESS_END
104};
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
108
109} // namespace Arcane
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
113
114#endif
Implementation of a binary expression.
Generic binary operator for expressions.
Implementation of a literal expression containing a scalar.
Generic cast operator for literals.
Implementation of a unary expression.
Generic unary operator for expressions.
Implementation of a binary expression.
Generic operator for conditional expressions.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --