Colin Stearns
/
qcControl
QC Control software
Fork of dgps by
handle/dataLocation.cpp@27:db73f8ac6c75, 2014-04-22 (annotated)
- Committer:
- dylanembed123
- Date:
- Tue Apr 22 14:56:03 2014 +0000
- Revision:
- 27:db73f8ac6c75
- Parent:
- 15:e3e03a9df89e
- Child:
- 32:9cb7bc3fc9e0
Add documentation examples to the top of datalocation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dylanembed123 | 9:da906eeac51e | 1 | #include "dataLocation.h" |
dylanembed123 | 7:c75d5e5e6bfc | 2 | |
dylanembed123 | 9:da906eeac51e | 3 | DataLocation* LocHolder::get(LHType type){ |
dylanembed123 | 9:da906eeac51e | 4 | if(type==LHType_locs){ |
dylanembed123 | 9:da906eeac51e | 5 | return locs; |
dylanembed123 | 9:da906eeac51e | 6 | }else if(type==LHType_targ){ |
dylanembed123 | 9:da906eeac51e | 7 | return targ; |
dylanembed123 | 9:da906eeac51e | 8 | }else if(type==LHType_base){ |
dylanembed123 | 9:da906eeac51e | 9 | return base; |
dylanembed123 | 9:da906eeac51e | 10 | } |
dylanembed123 | 7:c75d5e5e6bfc | 11 | return base; |
dylanembed123 | 7:c75d5e5e6bfc | 12 | } |
dylanembed123 | 7:c75d5e5e6bfc | 13 | |
dylanembed123 | 9:da906eeac51e | 14 | unsigned int LocHolder::getRealIndex(LHType type,int index,int offset,bool useSize){ |
dylanembed123 | 9:da906eeac51e | 15 | return (index+offset)%(useSize?getI(type,LHIType_size):MAXNUMLOCS); |
dylanembed123 | 9:da906eeac51e | 16 | } |
dylanembed123 | 9:da906eeac51e | 17 | |
dylanembed123 | 9:da906eeac51e | 18 | DataLocation& LocHolder::getC(LHType type,int offset){ |
dylanembed123 | 9:da906eeac51e | 19 | return get(type)[getRealIndex(type,offset)]; |
dylanembed123 | 7:c75d5e5e6bfc | 20 | } |
dylanembed123 | 7:c75d5e5e6bfc | 21 | |
dylanembed123 | 9:da906eeac51e | 22 | unsigned int& LocHolder::getI(LHType type,LHIType indexType){ |
dylanembed123 | 9:da906eeac51e | 23 | if(indexType==LHIType_head){ |
dylanembed123 | 9:da906eeac51e | 24 | // Grab proper header |
dylanembed123 | 9:da906eeac51e | 25 | if(type==LHType_locs){return headLocs;}else if(type==LHType_targ){return headTarg;}else if(type==LHType_base){return headBase;} |
dylanembed123 | 9:da906eeac51e | 26 | }else if(indexType==LHIType_size){ |
dylanembed123 | 9:da906eeac51e | 27 | // Grab proper size |
dylanembed123 | 9:da906eeac51e | 28 | if(type==LHType_locs){return sizeLocs;}else if(type==LHType_targ){return sizeTarg;}else if(type==LHType_base){return sizeBase;} |
dylanembed123 | 9:da906eeac51e | 29 | } |
dylanembed123 | 9:da906eeac51e | 30 | return headLocs; |
dylanembed123 | 7:c75d5e5e6bfc | 31 | } |
dylanembed123 | 9:da906eeac51e | 32 | |
dylanembed123 | 9:da906eeac51e | 33 | void LocHolder::inc(LHType type,int amount,bool abs){ |
dylanembed123 | 27:db73f8ac6c75 | 34 | // Grab current index holder |
dylanembed123 | 9:da906eeac51e | 35 | unsigned int& index=getI(type); |
dylanembed123 | 27:db73f8ac6c75 | 36 | // Set index and make sure the index is valid (not negative or greater than max) |
dylanembed123 | 27:db73f8ac6c75 | 37 | index=getRealIndex(type,(abs?0:index)+amount); |
dylanembed123 | 7:c75d5e5e6bfc | 38 | } |
dylanembed123 | 9:da906eeac51e | 39 | |
dylanembed123 | 9:da906eeac51e | 40 | void LocHolder::add(LHType type,DataLocation newLoc){ |
dylanembed123 | 27:db73f8ac6c75 | 41 | // Set the current index to the current size |
dylanembed123 | 9:da906eeac51e | 42 | getI(type)=getI(type,LHIType_size); |
dylanembed123 | 27:db73f8ac6c75 | 43 | // Increment size |
dylanembed123 | 9:da906eeac51e | 44 | getI(type,LHIType_size)++; |
dylanembed123 | 27:db73f8ac6c75 | 45 | // Assign current index |
dylanembed123 | 9:da906eeac51e | 46 | getC(type)=newLoc; |
dylanembed123 | 15:e3e03a9df89e | 47 | } |
dylanembed123 | 15:e3e03a9df89e | 48 | |
dylanembed123 | 15:e3e03a9df89e | 49 | static LocHolder* mainLocHolder=NULL; |
dylanembed123 | 15:e3e03a9df89e | 50 | LocHolder& DH::Locs(){if(mainLocHolder==NULL){mainLocHolder=new LocHolder();}return *mainLocHolder;} |