Colin Stearns / Mbed 2 deprecated dgps

Dependencies:   mbed

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