Files
epics-base/src/gdd/gddArray.cc
2002-07-15 20:42:22 +00:00

104 lines
2.1 KiB
C++

/*************************************************************************\
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
* National Laboratory.
* Copyright (c) 2002 The Regents of the University of California, as
* Operator of Los Alamos National Laboratory.
* EPICS BASE Versions 3.13.7
* and higher are distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
// Author: Jim Kowalkowski
// Date: 3/97
//
// $Id$
#define epicsExportSharedSymbols
#include "gdd.h"
// ----------------------The gddAtomic functions-------------------------
gddAtomic::gddAtomic(int app, aitEnum prim, int dimen, ...):
gdd(app,prim,dimen)
{
va_list ap;
int i;
aitIndex val;
va_start(ap,dimen);
for(i=0;i<dimen;i++)
{
val=va_arg(ap,aitUint32);
bounds[i].set(0,val);
}
va_end(ap);
}
gddStatus gddAtomic::getBoundingBoxSize(aitUint32* b) const
{
unsigned i;
gddStatus rc=0;
if(dimension()>0)
for(i=0;i<dimension();i++) b[i]=bounds[i].size();
else
{
gddAutoPrint("gddAtomic::getBoundingBoxSize()",gddErrorOutOfBounds);
rc=gddErrorOutOfBounds;
}
return rc;
}
gddStatus gddAtomic::setBoundingBoxSize(const aitUint32* const b)
{
unsigned i;
gddStatus rc=0;
if(dimension()>0)
for(i=0;i<dimension();i++) bounds[i].setSize(b[i]);
else
{
gddAutoPrint("gddAtomic::setBoundingBoxSize()",gddErrorOutOfBounds);
rc=gddErrorOutOfBounds;
}
return rc;
}
gddStatus gddAtomic::getBoundingBoxOrigin(aitUint32* b) const
{
unsigned i;
gddStatus rc=0;
if(dimension()>0)
for(i=0;i<dimension();i++) b[i]=bounds[i].first();
else
{
gddAutoPrint("gddAtomic::getBoundingBoxOrigin()",gddErrorOutOfBounds);
rc=gddErrorOutOfBounds;
}
return rc;
}
gddStatus gddAtomic::setBoundingBoxOrigin(const aitUint32* const b)
{
unsigned i;
gddStatus rc=0;
if(dimension()>0)
for(i=0;i<dimension();i++) bounds[i].setFirst(b[i]);
else
{
gddAutoPrint("gddAtomic::setBoundingBoxOrigin",gddErrorOutOfBounds);
rc=gddErrorOutOfBounds;
}
return rc;
}