blob: 6efc32ea9057a80135dc032029bd4c66c5e44a77 [file] [log] [blame]
#include "CimIterator.h"
#include "CimClass.h"
#include "CimInstance.h"
#include "CimString.h"
CimcIterator::CimcIterator()
{
inst=NULL;
cls=NULL;
}
void CimcIterator::set(CimcClass *cl, char* pn, char* mn, int c, iType t)
{
cls=new CimClass(cl->getEnc());
inst=NULL;
type=t;
next=0;
count=c;
pName=pn;
mName=mn;
}
void CimcIterator::set(CimcInstance *i, char* pn, char* mn, int c, iType t)
{
inst=new CimInstance(i->getEnc());
cls=NULL;
type=t;
next=0;
count=c;
pName=pn;
mName=mn;
}
CimcIterator::~CimcIterator() {
// fprintf(stderr,"--- deleting iterator\n");
if (cls) delete cls;
else if (inst) delete inst;
}
int CimcIterator::hasNext()
{
return count>next;
}
CimData CimcIterator::getNext(CimString **name)
{
if (!hasNext()) { }
switch (type) {
case instProp:
// return (*inst)->getPropertyAt(next++,name);
case instQual:
// return (*inst)->getQualifierAt(next++,name);
case instPropQual:
// return (*inst)->getPropertyQualifierAt(next++,pName,name);
break;
case clsQual:
// return (*cls)->getQualifierAt(next++,name);
case clsProp:
return (*cls)->getPropertyAt(next++,name);
case clsPropQual:
// return inst->getPropertyQualifierAt(next++,name,pName);
case clsMeth:
// return inst->getMethodAt(next++,name)
case clsMethQual:
// return inst->getMethodQualifierAt(next++,name,mName);
case clsMethParm:
// return inst->getMethodParam(next++,name,mName);
case clsMethParmQual:
// return inst->getMethodParamQualifier(next++,name,mName,pName)
;
}
}
CimData CimcIterator::getNext()
{
CimString *name;
CimData d=getNext(&name);
delete name;
return d;
}
unsigned int CimcIterator::getCount()
{
return count;
}