671767e04b1b0fa01967a09bfaec1865a8d806a5
[centaur.git] / src / model / count.c
1 #include <assert.h>
2 #include <sys/types.h>
3 #include <libelfu/libelfu.h>
4
5
6 size_t elfu_mScnIndex(ElfuElf *me, ElfuScn *ms)
7 {
8   ElfuScn *ms2;
9   size_t i = 1;
10
11   assert(me);
12   assert(ms);
13
14   CIRCLEQ_FOREACH(ms2, &me->scnList, elem) {
15     if (ms2 == ms) {
16       return i;
17     }
18
19     i++;
20   }
21
22   /* Section is not in ELF model. This means the calling code is broken. */
23   assert(0);
24 }
25
26
27 /* NULL section is not counted! */
28 size_t elfu_mCountScns(ElfuElf *me)
29 {
30   ElfuScn *ms;
31   size_t i = 0;
32
33   assert(me);
34
35   CIRCLEQ_FOREACH(ms, &me->scnList, elem) {
36     i++;
37   }
38
39   return i;
40 }
41
42
43 size_t elfu_mCountPhdrs(ElfuElf *me)
44 {
45   ElfuPhdr *mp;
46   size_t i = 0;
47
48   assert(me);
49
50   CIRCLEQ_FOREACH(mp, &me->phdrList, elem) {
51     i++;
52   }
53
54   return i;
55 }