x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
concept_checks.hpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\multi_array\concept_checks.hpp
旋转
特效
属性
历史版本
// Copyright 2002 The Trustees of Indiana University. // Use, modification and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // Boost.MultiArray Library // Authors: Ronald Garcia // Jeremy Siek // Andrew Lumsdaine // See http://www.boost.org/libs/multi_array for documentation. #ifndef BOOST_MULTI_ARRAY_CONCEPT_CHECKS_RG110101_HPP #define BOOST_MULTI_ARRAY_CONCEPT_CHECKS_RG110101_HPP // // concept-checks.hpp - Checks out Const MultiArray and MultiArray // concepts // #include "boost/concept_check.hpp" #include "boost/iterator/iterator_concepts.hpp" namespace boost { namespace detail { namespace multi_array { // // idgen_helper - // This is a helper for generating index_gen instantiations with // the right type in order to test the call to // operator[](index_gen). Since one would normally write: // A[ indices[range1][range2] ]; // or // B[ indices[index1][index2][range1] ]; // idgen helper allows us to generate the "indices" type by // creating it through recursive calls. template
struct idgen_helper { template
static void call(Array& a, const IdxGen& idgen, Call_Type c) { typedef typename Array::index_range index_range; typedef typename Array::index index; idgen_helper
::call(a,idgen[c],c); } }; template <> struct idgen_helper<0> { template
static void call(Array& a, const IdxGen& idgen, Call_Type) { typedef typename Array::index_range index_range; typedef typename Array::index index; a[ idgen ]; } }; template
struct ConstMultiArrayConcept { void constraints() { // function_requires< CopyConstructibleConcept
>(); function_requires< boost_concepts::ForwardTraversalConcept
>(); function_requires< boost_concepts::ReadableIteratorConcept
>(); function_requires< boost_concepts::ForwardTraversalConcept
>(); function_requires< boost_concepts::ReadableIteratorConcept
>(); // RG - a( CollectionArchetype) when available... a[ id ]; // Test slicing, keeping only the first dimension, losing the rest idgen_helper
::call(a,idgen[range],id); // Test slicing, keeping all dimensions. idgen_helper
::call(a,idgen[range],range); st = a.size(); st = a.num_dimensions(); st = Array::dimensionality; st = a.num_elements(); stp = a.shape(); idp = a.strides(); idp = a.index_bases(); cit = a.begin(); cit = a.end(); crit = a.rbegin(); crit = a.rend(); eltp = a.origin(); } typedef typename Array::value_type value_type; typedef typename Array::reference reference; typedef typename Array::const_reference const_reference; typedef typename Array::size_type size_type; typedef typename Array::difference_type difference_type; typedef typename Array::iterator iterator; typedef typename Array::const_iterator const_iterator; typedef typename Array::reverse_iterator reverse_iterator; typedef typename Array::const_reverse_iterator const_reverse_iterator; typedef typename Array::element element; typedef typename Array::index index; typedef typename Array::index_gen index_gen; typedef typename Array::index_range index_range; typedef typename Array::extent_gen extent_gen; typedef typename Array::extent_range extent_range; Array a; size_type st; const size_type* stp; index id; const index* idp; const_iterator cit; const_reverse_iterator crit; const element* eltp; index_gen idgen; index_range range; }; template
struct MutableMultiArrayConcept { void constraints() { // function_requires< CopyConstructibleConcept
>(); function_requires< boost_concepts::ForwardTraversalConcept
>(); function_requires< boost_concepts::ReadableIteratorConcept
>(); function_requires< boost_concepts::WritableIteratorConcept
>(); function_requires< boost_concepts::ForwardTraversalConcept
>(); function_requires< boost_concepts::ReadableIteratorConcept
>(); // RG - a( CollectionArchetype) when available... value_type vt = a[ id ]; // Test slicing, keeping only the first dimension, losing the rest idgen_helper
::call(a,idgen[range],id); // Test slicing, keeping all dimensions. idgen_helper
::call(a,idgen[range],range); st = a.size(); st = a.num_dimensions(); st = a.num_elements(); stp = a.shape(); idp = a.strides(); idp = a.index_bases(); it = a.begin(); it = a.end(); rit = a.rbegin(); rit = a.rend(); eltp = a.origin(); const_constraints(a); } void const_constraints(const Array& a) { // value_type vt = a[ id ]; // Test slicing, keeping only the first dimension, losing the rest idgen_helper
::call(a,idgen[range],id); // Test slicing, keeping all dimensions. idgen_helper
::call(a,idgen[range],range); st = a.size(); st = a.num_dimensions(); st = a.num_elements(); stp = a.shape(); idp = a.strides(); idp = a.index_bases(); cit = a.begin(); cit = a.end(); crit = a.rbegin(); crit = a.rend(); eltp = a.origin(); } typedef typename Array::value_type value_type; typedef typename Array::reference reference; typedef typename Array::const_reference const_reference; typedef typename Array::size_type size_type; typedef typename Array::difference_type difference_type; typedef typename Array::iterator iterator; typedef typename Array::const_iterator const_iterator; typedef typename Array::reverse_iterator reverse_iterator; typedef typename Array::const_reverse_iterator const_reverse_iterator; typedef typename Array::element element; typedef typename Array::index index; typedef typename Array::index_gen index_gen; typedef typename Array::index_range index_range; typedef typename Array::extent_gen extent_gen; typedef typename Array::extent_range extent_range; Array a; size_type st; const size_type* stp; index id; const index* idp; iterator it; const_iterator cit; reverse_iterator rit; const_reverse_iterator crit; const element* eltp; index_gen idgen; index_range range; }; } // namespace multi_array } // namespace detail } // namespace boost #endif // BOOST_MULTI_ARRAY_CONCEPT_CHECKS_RG110101_HPP
concept_checks.hpp
网页地址
文件地址
上一页
4/15
下一页
下载
( 7 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.