23#ifndef _SEFRAMEWORK_SOURCE_SOURCEINTERFACE_H
24#define _SEFRAMEWORK_SOURCE_SOURCEINTERFACE_H
56 template<
typename PropertyType>
57 const PropertyType&
getProperty(
unsigned int index = 0)
const {
59 return dynamic_cast<const PropertyType&
>(
getProperty(PropertyId::create<PropertyType>(index)));
63 template<
typename PropertyType,
typename ... Args>
66 static_assert(
std::is_constructible<PropertyType, Args...>::value,
"PropertyType must be constructible from args");
68 PropertyId::create<PropertyType>(index));
71 template<
typename PropertyType,
typename ... Args>
73 setIndexedProperty<PropertyType>(0, std::forward<Args>(args)...);