Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IProperty.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* IProperty.h (C) 2000-2018 */
9/* */
10/* Interface des propriétés. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IPROPERTY_H
13#define ARCANE_IPROPERTY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23ARCANE_BEGIN_NAMESPACE
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class IPropertyValue;
29class IPropertyType;
30class IPropertyTypeInstance;
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34/*!
35 * \internal
36 * \brief Définition des types pour les propriétés.
37 */
39{
40 public:
41
42 virtual ~Property() {}
43
44 //! Genre d'une propriété
46 {
47 PkSimple, //!< Genre simple (Réel, entier, chaîne, ...)
48 PkEnum, //!< Genre enuméré
49 PkExtended, //!< Genre étendu
50 PkComplex //!< Genre complexe contenant des sous-types
51 };
52 //! Type simple dans le cas d'un genre PkSimple
54 {
55 StString,
56 StReal,
57 StInteger,
58 StBool
59 };
60};
61
62/*---------------------------------------------------------------------------*/
63/*---------------------------------------------------------------------------*/
64/*!
65 * \internal
66 * \brief Interface d'une valeur propriété.
67 */
69: public Property
70{
71 public:
72
73 virtual ~IPropertyValue() {} //!< Libère les ressources
74
75 public:
76
77 //! Stocke la valeur de la propriété dans \a str
78 virtual void valueToString(String& str) const =0;
79 //! Stocke le nom de la propriété dans \a str
80 virtual void nameToString(String& str) const =0;
81 //! Positionne la nouvelle valeur de la propriété à \a str
82 virtual void setValueFromString(const String& str) =0;
83 //! Retourne si la valeur actuelle est la valeur par défaut
84 virtual bool isDefaultValue() const =0;
85 //! Retourne si la valeur actuelle est la valeur originelle
86 virtual bool isOriginalValue() const =0;
87 //! Stocke la valeur originale de la propriété dans \a str
88 virtual void originalValueToString(String& str) const =0;
89 //! Retourne si la valeur peut être éditée.
90 virtual bool canBeEdited() const =0;
91 //! Retourne le type de cette propriété.
92 virtual IPropertyType* type() =0;
93 //! Retourne l'instance associé à cette valeur.
95};
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99/*!
100 * \internal
101 * \brief Interface d'un type de propriété.
102 */
104: public Property
105{
106 public:
107
108 virtual ~IPropertyType() {} //!< Libère les ressources
109
110 public:
111
112 //! Retourne dans \a str le nom du type.
113 virtual void typeNameToString(String& str) const =0;
114
115 //! Retourne le genre du type de la propriété
116 virtual ePropertyKind kind() const =0;
117
118 /*!
119 * \brief Retourne le nombre de valeurs enumérées possible pour le type.
120 * Cette méthode n'est utile que les types du genre PkEnum. Dans les
121 * autres cas, elle retourne zéro.
122 */
123 virtual Integer nbEnumeratedValue() const =0;
124
125 /*!
126 * \brief Retourne la \a ième valeur enumérée du type.
127 * Cette méthode n'est utile que les types du genre PkEnum. Dans les
128 * autres cas, elle retourne la chaîne nulle.
129 */
130 virtual String enumeratedValue(Integer i) const =0;
131
132 /*!
133 * \brief Retourne le type simple du stockage de la propriété.
134 * Cette méthode n'est valide que les types du genre PkSimple. Pour tous les
135 * autres types, elle retourne StString.
136 */
137 virtual eSimpleType simpleType() const =0;
138};
139
140/*---------------------------------------------------------------------------*/
141/*---------------------------------------------------------------------------*/
142/*!
143 * \internal
144 * \brief Interface d'une instance d'un type de propriété.
145 */
147: public Property
148{
149 public:
150
151 virtual ~IPropertyTypeInstance() {} //!< Libère les ressources
152
153 public:
154
155 //! Stocke le nom de l'instance dans \a str
156 virtual void nameToString(String& str) const =0;
157 //! Retourne le type de l'instance.
158 virtual IPropertyType* type() =0;
159};
160
161/*---------------------------------------------------------------------------*/
162/*---------------------------------------------------------------------------*/
163
164ARCANE_END_NAMESPACE
165
166/*---------------------------------------------------------------------------*/
167/*---------------------------------------------------------------------------*/
168
169#endif
170
Fichier de configuration d'Arcane.
virtual ~IPropertyTypeInstance()
Libère les ressources.
Definition IProperty.h:151
virtual IPropertyType * type()=0
Retourne le type de l'instance.
virtual void nameToString(String &str) const =0
Stocke le nom de l'instance dans str.
virtual ePropertyKind kind() const =0
Retourne le genre du type de la propriété
virtual eSimpleType simpleType() const =0
Retourne le type simple du stockage de la propriété. Cette méthode n'est valide que les types du genr...
virtual Integer nbEnumeratedValue() const =0
Retourne le nombre de valeurs enumérées possible pour le type. Cette méthode n'est utile que les type...
virtual void typeNameToString(String &str) const =0
Retourne dans str le nom du type.
virtual String enumeratedValue(Integer i) const =0
Retourne la ième valeur enumérée du type. Cette méthode n'est utile que les types du genre PkEnum....
virtual ~IPropertyType()
Libère les ressources.
Definition IProperty.h:108
virtual void originalValueToString(String &str) const =0
Stocke la valeur originale de la propriété dans str.
virtual bool isOriginalValue() const =0
Retourne si la valeur actuelle est la valeur originelle.
virtual void nameToString(String &str) const =0
Stocke le nom de la propriété dans str.
virtual IPropertyType * type()=0
Retourne le type de cette propriété.
virtual void valueToString(String &str) const =0
Stocke la valeur de la propriété dans str.
virtual bool canBeEdited() const =0
Retourne si la valeur peut être éditée.
virtual ~IPropertyValue()
Libère les ressources.
Definition IProperty.h:73
virtual IPropertyTypeInstance * typeInstance()=0
Retourne l'instance associé à cette valeur.
virtual void setValueFromString(const String &str)=0
Positionne la nouvelle valeur de la propriété à str.
virtual bool isDefaultValue() const =0
Retourne si la valeur actuelle est la valeur par défaut.
eSimpleType
Type simple dans le cas d'un genre PkSimple.
Definition IProperty.h:54
ePropertyKind
Genre d'une propriété
Definition IProperty.h:46
@ PkSimple
Genre simple (Réel, entier, chaîne, ...)
Definition IProperty.h:47
@ PkEnum
Genre enuméré
Definition IProperty.h:48
@ PkExtended
Genre étendu.
Definition IProperty.h:49
Chaîne de caractères unicode.