107 return GetVariantValueAtImpl(index);
121 SetVariantAtImpl(index, value);
135 MoveVariantAtImpl(index, value);
145 template <
typename U = T>
146 auto GetVariantValueAtImpl(
int index)
const
147 ->
typename std::enable_if<std::is_copy_constructible<U>::value,
Variant>::type
156 template <
typename U = T>
157 auto GetVariantValueAtImpl(
int)
const
158 ->
typename std::enable_if<!std::is_copy_constructible<U>::value, Variant>::type
160 throw std::logic_error(
161 "Type T must be copy constructible to get Variant by value in IListT.");
170 template <
typename U = T>
171 auto SetVariantAtImpl(
int index,
const Variant &value)
172 ->
typename std::enable_if<std::is_same<U, Variant>::value>::type
185 template <
typename U = T>
186 auto SetVariantAtImpl(
int index,
const Variant &value)
187 ->
typename std::enable_if<!std::is_same<U, Variant>::value>::type
189 if (value.IsNull()) {
190 throw std::invalid_argument(
191 "Cannot set a null Variant to a non-Variant IListT.");
193 SetAt(index, value.DynamicCast<
T>());
202 template <
typename U = T>
203 auto MoveVariantAtImpl(
int index, Variant &value)
204 ->
typename std::enable_if<std::is_same<U, Variant>::value>::type
206 SetAt(index, std::move(value));
217 template <
typename U = T>
218 auto MoveVariantAtImpl(
int index, Variant &value)
219 ->
typename std::enable_if<!std::is_same<U, Variant>::value>::type
221 if (value.IsNull()) {
222 throw std::invalid_argument(
223 "Cannot set a null Variant to a non-Variant IListT.");
225 SetAt(index, std::move(value.DynamicCast<
T>()));
类型安全的列表接口,继承IList并提供类型化的元素访问
Definition IList.h:71
virtual int Count() const noexcept=0
返回列表中的元素数量
virtual Variant GetVariantAt(int index) override final
获取指定索引处元素的Variant引用
Definition IList.h:93
virtual std::type_index GetElementType() const noexcept override final
获取列表元素的类型信息
Definition IList.h:82
virtual void SetVariantAt(int index, const Variant &value) override final
设置指定索引处的元素值
Definition IList.h:119
virtual void MoveVariantAt(int index, Variant &value) override final
设置指定索引处的元素值(移动语义)
Definition IList.h:133
virtual ~IListT()=default
虚析构函数
virtual Variant GetVariantAt(int index) const override final
获取指定索引处元素的Variant副本
Definition IList.h:105
非模板列表接口,提供基于Variant的元素访问
Definition IList.h:11
virtual void MoveVariantAt(int index, Variant &value)=0
设置指定索引处的元素值(移动语义)
virtual void SetVariantAt(int index, const Variant &value)=0
设置指定索引处的元素值
virtual ~IList()=default
虚析构函数
virtual Variant GetVariantAt(int index)=0
获取指定索引处元素的Variant引用
virtual int Count() const noexcept=0
返回列表中的元素数量
virtual std::type_index GetElementType() const noexcept=0
获取列表元素的类型信息
值转换器接口
Definition IValueConverter.h:14
通用变体类型容器,类型擦除地持有任意类型对象
Definition Variant.h:36
static Variant MakeRef(Variant &v)
创建一个对另一Variant内部对象的引用Variant(Variant转发重载)
Definition Variant.h:536
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4