Loading...
Searching...
No Matches
bsdf_attribute.h
Go to the documentation of this file.
1#ifndef _BBM_BSDF_ATTRIBUTE_CONCEPT_H_
2#define _BBM_BSDF_ATTRIBUTE_CONCEPT_H_
3
6
7/************************************************************************/
8/*! \file bsdf_attribute.h
9
10 \brief bsdf attribute contract
11*************************************************************************/
12
13namespace bbm {
14 namespace concepts {
15
16 /********************************************************************/
17 /*! \brief bsdf_attribute_property concept
18
19 Each bsdf attribute requires:
20 - to be a attribute_property
21 - contain a bsdf_attr flag
22 - cotnain a default value static function
23 - contain a lower bound static function
24 - contain an upper bound static function
25 *********************************************************************/
26 template<typename PROP>
27 concept bsdf_attribute_property = requires
28 {
30 PROP::default_value();
31 PROP::upper_bound();
32 PROP::lower_bound();
33 PROP::flag;
34 requires std::same_as<std::decay_t<decltype(PROP::flag)>, bsdf_attr>;
35 };
36
37 /********************************************************************/
38 /*! \brief bsdf_attribute
39
40 Meets:
41 + concepts::attribute<T>
42 + concepts::bsdf_attribute_property<T::type>
43 *********************************************************************/
44 template<typename T>
46
47 } // end concepts namespace
48} // end bbm namespace
49
50#endif /* _BBM_BSDF_ATTRIBUTE_CONCEPT_H_ */
Flags to mark properties of a bsdf's attribute.
attribute_property concept
Definition: attribute.h:22
attribute concept
Definition: attribute.h:39
bsdf_attribute_property concept
Definition: bsdf_attribute.h:27
bsdf_attribute
Definition: bsdf_attribute.h:45
attribute and attribute_property contracts
Definition: aggregatebsdf.h:29
bsdf_attr
Attribute Property Flags.
Definition: bsdf_attr_flag.h:17