Buckets:
| /* | |
| * Copyright (c) 2007, Novell Inc. | |
| * | |
| * This program is licensed under the BSD license, read LICENSE.BSD | |
| * for further information | |
| */ | |
| extern "C" { | |
| typedef struct s_Dirpool { | |
| Id *dirs; | |
| int ndirs; | |
| Id *dirtraverse; | |
| } Dirpool; | |
| void dirpool_init(Dirpool *dp); | |
| void dirpool_free(Dirpool *dp); | |
| void dirpool_make_dirtraverse(Dirpool *dp); | |
| Id dirpool_add_dir(Dirpool *dp, Id parent, Id comp, int create); | |
| /* return the parent directory of child did */ | |
| static inline Id dirpool_parent(Dirpool *dp, Id did) | |
| { | |
| if (!did) | |
| return 0; | |
| while (dp->dirs[--did] > 0) | |
| ; | |
| return -dp->dirs[did]; | |
| } | |
| /* return the next child entry of child did */ | |
| static inline Id | |
| dirpool_sibling(Dirpool *dp, Id did) | |
| { | |
| /* if this block contains another entry, simply return it */ | |
| if (did + 1 < dp->ndirs && dp->dirs[did + 1] > 0) | |
| return did + 1; | |
| /* end of block reached, rewind to get to the block's | |
| * dirtraverse entry */ | |
| while (dp->dirs[--did] > 0) | |
| ; | |
| /* need to special case did == 0 to prevent looping */ | |
| if (!did) | |
| return 0; | |
| if (!dp->dirtraverse) | |
| dirpool_make_dirtraverse(dp); | |
| return dp->dirtraverse[did]; | |
| } | |
| /* return the first child entry of directory did */ | |
| static inline Id | |
| dirpool_child(Dirpool *dp, Id did) | |
| { | |
| if (!dp->dirtraverse) | |
| dirpool_make_dirtraverse(dp); | |
| return dp->dirtraverse[did]; | |
| } | |
| static inline void | |
| dirpool_free_dirtraverse(Dirpool *dp) | |
| { | |
| solv_free(dp->dirtraverse); | |
| dp->dirtraverse = 0; | |
| } | |
| static inline Id | |
| dirpool_compid(Dirpool *dp, Id did) | |
| { | |
| return dp->dirs[did]; | |
| } | |
| } | |
Xet Storage Details
- Size:
- 1.71 kB
- Xet hash:
- c17951fe53af9917b63880ca71f7f7266ef232279b5c6b4f31b483f50c0a2031
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.