60 using Teuchos::arrayView;
 
   61 using Teuchos::av_const_cast;
 
   62 using Teuchos::av_reinterpret_cast;
 
   80   Array<int> a = generateArray<int>(
n);
 
   81   ArrayView<int> av = a;
 
   88   ArrayView<const int> av_int1 = 
null;
 
   96   ArrayRCP<const int> arcp_int = arcp<int>(
n);
 
   97   ArrayView<const int> av_int1 = arcp_int();
 
  109   ArrayView<char> av_char = 
null;
 
  118   const int sizeOfInt = 
sizeof(int);
 
  119   const int sizeOfChar = 
sizeof(char);
 
  120   const int num_ints = 
n;
 
  121   const int num_chars = (num_ints*sizeOfInt)/sizeOfChar;
 
  122   out << 
"num_ints = " << num_ints << 
"\n";
 
  123   out << 
"num_chars = " << num_chars << 
"\n";
 
  125   ArrayRCP<char> arcp_char = arcp<char>(num_chars);
 
  129     implicit_ptr_cast<void>(&arcp_char[0]));
 
  130   TEST_EQUALITY(implicit_ptr_cast<void>((&av_int[num_ints-1])+1),
 
  131     implicit_ptr_cast<void>((&arcp_char[num_chars-1])+1));
 
  139   const int sizeOfInt = 
sizeof(int);
 
  140   const int sizeOfChar = 
sizeof(char);
 
  141   const int num_ints = 
n;
 
  142   const int num_chars = (num_ints*sizeOfInt)/sizeOfChar;
 
  143   out << 
"num_ints = " << num_ints << 
"\n";
 
  144   out << 
"num_chars = " << num_chars << 
"\n";
 
  146   ArrayRCP<int> arcp_int = arcp<int>(num_ints);
 
  150     implicit_ptr_cast<void>(&av_char[0]));
 
  151   TEST_EQUALITY(implicit_ptr_cast<void>((&arcp_int[num_ints-1])+1),
 
  152     implicit_ptr_cast<void>((&av_char[num_chars-1])+1));
 
  153   TEST_EQUALITY(implicit_ptr_cast<void>((&arcp_int[num_ints-1])+1),
 
  154     implicit_ptr_cast<void>((&av_char[num_chars-1])+1));
 
  162   const ArrayView<T> av = 
arrayView(a.getRawPtr(), a.size());
 
  171   Array<T> a = generateArray<T>(
n);
 
  172   const ArrayView<T> av = 
arrayView(&a[0], a.size());
 
  179   const ArrayView<T> av_0;
 
  180   const ArrayView<T> av = av_0(0, 0);
 
  187   const ArrayView<T> av_0;
 
  188   const ArrayView<T> av = av_0.view(0, 0);
 
  196   ArrayView<T> view(data, 10);
 
  201   ArrayView<const T> cview = view.getConst();
 
  202   TEST_EQUALITY(cview.getRawPtr(), 
const_cast<const T*
>(data));
 
  205 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 
  206   ArrayRCP<const T> cview_arcp = cview.access_private_arcp();
 
  207   TEST_EQUALITY(cview_arcp.getRawPtr(), 
const_cast<const T*
>(data));
 
  216   T 
const * data = 
new T[10];
 
  217   ArrayView<const T> view(data, 10);
 
  222   ArrayView<const T> cview = view.getConst();
 
  226 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 
  227   ArrayRCP<const T> cview_arcp = cview.access_private_arcp();
 
  240   if (view_inout.
size() == 0 && size == 0) { 
return; }
 
  241 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 
  242   const T &next_to_last = view_inout[offset+size-1];
 
  245   view_inout = arrayView<T>(&view_inout[offset], 
size);
 
  252   ArrayView<T> view(data, 10);
 
  253   resizeRawView(view, 0, 5);
 
  265   Array<T> a = generateArray<T>(
n);
 
  295   typedef typename ArrayView<T>::iterator iter_t;
 
  297   ECHO(Array<T> a = generateArray<T>(
n));
 
  298   ECHO(ArrayView<T> av = a);
 
  299   ECHO(
const iter_t av_begin = av.begin());
 
  300   ECHO(
const iter_t av_end = av.end());
 
  304   ECHO(std::fill(av_begin, av_end, ST::random()));
 
  305   ECHO(Array<T> a2 = generateArray<T>(
n));
 
  306   ECHO(ArrayView<T> av2 = a2);
 
  307   ECHO(std::copy(av.begin(), av.end(), av2.begin()));
 
  319   ArrayView<const T> av1 = arrayView<T>(&t[0], nsize);
 
  348     ArrayRCP<T> ap = 
arcp(
rcp(
new std::vector<T>(
n)));
 
  352   TEST_THROW(av.getRawPtr(), DanglingReferenceError);
 
  353   TEST_THROW(av.data(), DanglingReferenceError);
 
  360 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 
  363 #endif // HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 
  372 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 
  374 #  define DEBUG_UNIT_TEST_GROUP( T ) 
  376 #else // HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 
  378 #  define DEBUG_UNIT_TEST_GROUP( T ) 
  380 #endif // HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 
  383 #define UNIT_TEST_GROUP( T ) \ 
  384   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, arrayView_construct_zero_size, T ) \ 
  385   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, arrayView, T ) \ 
  386   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, null_zero_ArrayView_operator, T ) \ 
  387   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, null_zero_ArrayView_func, T ) \ 
  388   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, raw_ptr_self_view, T ) \ 
  389   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, raw_ptr_self_view_const, T ) \ 
  390   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, resize_raw_ptr_self_view, T ) \ 
  391   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, assignmentOperator, T ) \ 
  392   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, iterators, T ) \ 
  393   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, arrayView_convertToConst, T ) \ 
  394   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, danglingView_std_vector, T ) \ 
  395   TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayView, danglingView_rcp_std_vector, T ) \ 
  396   DEBUG_UNIT_TEST_GROUP( T ) 
Dangling reference error exception class. 
 
RCP< T > rcp(const boost::shared_ptr< T > &sptr)
Conversion function that takes in a boost::shared_ptr object and spits out a Teuchos::RCP object...
 
ArrayView< T > arrayView(T *p, typename ArrayView< T >::size_type size)
Construct a const or non-const view to const or non-const data. 
 
#define TEST_ASSERT(v1)
Assert the given statement is true. 
 
#define UNIT_TEST_GROUP(T)
 
#define ECHO(statement)
Echo the given statement before it is executed. 
 
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL(TEST_GROUP, TEST_NAME, TYPE)
Macro for defining a templated unit test with one template parameter. 
 
size_type size() const 
The total number of items in the managed array. 
 
#define TEST_EQUALITY(v1, v2)
Assert the equality of v1 and v2. 
 
#define TEST_THROW(code, ExceptType)
Assert that the statement 'code' throws the exception 'ExceptType' (otherwise the test fails)...
 
ArrayRCP< T > arcp(const RCP< Array< T > > &v)
Wrap an RCP<Array<T> > object as an ArrayRCP<T> object. 
 
#define TEUCHOS_UNIT_TEST(TEST_GROUP, TEST_NAME)
Macro for defining a (non-templated) unit test. 
 
bool is_null(const ArrayRCP< T > &p)
Returns true if p.get()==NULL. 
 
This structure defines some basic traits for a scalar field type. 
 
ArrayView< T2 > av_reinterpret_cast(const ArrayView< T1 > &p1)
Reinterpret cast of underlying ArrayView type from T1* to T2*. 
 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated. 
 
ArrayView< T2 > av_const_cast(const ArrayView< T1 > &p1)
Const cast of underlying ArrayView type from const T* to T*. 
 
#define TEST_EQUALITY_CONST(v1, v2)
Assert the equality of v1 and constant v2. 
 
TypeTo * implicit_ptr_cast(TypeFrom *t)
Perform an implicit cast of pointer types with a pointer being returned. 
 
int size(const Comm< Ordinal > &comm)
Get the number of processes in the communicator. 
 
Teuchos::Array< T > generateArray(const int n_in)
 
TypeTo as(const TypeFrom &t)
Convert from one value type to another. 
 
#define TEST_COMPARE_ARRAYS(a1, a2)
Assert that a1.size()==a2.size() and a[i]==b[i], i=0.... 
 
Smart reference counting pointer class for automatic garbage collection. 
 
bool nonnull(const ArrayRCP< T > &p)
Returns true if p.get()!=NULL. 
 
Reference-counted smart pointer for managing arrays. 
 
Replacement for std::vector that is compatible with the Teuchos Memory Management classes...