History

latest jurisdiction work

ZappoMan committed 13 years ago

Commit 558fca71 parent f57d86d6 files · +92 −14Browse files

Showing the changes to libraries/shared/src/OctalCode.cpp (1 of 6 files). Show all

Unified · Split

libraries/shared/src/OctalCode.cpp+39−0
@@ -257,3 +257,42 @@ unsigned char* rebaseOctalCode(unsigned char* originalOctalCode, unsigned char* · 256 unmodified lines
257 return newCode;257 return newCode;
258}258}
259 259
260bool isAncestorOf(unsigned char* possibleAncestor, unsigned char* possibleDescendent, int descendentsChild) {
261 if (!possibleAncestor || !possibleDescendent) {
262 return false;
263 }
264
265 int ancestorCodeLength = numberOfThreeBitSectionsInCode(possibleAncestor);
266 if (ancestorCodeLength == 0) {
267 return true; // this is the root, it's the anscestor of all
268 }
269
270 int descendentCodeLength = numberOfThreeBitSectionsInCode(possibleDescendent);
271
272 // if the caller also include a child, then our descendent length is actually one extra!
273 if (descendentsChild != CHECK_NODE_ONLY) {
274 descendentCodeLength++;
275 }
276
277 if (ancestorCodeLength > descendentCodeLength) {
278 return false; // if the descendent is shorter, it can't be a descendent
279 }
280
281 // compare the sections for the ancestor to the descendent
282 for (int section = 0; section < ancestorCodeLength; section++) {
283 char sectionValueAncestor = getOctalCodeSectionValue(possibleAncestor, section);
284 char sectionValueDescendent;
285 if (ancestorCodeLength <= descendentCodeLength) {
286 sectionValueDescendent = getOctalCodeSectionValue(possibleDescendent, section);
287 } else {
288 assert(descendentsChild != CHECK_NODE_ONLY);
289 sectionValueDescendent = descendentsChild;
290 }
291 if (sectionValueAncestor != sectionValueDescendent) {
292 return false; // first non-match, means they don't match
293 }
294 }
295
296 // they all match, so we are an ancestor
297 return true;
298}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t