blob: ae054e96b410be865d0c9cd4faca0699176fca9a [file] [log] [blame]
//#########################################################################################################################################
// Copyright 2004, Eran Guendelman.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#########################################################################################################################################
#include "TRIANGULATED_SURFACE_LIST.h"
#include "TRIANGULATED_SURFACE.h"
using namespace PhysBAM;
template class TRIANGULATED_SURFACE_LIST<float>;
template class TRIANGULATED_SURFACE_LIST<double>;
template void TRIANGULATED_SURFACE_LIST<float>::Read<float> (const std::string& prefix, const int frame);
template void TRIANGULATED_SURFACE_LIST<double>::Read<double> (const std::string& prefix, const int frame);
template void TRIANGULATED_SURFACE_LIST<double>::Read<float> (const std::string& prefix, const int frame);
template void TRIANGULATED_SURFACE_LIST<float>::Write<float> (const std::string& prefix, const int frame) const;
template void TRIANGULATED_SURFACE_LIST<double>::Write<double> (const std::string& prefix, const int frame) const;
template void TRIANGULATED_SURFACE_LIST<double>::Write<float> (const std::string& prefix, const int frame) const;
//#####################################################################
// Function Read
//#####################################################################
template<class T> template<class RW> void TRIANGULATED_SURFACE_LIST<T>::
Read (const std::string& prefix, const int frame)
{
LIST_ARRAY<int> needs_init;
DYNAMIC_LIST<TRIANGULATED_SURFACE<T>*>::template Read<RW> (prefix, frame, needs_init);
for (int i = 1; i <= needs_init.m; i++)
{
int id = needs_init (i), index = id_to_index_map (id);
assert (index);
TRIANGULATED_SURFACE<T>* triangulated_surface = 0;
FILE_UTILITIES::Create_From_File<RW> (STRING_UTILITIES::string_sprintf ("%s%d.tri", prefix.c_str(), id), triangulated_surface);
array (index) = triangulated_surface;
}
}
//#####################################################################
// Function Write
//#####################################################################
template<class T> template <class RW> void TRIANGULATED_SURFACE_LIST<T>::
Write (const std::string& prefix, const int frame) const
{
DYNAMIC_LIST<TRIANGULATED_SURFACE<T>*>::template Write<RW> (prefix, frame);
for (int i = 1; i <= needs_write.m; i++)
{
int id = needs_write (i), index = id_to_index_map (id);
assert (index);
FILE_UTILITIES::Write_To_File<RW> (STRING_UTILITIES::string_sprintf ("%s%d.tri", prefix.c_str(), id), *array (index));
}
needs_write.Reset_Current_Size_To_Zero();
}
//#####################################################################
// Function Destroy_Element
//#####################################################################
template<class T> void TRIANGULATED_SURFACE_LIST<T>::
Destroy_Element (TRIANGULATED_SURFACE<T>*& triangulated_surface, const int id)
{
triangulated_surface->Destroy_Data();
delete triangulated_surface;
triangulated_surface = 0;
}
//#####################################################################