1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
/* Copyright (c) 1998, 1999, 2003, 2004 Lance Arsenault, (GNU GPL (v2+))
*/
#include "config.h"
#include <stdlib.h>
#include "PlotList.h"
PlotList *PlotList::first = NULL;
PlotList::PlotList(void)
{
next = NULL;
if(first)
{
PlotList *l = first;
while(l->next)
l = l->next;
l->next = this;
}
else
first = this;
x = y = NULL;
numPlots = 0;
index = 0;
}
void PlotList::add(int X, int Y)
{
numPlots++;
x = (int *) realloc(x, sizeof(int)*numPlots);
y = (int *) realloc(y, sizeof(int)*numPlots);
x[numPlots-1] = X;
y[numPlots-1] = Y;
}
void PlotList::rewind(void)
{
index = 0;
}
void PlotList::get(int &X, int &Y)
{
X = x[index];
Y = y[index];
index++;
}
PlotList::~PlotList(void)
{
if(x)
free(x);
if(y)
free(y);
PlotList *l = first, *prev = NULL;
for(;l;l = l->next)
{
if(this == l)
break;
prev = l;
}
if(l) // this == l
{
if(prev)
prev->next = next;
else // this == first
first = next;
}
}
|