12#ifndef ARCANE_UTILS_PROPERTYDECLARATIONS_H
13#define ARCANE_UTILS_PROPERTYDECLARATIONS_H
22#include "arcane/utils/String.h"
32namespace Arcane::properties
38class IPropertyVisitor;
42class GenericPropertyVisitorWrapper;
64#define ARCANE_DECLARE_PROPERTY_CLASS(class_name) \
66 using PropertyInstanceType = class_name; \
67 static const char* propertyClassName() { return #class_name; }\
68 template<typename V> static void _applyPropertyVisitor(V& visitor);\
69 static void applyPropertyVisitor(Arcane::properties::PropertyVisitor<class_name>& p); \
70 static void applyPropertyVisitor(Arcane::properties::IPropertyVisitor* p)
97#define ARCANE_REGISTER_PROPERTY_CLASS(aclass,a_build_args) \
100 Arcane::properties::IPropertySettingsInfo* \
101 ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsInfo##aclass) (const Arcane::properties::PropertySettingsBuildInfo& sbi) \
103 auto* si = Arcane::properties::PropertySettingsInfo<aclass>::create(sbi,__FILE__,__LINE__); \
106 Arcane::properties::PropertySettingsBuildInfo \
107 ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsBuildInfo##aclass) () \
109 return Arcane::properties::PropertySettingsBuildInfo a_build_args;\
113 applyPropertyVisitor(Arcane::properties::PropertyVisitor<typename aclass :: PropertyInstanceType >& p) \
115 aclass :: _applyPropertyVisitor(p);\
118applyPropertyVisitor(Arcane::properties::IPropertyVisitor* p) \
120 Arcane::properties::GenericPropertyVisitorWrapper<aclass> xp(p);\
121 aclass :: _applyPropertyVisitor(xp); \
123Arcane::properties::PropertySettingsRegisterer ARCANE_EXPORT \
124 ARCANE_JOIN_WITH_LINE(globalPropertySettingsRegisterer##aclass)\
125 (& ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsInfo##aclass),\
126 & ARCANE_JOIN_WITH_LINE(arcaneCreatePropertySettingsBuildInfo##aclass),\
Déclarations des types utilisés dans Arcane.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-