examples/grid/grid2D.hpp
author Christos Mantoulidis <cmad@stanford.edu>
Tue, 04 Aug 2009 13:23:16 -0700
branchdev
changeset 156 f75fb57d2831
parent 5 ee9052408c40
child 179 d15c6d144645
permissions -rw-r--r--
Changed implementation of WeightedRips to store simplex values (max distance between simplices' vertices) as an invisible layer on top of each simplex object, so that the data() field of WeightedRips has been freed for use by the users again.

#include <iostream>
#include <limits>

/* Implementations */

Grid2D::
Grid2D(CoordinateIndex xx, CoordinateIndex yy):
	x(xx), y(yy), data(x*y)
{}

void					
Grid2D::
change_dimensions(CoordinateIndex xx, CoordinateIndex yy)
{
	x = xx; y = yy;
	data.resize(x*y);
}

Grid2D::CoordinateIndex
Grid2D::
seq(CoordinateIndex i, CoordinateIndex j) const
{ 
	// Do not forget to check if less than 0, if Index is made signed --- dangerous
	if (i >= x || j >= y)
		return INVALID_INDEX;

	return i*x + j; 
}

std::ostream&			
Grid2D::
operator<<(std::ostream& out) const
{
	for (Grid2D::CoordinateIndex i = 0; i < xsize(); ++i)
	{
		for (Grid2D::CoordinateIndex j = 0; j < ysize(); ++j)
			std::cout << operator()(i, j) << ' ';
		std::cout << std::endl;
	}
	return out;	
}	

#if 0
using boost::serialization::make_nvp;

template<class Archive>
void 
Grid2D::
save(Archive& ar, version_type ) const
{
	ar << BOOST_SERIALIZATION_NVP(x);
	ar << BOOST_SERIALIZATION_NVP(y);
	ar << make_nvp("data", data);
}

template<class Archive>	
void 
Grid2D::
load(Archive& ar, version_type )
{
	ar >> make_nvp("x", x);
	ar >> make_nvp("y", y);
	ar >> make_nvp("data", data);
}
#endif