Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: handle/dataLocation.cpp
- Revision:
- 6:f0248eb6714d
- Parent:
- 5:eef5ea6a9916
--- a/handle/dataLocation.cpp Thu Apr 03 15:56:05 2014 +0000 +++ b/handle/dataLocation.cpp Thu Apr 03 16:27:23 2014 +0000 @@ -1,39 +1,25 @@ - - -DataLocation* LocHolder::locs=NULL; -DataLocation* LocHolder::targ=NULL; -DataLocation* LocHolder::base=NULL; - -unsigned int LocHolder::headLocs=0; -unsigned int LocHolder::headTarg=0; -unsigned int LocHolder::headBase=0; - -unsigned int LocHolder::sizeLocs=0; -unsigned int LocHolder::sizeTarg=0; -unsigned int LocHolder::sizeBase=0; +#include "dataLocation.h" DataLocation* LocHolder::get(LHType type){ if(type==LHType_locs){ - if(locs==NULL)locs=new DataLocation[MAXNUMLOCS]; return locs; }else if(type==LHType_targ){ - if(targ==NULL)targ=new DataLocation[MAXNUMLOCS]; return targ; }else if(type==LHType_base){ - if(base==NULL)base=new DataLocation[MAXNUMLOCS]; return base; } -} - -unsigned int LocHolder::getRealIndex(int index,int offset=0){ - return (index+offset)%MAXNUMLOCS; + return base; } -DataLocation& LocHolder::getC(LHType type,int offset=0){ - return get(type)[getRealIndex(headLocs,offset)]; +unsigned int LocHolder::getRealIndex(LHType type,int index,int offset,bool useSize){ + return (index+offset)%(useSize?getI(type,LHIType_size):MAXNUMLOCS); } -unsigned int& getI(LHType type,LHIType indexType=LHIType_head){ +DataLocation& LocHolder::getC(LHType type,int offset){ + return get(type)[getRealIndex(type,offset)]; +} + +unsigned int& LocHolder::getI(LHType type,LHIType indexType){ if(indexType==LHIType_head){ // Grab proper header if(type==LHType_locs){return headLocs;}else if(type==LHType_targ){return headTarg;}else if(type==LHType_base){return headBase;} @@ -41,10 +27,17 @@ // Grab proper size if(type==LHType_locs){return sizeLocs;}else if(type==LHType_targ){return sizeTarg;}else if(type==LHType_base){return sizeBase;} } + return headLocs; } -void inc(LHType type,int amount=1){ +void LocHolder::inc(LHType type,int amount,bool abs){ unsigned int& index=getI(type); - index=(index+amount)%getI(type,LHIType_size); + index=getRealIndex(type,(abs?0:index),amount);//((abs?0:index)+amount)%getI(type,LHIType_size); getI(type)=index; +} + +void LocHolder::add(LHType type,DataLocation newLoc){ + getI(type)=getI(type,LHIType_size); + getI(type,LHIType_size)++; + getC(type)=newLoc; } \ No newline at end of file