127a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow//===----------------------------------------------------------------------===// 227a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// 327a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// The LLVM Compiler Infrastructure 427a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// 527a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 627a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// Source Licenses. See LICENSE.TXT for details. 727a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// 827a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow//===----------------------------------------------------------------------===// 927a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 1027a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// dynarray.data 1127a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 1227a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// T* data() noexcept; 1327a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow// const T* data() const noexcept; 1427a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 1527a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 1627a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow#include <__config> 1727a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 1827a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow#if _LIBCPP_STD_VER > 11 1927a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 206b7c2aeb004cc8e499f1a2281c356bee0bfc9061Marshall Clow#include <experimental/dynarray> 2127a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow#include <cassert> 2227a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 2327a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow#include <algorithm> 2427a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow#include <complex> 2527a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow#include <string> 2627a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 276b7c2aeb004cc8e499f1a2281c356bee0bfc9061Marshall Clowusing std::experimental::dynarray; 2827a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 2927a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clowtemplate <class T> 306b7c2aeb004cc8e499f1a2281c356bee0bfc9061Marshall Clowvoid dyn_test_const ( const dynarray<T> &dyn ) { 3127a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow const T *data = dyn.data (); 3227a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow assert ( data != NULL ); 3327a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow assert ( std::equal ( dyn.begin(), dyn.end(), data )); 3427a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow } 3527a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 3627a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clowtemplate <class T> 376b7c2aeb004cc8e499f1a2281c356bee0bfc9061Marshall Clowvoid dyn_test ( dynarray<T> &dyn ) { 3827a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow T *data = dyn.data (); 3927a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow assert ( data != NULL ); 4027a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow assert ( std::equal ( dyn.begin(), dyn.end(), data )); 4127a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow } 4227a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 4327a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 4427a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 4527a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clowtemplate <class T> 4627a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clowvoid test ( const T &val ) { 476b7c2aeb004cc8e499f1a2281c356bee0bfc9061Marshall Clow typedef dynarray<T> dynA; 4827a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 4927a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow dynA d1 ( 4 ); 5027a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow dyn_test ( d1 ); 5127a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow dyn_test_const ( d1 ); 5227a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 5327a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow dynA d2 ( 7, val ); 5427a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow dyn_test ( d2 ); 5527a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow dyn_test_const ( d2 ); 5627a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow } 5727a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow 5827a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clowint main() 5927a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow{ 6027a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow test<int> ( 14 ); 6127a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow test<double> ( 14.0 ); 6227a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow test<std::complex<double>> ( std::complex<double> ( 14, 0 )); 6327a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow test<std::string> ( "fourteen" ); 6427a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow} 6527a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow#else 6627a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clowint main() {} 6727a1c252e3f2c0d1192e1e275ce3489b9f0025f9Marshall Clow#endif 68