factor/vm/generic_arrays.hpp

23 lines
393 B
C++
Raw Normal View History

2009-05-04 02:46:13 -04:00
namespace factor
{
2009-05-04 05:50:24 -04:00
template<typename T> cell array_capacity(T *array)
2009-05-02 05:43:58 -04:00
{
#ifdef FACTOR_DEBUG
2009-05-04 05:50:24 -04:00
assert(array->h.hi_tag() == T::type_number);
2009-05-02 05:43:58 -04:00
#endif
return array->capacity >> TAG_BITS;
}
2009-05-04 05:50:24 -04:00
template <typename T> cell array_size(cell capacity)
2009-05-02 05:43:58 -04:00
{
return sizeof(T) + capacity * T::element_size;
}
2009-05-04 05:50:24 -04:00
template <typename T> cell array_size(T *array)
2009-05-02 05:43:58 -04:00
{
return array_size<T>(array_capacity(array));
}
2009-05-04 02:46:13 -04:00
}