diff --git a/CMake b/CMake index dc631711..e3813029 160000 --- a/CMake +++ b/CMake @@ -1 +1 @@ -Subproject commit dc631711afd21da37675a348df9ee2fcb2ef7fb9 +Subproject commit e381302963488712abc0305477e76025af74319e diff --git a/CMakeLists.txt b/CMakeLists.txt index e0e9bf1e..0477fd28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,7 +102,6 @@ if( MSVC ) string( REGEX REPLACE "/W[0-4]" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" ) string( REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" ) string( REGEX REPLACE "/Zm[0-9]*" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" ) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zm300" ) add_definitions( -D_CRT_SECURE_NO_WARNINGS ) endif() diff --git a/include/ShaderWriter/BaseTypes/ArithmeticValue.hpp b/include/ShaderWriter/BaseTypes/ArithmeticValue.hpp index e6f0b0a6..519182a4 100644 --- a/include/ShaderWriter/BaseTypes/ArithmeticValue.hpp +++ b/include/ShaderWriter/BaseTypes/ArithmeticValue.hpp @@ -13,7 +13,7 @@ namespace sdw struct ArithmeticValue : public Value { - SDW_DeclValue( ArithmeticValue ); + SDW_DeclValue( , ArithmeticValue ); ArithmeticValue( ShaderWriter & writer , expr::ExprPtr expr diff --git a/include/ShaderWriter/BaseTypes/Array.hpp b/include/ShaderWriter/BaseTypes/Array.hpp index 9760de1f..19287214 100644 --- a/include/ShaderWriter/BaseTypes/Array.hpp +++ b/include/ShaderWriter/BaseTypes/Array.hpp @@ -13,7 +13,7 @@ namespace sdw struct Array : public Value { - SDW_DeclValue( Array ); + SDW_DeclValue( , Array ); Array( ShaderWriter & writer , expr::ExprPtr expr diff --git a/include/ShaderWriter/BaseTypes/Boolean.hpp b/include/ShaderWriter/BaseTypes/Boolean.hpp index 2a05cd6b..080d5498 100644 --- a/include/ShaderWriter/BaseTypes/Boolean.hpp +++ b/include/ShaderWriter/BaseTypes/Boolean.hpp @@ -12,7 +12,7 @@ namespace sdw struct Boolean : public Value { - SDW_DeclValue( Boolean ); + SDW_DeclValue( SDW_INL_API, Boolean ); SDW_API Boolean( ShaderWriter & writer , expr::ExprPtr expr diff --git a/include/ShaderWriter/BaseTypes/CallableData.hpp b/include/ShaderWriter/BaseTypes/CallableData.hpp index 16d1991e..b1ef6bf0 100644 --- a/include/ShaderWriter/BaseTypes/CallableData.hpp +++ b/include/ShaderWriter/BaseTypes/CallableData.hpp @@ -42,7 +42,7 @@ namespace sdw struct CallableDataBaseT : public ValueT { - SDW_DeclValue( CallableDataBaseT ); + SDW_DeclValue( , CallableDataBaseT ); template< typename ... ParamsT > CallableDataBaseT( ShaderWriter & writer diff --git a/include/ShaderWriter/BaseTypes/CombinedImage.hpp b/include/ShaderWriter/BaseTypes/CombinedImage.hpp index 5de01c97..939023ce 100644 --- a/include/ShaderWriter/BaseTypes/CombinedImage.hpp +++ b/include/ShaderWriter/BaseTypes/CombinedImage.hpp @@ -120,7 +120,7 @@ namespace sdw struct CombinedImage : public Value { - SDW_DeclValue( CombinedImage ); + SDW_DeclValue( SDW_INL_API, CombinedImage ); SDW_API CombinedImage( ShaderWriter & writer , expr::ExprPtr expr @@ -138,7 +138,7 @@ namespace sdw struct CombinedImageFuncsT : public CombinedImage { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); CombinedImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -154,7 +154,7 @@ namespace sdw struct CombinedImageT : public combinedSmplImg::CombinedImageFuncsT< FormatT, DimT, ArrayedT, MsT, DepthT > { - SDW_DeclValue( CombinedImageT ); + SDW_DeclValue( , CombinedImageT ); static constexpr ast::type::ImageFormat Format = FormatT; static constexpr ast::type::ImageDim Dim = DimT; diff --git a/include/ShaderWriter/BaseTypes/CombinedImage.inl b/include/ShaderWriter/BaseTypes/CombinedImage.inl index 38b22196..1b531a4c 100644 --- a/include/ShaderWriter/BaseTypes/CombinedImage.inl +++ b/include/ShaderWriter/BaseTypes/CombinedImage.inl @@ -2716,7 +2716,7 @@ namespace sdw , public GatherOffsetFuncT< FormatT, DimT, ArrayedT, MsT > , public GatherOffsetsFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -2785,7 +2785,7 @@ namespace sdw , public GradProjFuncT< FormatT, DimT, ArrayedT, MsT > , public GradProjOffsetFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -2842,7 +2842,7 @@ namespace sdw , public GradFuncT< FormatT, DimT, ArrayedT, MsT > , public GradOffsetFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -2894,7 +2894,7 @@ namespace sdw , public GatherOffsetFuncT< FormatT, DimT, ArrayedT, MsT > , public GatherOffsetsFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -2942,7 +2942,7 @@ namespace sdw , public GradFuncT< FormatT, DimT, ArrayedT, MsT > , public GatherFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -2990,7 +2990,7 @@ namespace sdw , public GradRefProjFuncT< FormatT, DimT, ArrayedT, MsT > , public GradRefProjOffsetFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleRefFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleRefBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -3054,7 +3054,7 @@ namespace sdw , public GatherRefOffsetFuncT< FormatT, DimT, ArrayedT, MsT > , public GatherRefOffsetsFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleRefFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleRefBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -3109,7 +3109,7 @@ namespace sdw , public GradRefFuncT< FormatT, DimT, ArrayedT, MsT > , public GradRefOffsetFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleRefFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleRefBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -3155,7 +3155,7 @@ namespace sdw , public GatherRefOffsetFuncT< FormatT, DimT, ArrayedT, MsT > , public GatherRefOffsetsFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleRefFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleRefBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -3199,7 +3199,7 @@ namespace sdw , public SampleRefLodFuncT< FormatT, DimT, ArrayedT, MsT > , public GatherRefFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); using SampleRefFuncT< FormatT, DimT, ArrayedT, MsT >::sample; using SampleRefBiasFuncT< FormatT, DimT, ArrayedT, MsT >::sample; @@ -3229,7 +3229,7 @@ namespace sdw , public TexSizeFuncT< FormatT, DimT, ArrayedT, MsT, DepthT > , public FetchFuncT< FormatT, DimT, ArrayedT, MsT > { - SDW_DeclValue( CombinedImageFuncsT ); + SDW_DeclValue( , CombinedImageFuncsT ); CombinedImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr diff --git a/include/ShaderWriter/BaseTypes/HitAttribute.hpp b/include/ShaderWriter/BaseTypes/HitAttribute.hpp index 7b030641..62f4f0ce 100644 --- a/include/ShaderWriter/BaseTypes/HitAttribute.hpp +++ b/include/ShaderWriter/BaseTypes/HitAttribute.hpp @@ -46,7 +46,7 @@ namespace sdw struct HitAttributeT : public ValueT { - SDW_DeclValue( HitAttributeT ); + SDW_DeclValue( , HitAttributeT ); template< typename ... ParamsT > explicit HitAttributeT( ShaderWriter & writer diff --git a/include/ShaderWriter/BaseTypes/IntegerValue.hpp b/include/ShaderWriter/BaseTypes/IntegerValue.hpp index b55c9fff..db284f86 100644 --- a/include/ShaderWriter/BaseTypes/IntegerValue.hpp +++ b/include/ShaderWriter/BaseTypes/IntegerValue.hpp @@ -14,7 +14,7 @@ namespace sdw struct IntegerValue : public Value { - SDW_DeclValue( IntegerValue ); + SDW_DeclValue( , IntegerValue ); IntegerValue( ShaderWriter & writer , expr::ExprPtr expr diff --git a/include/ShaderWriter/BaseTypes/RayPayload.hpp b/include/ShaderWriter/BaseTypes/RayPayload.hpp index 71ffea6f..348d3b5e 100644 --- a/include/ShaderWriter/BaseTypes/RayPayload.hpp +++ b/include/ShaderWriter/BaseTypes/RayPayload.hpp @@ -49,7 +49,7 @@ namespace sdw struct RayPayloadBaseT : public ValueT { - SDW_DeclValue( RayPayloadBaseT ); + SDW_DeclValue( , RayPayloadBaseT ); template< typename ... ParamsT > RayPayloadBaseT( ShaderWriter & writer diff --git a/include/ShaderWriter/BaseTypes/SampledImage.hpp b/include/ShaderWriter/BaseTypes/SampledImage.hpp index 75f00d51..8458b5e0 100644 --- a/include/ShaderWriter/BaseTypes/SampledImage.hpp +++ b/include/ShaderWriter/BaseTypes/SampledImage.hpp @@ -11,7 +11,7 @@ namespace sdw struct SampledImage : public Value { - SDW_DeclValue( SampledImage ); + SDW_DeclValue( SDW_INL_API, SampledImage ); SDW_API SampledImage( ShaderWriter & writer , expr::ExprPtr expr @@ -25,7 +25,7 @@ namespace sdw struct SampledImageT : public SampledImage { - SDW_DeclValue( SampledImageT ); + SDW_DeclValue( , SampledImageT ); static constexpr ast::type::ImageFormat Format = FormatT; static constexpr ast::type::ImageDim Dim = DimT; diff --git a/include/ShaderWriter/BaseTypes/Sampler.hpp b/include/ShaderWriter/BaseTypes/Sampler.hpp index 40ea1c59..06ca701a 100644 --- a/include/ShaderWriter/BaseTypes/Sampler.hpp +++ b/include/ShaderWriter/BaseTypes/Sampler.hpp @@ -11,7 +11,7 @@ namespace sdw struct Sampler : public Value { - SDW_DeclValue( Sampler ); + SDW_DeclValue( SDW_INL_API, Sampler ); SDW_API Sampler( ShaderWriter & writer , expr::ExprPtr expr @@ -28,7 +28,7 @@ namespace sdw struct SamplerT : public Sampler { - SDW_DeclValue( SamplerT ); + SDW_DeclValue( , SamplerT ); static constexpr bool Comparison = ComparisonT; diff --git a/include/ShaderWriter/BaseTypes/StorageImage.hpp b/include/ShaderWriter/BaseTypes/StorageImage.hpp index d26af26f..3ae407d0 100644 --- a/include/ShaderWriter/BaseTypes/StorageImage.hpp +++ b/include/ShaderWriter/BaseTypes/StorageImage.hpp @@ -23,7 +23,7 @@ namespace sdw struct StorageImage : public Value { - SDW_DeclValue( StorageImage ); + SDW_DeclValue( SDW_INL_API, StorageImage ); SDW_API StorageImage( ShaderWriter & writer , expr::ExprPtr expr @@ -41,7 +41,7 @@ namespace sdw struct StorageImageFuncsT : public StorageImage { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -57,7 +57,7 @@ namespace sdw struct StorageImageT : public storageImg::StorageImageFuncsT< FormatT, AccessT, DimT, ArrayedT, MsT > { - SDW_DeclValue( StorageImageT ); + SDW_DeclValue( , StorageImageT ); static constexpr ast::type::ImageFormat Format = FormatT; static constexpr ast::type::AccessKind Access = AccessT; diff --git a/include/ShaderWriter/BaseTypes/StorageImage.inl b/include/ShaderWriter/BaseTypes/StorageImage.inl index 8a7e06e9..8f18ed88 100644 --- a/include/ShaderWriter/BaseTypes/StorageImage.inl +++ b/include/ShaderWriter/BaseTypes/StorageImage.inl @@ -1774,7 +1774,7 @@ namespace sdw : public StorageImage , public ImgSizeFuncT< FormatT, AccessT, DimT, ArrayedT, MsT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -1803,7 +1803,7 @@ namespace sdw , public ImgSizeFuncT< FormatT, AccessT, DimT, ArrayedT, MsT > , public ImgStoreFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -1832,7 +1832,7 @@ namespace sdw , public ImgSizeFuncT< FormatT, AccessT, DimT, ArrayedT, MsT > , public ImgLoadFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -1863,7 +1863,7 @@ namespace sdw , public ImgLoadFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgStoreFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -1909,7 +1909,7 @@ namespace sdw , public ImgAtomicAddFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgAtomicExchangeFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -1941,7 +1941,7 @@ namespace sdw , public ImgLoadFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgStoreFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -1980,7 +1980,7 @@ namespace sdw , public ImgAtomicExchangeFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgAtomicCompSwapFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -2009,7 +2009,7 @@ namespace sdw , public ImgSizeFuncT< FormatT, AccessT, DimT, ArrayedT, MsT > , public ImgSamplesFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -2039,7 +2039,7 @@ namespace sdw , public ImgSamplesFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgMsStoreFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -2069,7 +2069,7 @@ namespace sdw , public ImgSamplesFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgMsLoadFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -2101,7 +2101,7 @@ namespace sdw , public ImgMsLoadFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgMsStoreFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -2135,7 +2135,7 @@ namespace sdw , public ImgMsAtomicAddFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgMsAtomicExchangeFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr @@ -2175,7 +2175,7 @@ namespace sdw , public ImgMsAtomicExchangeFuncT< FormatT, AccessT, DimT, ArrayedT > , public ImgMsAtomicCompSwapFuncT< FormatT, AccessT, DimT, ArrayedT > { - SDW_DeclValue( StorageImageFuncsT ); + SDW_DeclValue( , StorageImageFuncsT ); StorageImageFuncsT( ShaderWriter & writer , expr::ExprPtr expr diff --git a/include/ShaderWriter/BaseTypes/Void.hpp b/include/ShaderWriter/BaseTypes/Void.hpp index 3c970f2c..0a471673 100644 --- a/include/ShaderWriter/BaseTypes/Void.hpp +++ b/include/ShaderWriter/BaseTypes/Void.hpp @@ -20,9 +20,9 @@ namespace sdw // Intently non explicit SDW_API Void( ReturnWrapperT< Void > const & rhs ); - ~Void()override = default; - Void( Void && rhs ) = default; - Void( Void const & rhs ) = default; + SDW_INL_API ~Void()override = default; + SDW_INL_API Void( Void && rhs ) = default; + SDW_INL_API Void( Void const & rhs ) = default; SDW_API static ast::type::TypePtr makeType( ast::type::TypesCache & cache ); }; diff --git a/include/ShaderWriter/CompositeTypes/RayDesc.hpp b/include/ShaderWriter/CompositeTypes/RayDesc.hpp index 096c95d2..7dd5af3e 100644 --- a/include/ShaderWriter/CompositeTypes/RayDesc.hpp +++ b/include/ShaderWriter/CompositeTypes/RayDesc.hpp @@ -17,7 +17,7 @@ namespace sdw : public StructInstance { public: - SDW_DeclStructInstance( RayDesc ); + SDW_DeclStructInstance( SDW_INL_API, RayDesc ); SDW_API RayDesc( ShaderWriter & writer , expr::ExprPtr expr diff --git a/include/ShaderWriter/CompositeTypes/StructInstance.hpp b/include/ShaderWriter/CompositeTypes/StructInstance.hpp index f2cd9481..b45cf79b 100644 --- a/include/ShaderWriter/CompositeTypes/StructInstance.hpp +++ b/include/ShaderWriter/CompositeTypes/StructInstance.hpp @@ -135,7 +135,7 @@ namespace sdw : public Value { public: - SDW_DeclValue( StructInstance ); + SDW_DeclValue( SDW_INL_API, StructInstance ); SDW_API StructInstance( ShaderWriter & writer , expr::ExprPtr expr @@ -172,7 +172,7 @@ namespace sdw }; } -#define SDW_DeclStructInstance( name )\ +#define SDW_DeclStructInstance( expdecl, name )\ template< typename ... ParamsT >\ name( sdw::StructInstance const & rhs\ , ParamsT && ... params )\ @@ -181,22 +181,22 @@ namespace sdw , rhs.isEnabled() }\ {\ }\ - name( sdw::ReturnWrapperT< name > const & rhs )\ + expdecl name( sdw::ReturnWrapperT< name > const & rhs )\ : name{ findWriterMandat( rhs )\ , makeExpr( findWriterMandat( rhs ), rhs )\ , rhs.isEnabled() }\ {\ }\ - name & operator=( sdw::ReturnWrapperT< name > const & rhs )\ + expdecl name & operator=( sdw::ReturnWrapperT< name > const & rhs )\ {\ sdw::StructInstance::operator=( rhs );\ return *this;\ }\ - name & operator=( name const & rhs ) = default;\ - name & operator=( name && rhs )noexcept = default;\ - name( name const & rhs ) = default;\ - name( name && rhs )noexcept = default;\ - ~name()noexcept override = default + expdecl name & operator=( name const & rhs ) = default;\ + expdecl name & operator=( name && rhs )noexcept = default;\ + expdecl name( name const & rhs ) = default;\ + expdecl name( name && rhs )noexcept = default;\ + expdecl ~name()noexcept override = default #include "StructInstance.inl" #include "StructInstanceHelper.hpp" diff --git a/include/ShaderWriter/MatTypes/Mat2.hpp b/include/ShaderWriter/MatTypes/Mat2.hpp index b36df9f9..f2828cb3 100644 --- a/include/ShaderWriter/MatTypes/Mat2.hpp +++ b/include/ShaderWriter/MatTypes/Mat2.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat2x2T : public Value { - SDW_DeclValue( Mat2x2T ); + SDW_DeclValue( , Mat2x2T ); using ValueType = ValueT; using my_vec = Vec2T< ValueT >; diff --git a/include/ShaderWriter/MatTypes/Mat2x3.hpp b/include/ShaderWriter/MatTypes/Mat2x3.hpp index 13c1715c..62142439 100644 --- a/include/ShaderWriter/MatTypes/Mat2x3.hpp +++ b/include/ShaderWriter/MatTypes/Mat2x3.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat2x3T : public Value { - SDW_DeclValue( Mat2x3T ); + SDW_DeclValue( , Mat2x3T ); using ValueType = ValueT; using my_vec = Vec3T< ValueT >; diff --git a/include/ShaderWriter/MatTypes/Mat2x4.hpp b/include/ShaderWriter/MatTypes/Mat2x4.hpp index cd86fc85..a0d3e32d 100644 --- a/include/ShaderWriter/MatTypes/Mat2x4.hpp +++ b/include/ShaderWriter/MatTypes/Mat2x4.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat2x4T : public Value { - SDW_DeclValue( Mat2x4T ); + SDW_DeclValue( , Mat2x4T ); using ValueType = ValueT; using my_vec = Vec4T< ValueT >; diff --git a/include/ShaderWriter/MatTypes/Mat3.hpp b/include/ShaderWriter/MatTypes/Mat3.hpp index a3fc4377..9171a8d4 100644 --- a/include/ShaderWriter/MatTypes/Mat3.hpp +++ b/include/ShaderWriter/MatTypes/Mat3.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat3x3T : public Value { - SDW_DeclValue( Mat3x3T ); + SDW_DeclValue( , Mat3x3T ); using ValueType = ValueT; using my_vec = Vec3T< ValueT >; diff --git a/include/ShaderWriter/MatTypes/Mat3x2.hpp b/include/ShaderWriter/MatTypes/Mat3x2.hpp index ea042d8e..8990e132 100644 --- a/include/ShaderWriter/MatTypes/Mat3x2.hpp +++ b/include/ShaderWriter/MatTypes/Mat3x2.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat3x2T : public Value { - SDW_DeclValue( Mat3x2T ); + SDW_DeclValue( , Mat3x2T ); using ValueType = ValueT; using my_vec = Vec2T< ValueT >; diff --git a/include/ShaderWriter/MatTypes/Mat3x4.hpp b/include/ShaderWriter/MatTypes/Mat3x4.hpp index 4394ff1f..fd8b5d23 100644 --- a/include/ShaderWriter/MatTypes/Mat3x4.hpp +++ b/include/ShaderWriter/MatTypes/Mat3x4.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat3x4T : public Value { - SDW_DeclValue( Mat3x4T ); + SDW_DeclValue( , Mat3x4T ); using ValueType = ValueT; using my_vec = Vec4T< ValueT >; diff --git a/include/ShaderWriter/MatTypes/Mat4.hpp b/include/ShaderWriter/MatTypes/Mat4.hpp index 06224239..ba2af904 100644 --- a/include/ShaderWriter/MatTypes/Mat4.hpp +++ b/include/ShaderWriter/MatTypes/Mat4.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat4x4T : public Value { - SDW_DeclValue( Mat4x4T ); + SDW_DeclValue( , Mat4x4T ); using ValueType = ValueT; using my_vec = Vec4T< ValueT >; diff --git a/include/ShaderWriter/MatTypes/Mat4x2.hpp b/include/ShaderWriter/MatTypes/Mat4x2.hpp index 4662f642..ee2ad0f9 100644 --- a/include/ShaderWriter/MatTypes/Mat4x2.hpp +++ b/include/ShaderWriter/MatTypes/Mat4x2.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat4x2T : public Value { - SDW_DeclValue( Mat4x2T ); + SDW_DeclValue( , Mat4x2T ); using ValueType = ValueT; using my_vec = Vec2T< ValueT >; diff --git a/include/ShaderWriter/MatTypes/Mat4x3.hpp b/include/ShaderWriter/MatTypes/Mat4x3.hpp index 2587eb30..56e0d843 100644 --- a/include/ShaderWriter/MatTypes/Mat4x3.hpp +++ b/include/ShaderWriter/MatTypes/Mat4x3.hpp @@ -13,7 +13,7 @@ namespace sdw struct Mat4x3T : public Value { - SDW_DeclValue( Mat4x3T ); + SDW_DeclValue( , Mat4x3T ); using ValueType = ValueT; using my_vec = Vec3T< ValueT >; diff --git a/include/ShaderWriter/ShaderWriterPrerequisites.hpp b/include/ShaderWriter/ShaderWriterPrerequisites.hpp index 2cc3aa41..d5661f3e 100644 --- a/include/ShaderWriter/ShaderWriterPrerequisites.hpp +++ b/include/ShaderWriter/ShaderWriterPrerequisites.hpp @@ -41,14 +41,26 @@ See LICENSE file in root folder #if defined( ShaderWriter_Static ) # define SDW_API +# define SDW_INL_API #elif defined( _WIN32 ) # if defined( ShaderWriter_Exports ) # define SDW_API __declspec( dllexport ) +# if defined( __MINGW32__ ) +# define SDW_INL_API +# else +# define SDW_INL_API __declspec( dllexport ) +# endif # else # define SDW_API __declspec( dllimport ) +# if defined( __MINGW32__ ) +# define SDW_INL_API +# else +# define SDW_INL_API __declspec( dllimport ) +# endif # endif #else # define SDW_API +# define SDW_INL_API #endif namespace sdw diff --git a/include/ShaderWriter/Value.hpp b/include/ShaderWriter/Value.hpp index 2d9b3d4c..35c9b8bf 100644 --- a/include/ShaderWriter/Value.hpp +++ b/include/ShaderWriter/Value.hpp @@ -17,7 +17,7 @@ namespace sdw , expr::ExprPtr expr , bool enabled ); - virtual ~Value() = default; + SDW_API virtual ~Value(); SDW_API Value( Value && rhs )noexcept; SDW_API Value( Value const & rhs ); SDW_API Value & operator=( Value && rhs )noexcept; @@ -26,29 +26,21 @@ namespace sdw SDW_API void updateExpr( expr::ExprPtr expr ); SDW_API ast::ShaderBuilder & getBuilder()const; + SDW_API virtual type::TypePtr getType()const; + SDW_API virtual expr::Expr const * getExpr()const; - virtual type::TypePtr getType()const - { - return m_expr->getType(); - } - - virtual expr::Expr const * getExpr()const - { - return m_expr.get(); - } - - inline ShaderWriter * getWriter()const + ShaderWriter * getWriter()const { return m_writer; } - inline bool isEnabled()const + bool isEnabled()const { return m_enabled; } template< typename OutputT, size_t CountT > - static inline expr::ExprPtr ctorCast( expr::ExprPtr op ) + static expr::ExprPtr ctorCast( expr::ExprPtr op ) { auto result = std::move( op ); @@ -65,7 +57,7 @@ namespace sdw } template< typename OutputT, size_t CountT > - static inline Value ctorCast( Value op ) + static Value ctorCast( Value op ) { return Value{ *op.m_writer , ctorCast< OutputT, CountT >( std::move( op.m_expr ) ) @@ -195,18 +187,18 @@ namespace sdw , CreatorT creator ); } -#define SDW_DeclValue( name )\ - name( name && rhs )noexcept = default;\ - name( name const & rhs ) = default;\ - name & operator=( name && rhs )noexcept = default;\ - name & operator=( name const & rhs ) = default;\ - name( sdw::ReturnWrapperT< name > const & rhs )\ +#define SDW_DeclValue( expdecl, name )\ + expdecl name( name && rhs )noexcept = default;\ + expdecl name( name const & rhs ) = default;\ + expdecl name & operator=( name && rhs )noexcept = default;\ + expdecl name & operator=( name const & rhs ) = default;\ + expdecl name( sdw::ReturnWrapperT< name > const & rhs )\ : name{ findWriterMandat( rhs )\ , makeExpr( findWriterMandat( rhs ), rhs )\ , rhs.isEnabled() }\ {\ }\ - name & operator=( sdw::ReturnWrapperT< name > && rhs )\ + expdecl name & operator=( sdw::ReturnWrapperT< name > && rhs )\ {\ if ( rhs.isEnabled() && this->isEnabled() && this->m_expr && !this->m_expr->isConstant() )\ {\ @@ -219,7 +211,7 @@ namespace sdw }\ return *this;\ }\ - name & operator=( sdw::ReturnWrapperT< name > const & rhs )\ + expdecl name & operator=( sdw::ReturnWrapperT< name > const & rhs )\ {\ if ( rhs.isEnabled() && this->isEnabled() && this->m_expr && !this->m_expr->isConstant() )\ {\ @@ -232,7 +224,7 @@ namespace sdw }\ return *this;\ }\ - ~name()override = default + expdecl ~name()override = default #include "Value.inl" diff --git a/include/ShaderWriter/VecTypes/Vec2.hpp b/include/ShaderWriter/VecTypes/Vec2.hpp index 7495dfee..5d1399fd 100644 --- a/include/ShaderWriter/VecTypes/Vec2.hpp +++ b/include/ShaderWriter/VecTypes/Vec2.hpp @@ -14,7 +14,7 @@ namespace sdw struct Vec2T : public Value { - SDW_DeclValue( Vec2T ); + SDW_DeclValue( , Vec2T ); using ValueType = ValueT; using Vec2Type = Vec2T< ValueT >; diff --git a/include/ShaderWriter/VecTypes/Vec3.hpp b/include/ShaderWriter/VecTypes/Vec3.hpp index 71eed657..8e0c103c 100644 --- a/include/ShaderWriter/VecTypes/Vec3.hpp +++ b/include/ShaderWriter/VecTypes/Vec3.hpp @@ -13,7 +13,7 @@ namespace sdw struct Vec3T : public Value { - SDW_DeclValue( Vec3T ); + SDW_DeclValue( , Vec3T ); using ValueType = ValueT; using Vec2Type = Vec2T< ValueT >; diff --git a/include/ShaderWriter/VecTypes/Vec4.hpp b/include/ShaderWriter/VecTypes/Vec4.hpp index e8db4b56..99f9411d 100644 --- a/include/ShaderWriter/VecTypes/Vec4.hpp +++ b/include/ShaderWriter/VecTypes/Vec4.hpp @@ -13,7 +13,7 @@ namespace sdw struct Vec4T : public Value { - SDW_DeclValue( Vec4T ); + SDW_DeclValue( , Vec4T ); using ValueType = ValueT; using Vec2Type = Vec2T< ValueT >; diff --git a/source/ShaderWriter/Value.cpp b/source/ShaderWriter/Value.cpp index c2164232..915fa47d 100644 --- a/source/ShaderWriter/Value.cpp +++ b/source/ShaderWriter/Value.cpp @@ -18,6 +18,8 @@ namespace sdw { //***************************************************************************************** + Value::~Value() = default; + Value::Value( ShaderWriter & writer , expr::ExprPtr expr , bool enabled ) @@ -96,6 +98,16 @@ namespace sdw return getWriter()->getBuilder(); } + type::TypePtr Value::getType()const + { + return m_expr->getType(); + } + + expr::Expr const * Value::getExpr()const + { + return m_expr.get(); + } + //***************************************************************************************** expr::ExprPtr getDummyExpr( ShaderWriter const & writer