Sources works!?
This commit is contained in:
parent
b69e40bc44
commit
9d1c80076a
@ -50,7 +50,7 @@ static int source_compare(const union line64 a, const union line64 b)
|
|||||||
#define TREE_VALUE size_t /* Index into source list. */
|
#define TREE_VALUE size_t /* Index into source list. */
|
||||||
#define TREE_COMPARE
|
#define TREE_COMPARE
|
||||||
#define TREE_TO_STRING
|
#define TREE_TO_STRING
|
||||||
#define TREE_DEFAULT (size_t)0
|
#define TREE_DEFAULT 0
|
||||||
#include "../src/tree.h"
|
#include "../src/tree.h"
|
||||||
|
|
||||||
|
|
||||||
@ -173,10 +173,13 @@ finally:
|
|||||||
/** Lookup the last source in `range` in sources `s`. They are invalidated on
|
/** Lookup the last source in `range` in sources `s`. They are invalidated on
|
||||||
adding a source, (probably fine.) */
|
adding a source, (probably fine.) */
|
||||||
const struct source *source_lookup(struct sources *const s,
|
const struct source *source_lookup(struct sources *const s,
|
||||||
const union line64 range) {
|
const union line64 x) {
|
||||||
union line64 line_source;
|
struct source_tree_iterator it;
|
||||||
assert(s);
|
assert(s);
|
||||||
line_source = source_tree_less_or(&s->dates, range, (union line64){0});
|
it = source_tree_less(&s->dates, x);
|
||||||
sourcemap_table_get(&s->map, line_source);
|
/* If it's before all elements of the journal or is not on the same date as
|
||||||
return s->list.data + idx;
|
the source, this has no source, which is `list[0]` by <fn:sources>. */
|
||||||
|
if(!source_tree_has_element(&it)
|
||||||
|
|| x.date.u32 != source_tree_key(&it).date.u32) return s->list.data + 0;
|
||||||
|
return s->list.data + *source_tree_value(&it);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user