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
56#define ARCANE_DECLARE_PROPERTY_CLASS(class_name) \
59 using PropertyInstanceType = class_name; \
60 static const char* propertyClassName() \
64 template <typename V> static void _applyPropertyVisitor(V& visitor); \
65 static void applyPropertyVisitor(Arcane::properties::PropertyVisitor<class_name>& p); \
66 static void applyPropertyVisitor(Arcane::properties::IPropertyVisitor* p)
94#define ARCANE_REGISTER_PROPERTY_CLASS(aclass, a_build_args) \
97 Arcane::properties::IPropertySettingsInfo* \
98 ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsInfo##aclass)(const Arcane::properties::PropertySettingsBuildInfo& sbi) \
100 auto* si = Arcane::properties::PropertySettingsInfo<aclass>::create(sbi, __FILE__, __LINE__); \
103 Arcane::properties::PropertySettingsBuildInfo \
104 ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsBuildInfo##aclass)() \
106 return Arcane::properties::PropertySettingsBuildInfo a_build_args; \
110 applyPropertyVisitor(Arcane::properties::PropertyVisitor<typename aclass ::PropertyInstanceType>& p) \
112 aclass ::_applyPropertyVisitor(p); \
115 applyPropertyVisitor(Arcane::properties::IPropertyVisitor* p) \
117 Arcane::properties::GenericPropertyVisitorWrapper<aclass> xp(p); \
118 aclass ::_applyPropertyVisitor(xp); \
120 Arcane::properties::PropertySettingsRegisterer ARCANE_EXPORT \
121 ARCANE_JOIN_WITH_LINE(globalPropertySettingsRegisterer##aclass)(&ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsInfo##aclass), \
122 &ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsBuildInfo##aclass), \
Property visitor interface.
Base class of a typed visitor on a property.