2016-12-19 13:58:12 +00:00
|
|
|
//============================================================================
|
|
|
|
// Copyright (c) Kitware, Inc.
|
|
|
|
// All rights reserved.
|
|
|
|
// See LICENSE.txt for details.
|
|
|
|
// This software is distributed WITHOUT ANY WARRANTY; without even
|
|
|
|
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
|
|
// PURPOSE. See the above copyright notice for more information.
|
|
|
|
//
|
2017-09-20 21:33:44 +00:00
|
|
|
// Copyright 2014 National Technology & Engineering Solutions of Sandia, LLC (NTESS).
|
2016-12-19 13:58:12 +00:00
|
|
|
// Copyright 2014 UT-Battelle, LLC.
|
|
|
|
// Copyright 2014 Los Alamos National Security.
|
|
|
|
//
|
2017-09-20 21:33:44 +00:00
|
|
|
// Under the terms of Contract DE-NA0003525 with NTESS,
|
2016-12-19 13:58:12 +00:00
|
|
|
// the U.S. Government retains certain rights in this software.
|
|
|
|
//
|
|
|
|
// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National
|
|
|
|
// Laboratory (LANL), the U.S. Government retains certain rights in
|
|
|
|
// this software.
|
|
|
|
//============================================================================
|
|
|
|
|
2017-06-23 13:33:28 +00:00
|
|
|
#include <vtkm/cont/StorageBasic.h>
|
|
|
|
|
|
|
|
#include <limits>
|
|
|
|
|
2017-05-18 14:29:41 +00:00
|
|
|
namespace vtkm
|
|
|
|
{
|
|
|
|
namespace cont
|
|
|
|
{
|
|
|
|
namespace internal
|
|
|
|
{
|
|
|
|
|
2017-08-17 12:43:39 +00:00
|
|
|
template <typename T>
|
|
|
|
Storage<T, vtkm::cont::StorageTagBasic>::Storage()
|
2018-02-09 21:17:39 +00:00
|
|
|
: StorageBasicBase()
|
2017-08-17 12:43:39 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-05-18 14:29:41 +00:00
|
|
|
template <typename T>
|
|
|
|
Storage<T, vtkm::cont::StorageTagBasic>::Storage(const T* array, vtkm::Id numberOfValues)
|
2018-02-09 21:17:39 +00:00
|
|
|
: StorageBasicBase(const_cast<T*>(array), numberOfValues, sizeof(T))
|
2016-12-19 13:58:12 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2018-04-04 15:27:57 +00:00
|
|
|
template <typename T>
|
|
|
|
Storage<T, vtkm::cont::StorageTagBasic>::Storage(const T* array,
|
|
|
|
vtkm::Id numberOfValues,
|
|
|
|
void (*deleteFunction)(void*))
|
|
|
|
: StorageBasicBase(const_cast<T*>(array), numberOfValues, sizeof(T), deleteFunction)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-05-18 14:29:41 +00:00
|
|
|
template <typename T>
|
2018-02-09 21:17:39 +00:00
|
|
|
void Storage<T, vtkm::cont::StorageTagBasic>::Allocate(vtkm::Id numberOfValues)
|
2016-12-19 13:58:12 +00:00
|
|
|
{
|
2018-02-09 21:17:39 +00:00
|
|
|
this->AllocateValues(numberOfValues, sizeof(T));
|
2016-12-19 13:58:12 +00:00
|
|
|
}
|
|
|
|
|
2017-05-18 14:29:41 +00:00
|
|
|
template <typename T>
|
2018-02-09 21:17:39 +00:00
|
|
|
typename Storage<T, vtkm::cont::StorageTagBasic>::PortalType
|
|
|
|
Storage<T, vtkm::cont::StorageTagBasic>::GetPortal()
|
2016-12-19 13:58:12 +00:00
|
|
|
{
|
2018-02-09 21:17:39 +00:00
|
|
|
auto v = static_cast<T*>(this->Array);
|
|
|
|
return PortalType(v, v + this->NumberOfValues);
|
2017-06-23 13:33:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
template <typename T>
|
2018-02-09 21:17:39 +00:00
|
|
|
typename Storage<T, vtkm::cont::StorageTagBasic>::PortalConstType
|
|
|
|
Storage<T, vtkm::cont::StorageTagBasic>::GetPortalConst() const
|
2017-06-23 13:33:28 +00:00
|
|
|
{
|
2018-02-09 21:17:39 +00:00
|
|
|
auto v = static_cast<T*>(this->Array);
|
|
|
|
return PortalConstType(v, v + this->NumberOfValues);
|
2016-12-19 13:58:12 +00:00
|
|
|
}
|
|
|
|
|
2017-05-18 14:29:41 +00:00
|
|
|
template <typename T>
|
2018-02-09 21:17:39 +00:00
|
|
|
T* Storage<T, vtkm::cont::StorageTagBasic>::GetArray()
|
2016-12-19 13:58:12 +00:00
|
|
|
{
|
2018-02-09 21:17:39 +00:00
|
|
|
return static_cast<T*>(this->Array);
|
2017-06-23 13:33:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
template <typename T>
|
2018-02-09 21:17:39 +00:00
|
|
|
const T* Storage<T, vtkm::cont::StorageTagBasic>::GetArray() const
|
2017-06-23 13:33:28 +00:00
|
|
|
{
|
2018-02-09 21:17:39 +00:00
|
|
|
return static_cast<T*>(this->Array);
|
2016-12-19 13:58:12 +00:00
|
|
|
}
|
|
|
|
|
2017-05-18 14:29:41 +00:00
|
|
|
template <typename T>
|
2016-12-19 13:58:12 +00:00
|
|
|
T* Storage<T, vtkm::cont::StorageTagBasic>::StealArray()
|
|
|
|
{
|
2018-04-04 15:27:57 +00:00
|
|
|
this->DeleteFunction = nullptr;
|
2018-02-09 21:17:39 +00:00
|
|
|
return static_cast<T*>(this->Array);
|
2016-12-19 13:58:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace internal
|
|
|
|
}
|
|
|
|
} // namespace vtkm::cont
|