Revision 1 -
(download)
(annotate)
Mon Feb 10 17:09:07 2014 UTC
(10 years, 5 months ago)
by agomez File size: 1763 byte(s)
Initial version based on Gadget 2.2.00
#include "livesonareas.h"
#include "errorhandler.h"
#include "gadget.h"
#include "global.h"
LivesOnAreas::LivesOnAreas(const IntVector& Areas) : areas(Areas) {
int i, j, maxim = 0;
if (areas.Size() == 0)
handle.logMessage(LOGFAIL, "Error in input files - found no areas");
for (i = 0; i < areas.Size(); i++)
if (areas[i] > maxim)
maxim = areas[i];
for (i = 0; i < areas.Size(); i++)
for (j = 0; j < areas.Size(); j++)
if ((areas[i] == areas[j]) && (i != j))
handle.logMessage(LOGFAIL, "Error in input files - repeated area", i);
areaConvert.Reset();
areaConvert.resize(maxim + 1, -1);
for (i = 0; i < areas.Size(); i++)
if ((areas[i] >= 0) && (areas[i] <= maxim))
areaConvert[areas[i]] = i;
}
int LivesOnAreas::isInArea(int area) const {
if (0 <= area && area < areaConvert.Size())
return (areaConvert[area] >= 0);
return 0;
}
int LivesOnAreas::areaNum(int area) const {
if (0 <= area && area < areaConvert.Size())
return areaConvert[area];
return -1;
}
void LivesOnAreas::storeAreas(const IntVector& Areas) {
int i, j, maxim = 0;
if (Areas.Size() == 0)
handle.logMessage(LOGFAIL, "Error in input files - found no areas");
areas.Reset();
areas.resize(Areas.Size(), -1);
for (i = 0; i < areas.Size(); i++) {
areas[i] = Areas[i];
if (areas[i] > maxim)
maxim = areas[i];
}
for (i = 0; i < areas.Size(); i++)
for (j = 0; j < areas.Size(); j++)
if ((areas[i] == areas[j]) && (i != j))
handle.logMessage(LOGFAIL, "Error in input files - repeated area", i);
areaConvert.Reset();
areaConvert.resize(maxim + 1, -1);
for (i = 0; i < areas.Size(); i++)
if ((areas[i] >= 0) && (areas[i] <= maxim))
areaConvert[areas[i]] = i;
}