home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
mesaaiok.zip
/
source
/
range.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1995-10-15
|
2KB
|
93 lines
#include "range.h"
#include <string.h>
#include <stdlib.h>
Range :: Range(const Address &ul,const Address &lr)
{
count = 1;
_ul = (Address *)malloc(sizeof(Address) * count);
_lr = (Address *)malloc(sizeof(Address) * count);
_ul[0] = ul;
_lr[0] = lr;
}
Range :: Range(const Range &rng)
{
count = rng.count;
_ul = (Address *)malloc(sizeof(Address) * count);
_lr = (Address *)malloc(sizeof(Address) * count);
for (int x = 0; x < count ; x++) {
_ul[x] = rng._ul[x];
_lr[x] = rng._lr[x];
} /* endfor */
}
Range :: ~Range()
{
if (count) {
free(_ul);
free(_lr);
} /* endif */
}
void Range :: getItem(int x, Address &ul, Address & lr) const
{
if (x >= count) {
ul.makeNull();
lr.makeNull();
} else {
ul = _ul[x];
lr = _lr[x];
} /* endif */
}
void Range :: setItem(int x, Address &ul, Address & lr)
{
if (x >= count) {
add(ul,lr);
} else {
ul = _ul[x];
lr = _lr[x];
} /* endif */
}
void Range :: add(Address &ul, Address & lr)
{
count++;
_ul = (Address *)realloc(_ul,sizeof(Address) * count);
_lr = (Address *)realloc(_lr,sizeof(Address) * count);
_ul[count-1] = ul;
_lr[count-1] = lr;
}
Range & Range :: operator = (const Range & rg)
{
count = rg.count;
_ul = (Address *)malloc(sizeof(Address) * count);
_lr = (Address *)malloc(sizeof(Address) * count);
for (int x = 0; x < count ; x++) {
_ul[x] = rg._ul[x];
_lr[x] = rg._lr[x];
} /* endfor */
return *this;
}
void Range :: zap()
{
if (count) {
free(_ul);
free(_lr);
count = 0;
_ul = NULL;
_lr = NULL;
} /* endif */
}