12#ifndef ARCCORE_COMMON_INTERNAL_PROPERTYDECLARATIONS_H
13#define ARCCORE_COMMON_INTERNAL_PROPERTYDECLARATIONS_H
17#include "arccore/base/String.h"
18#include "arccore/common/CommonGlobal.h"
23namespace Arcane::properties
55#define ARCANE_DECLARE_PROPERTY_CLASS(class_name) \
57 using PropertyInstanceType = class_name; \
58 static const char* propertyClassName() { return #class_name; }\
59 template<typename V> static void _applyPropertyVisitor(V& visitor);\
60 static void applyPropertyVisitor(Arcane::properties::PropertyVisitor<class_name>& p); \
61 static void applyPropertyVisitor(Arcane::properties::IPropertyVisitor* p)
88#define ARCANE_REGISTER_PROPERTY_CLASS(aclass,a_build_args) \
91 Arcane::properties::IPropertySettingsInfo* \
92 ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsInfo##aclass) (const Arcane::properties::PropertySettingsBuildInfo& sbi) \
94 auto* si = Arcane::properties::PropertySettingsInfo<aclass>::create(sbi,__FILE__,__LINE__); \
97 Arcane::properties::PropertySettingsBuildInfo \
98 ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsBuildInfo##aclass) () \
100 return Arcane::properties::PropertySettingsBuildInfo a_build_args;\
104 applyPropertyVisitor(Arcane::properties::PropertyVisitor<typename aclass :: PropertyInstanceType >& p) \
106 aclass :: _applyPropertyVisitor(p);\
109applyPropertyVisitor(Arcane::properties::IPropertyVisitor* p) \
111 Arcane::properties::GenericPropertyVisitorWrapper<aclass> xp(p);\
112 aclass :: _applyPropertyVisitor(xp); \
114Arcane::properties::PropertySettingsRegisterer ARCANE_EXPORT \
115 ARCANE_JOIN_WITH_LINE(globalPropertySettingsRegisterer##aclass)\
116 (& ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsInfo##aclass),\
117 & ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsBuildInfo##aclass),\
Interface d'un visiteur sur une propriété.
Classe de base d'un visiteur typé sur une propriété.