2023-04-23 01:05:54 -04:00
|
|
|
#include "pair.h" /* pair */
|
|
|
|
#include "journal.h" /* size_t, date32, line64 */
|
|
|
|
|
2023-04-26 03:59:14 -04:00
|
|
|
/* Date-line to index in array map. */
|
2023-04-23 03:20:50 -04:00
|
|
|
#define TREE_NAME linemap
|
2023-04-23 01:05:54 -04:00
|
|
|
#define TREE_KEY union line64
|
|
|
|
#define TREE_VALUE size_t
|
|
|
|
#define TREE_HEAD
|
|
|
|
#include "../src/tree.h"
|
|
|
|
|
2023-05-07 03:06:36 -04:00
|
|
|
/* Eg, source array. */
|
|
|
|
struct kvpair { struct pair key, value; };
|
|
|
|
#define ARRAY_NAME kvpair
|
|
|
|
#define ARRAY_TYPE struct kvpair
|
2023-04-23 03:20:50 -04:00
|
|
|
#define ARRAY_HEAD
|
|
|
|
#include "../src/array.h"
|
2023-05-08 00:44:14 -04:00
|
|
|
#define TREE_NAME linekvpair
|
|
|
|
#define TREE_KEY union line64
|
|
|
|
#define TREE_VALUE struct kvpair
|
|
|
|
#define TREE_HEAD
|
|
|
|
#include "../src/tree.h"
|
2023-04-23 03:20:50 -04:00
|
|
|
|
2023-04-30 14:06:27 -04:00
|
|
|
/* Place array. */
|
|
|
|
struct place { struct pair name; double x, y; };
|
|
|
|
#define ARRAY_NAME place
|
|
|
|
#define ARRAY_TYPE struct place
|
|
|
|
#define ARRAY_HEAD
|
|
|
|
#include "../src/array.h"
|
2023-04-30 05:28:15 -04:00
|
|
|
|
2023-04-26 03:59:14 -04:00
|
|
|
/* Score array. */
|
2023-04-23 01:05:54 -04:00
|
|
|
struct score {
|
|
|
|
struct pair key, name;
|
2023-04-23 03:20:50 -04:00
|
|
|
union date32 date, last/* update; need to compare leading value */;
|
2023-04-23 01:05:54 -04:00
|
|
|
unsigned edges, score/* update */;
|
|
|
|
};
|
|
|
|
#define ARRAY_NAME score
|
|
|
|
#define ARRAY_TYPE struct score
|
|
|
|
#define ARRAY_HEAD
|
|
|
|
#include "../src/array.h"
|
2023-04-26 03:59:14 -04:00
|
|
|
|
2023-05-07 01:36:59 -04:00
|
|
|
/* Edit array. */
|
|
|
|
struct edit {
|
|
|
|
union date32 edit;
|
|
|
|
struct pair desc;
|
|
|
|
};
|
|
|
|
#define ARRAY_NAME edit
|
|
|
|
#define ARRAY_TYPE struct edit
|
|
|
|
#define ARRAY_HEAD
|
|
|
|
#include "../src/array.h"
|
|
|
|
|
2023-04-30 04:15:04 -04:00
|
|
|
|
2023-04-26 03:59:14 -04:00
|
|
|
/* Glider array. */
|
|
|
|
#define LAUNCH_TYPE \
|
|
|
|
X(MotorCarTow),\
|
|
|
|
X(Winch),\
|
|
|
|
X(AeroTow)
|
|
|
|
#define X(type) type
|
|
|
|
enum launch_type { LAUNCH_TYPE };
|
|
|
|
#undef X
|
|
|
|
#define X(type) #type
|
|
|
|
static const char *launch_type_string[] = { LAUNCH_TYPE };
|
|
|
|
#undef X
|
|
|
|
#undef LAUNCH_TYPE
|
|
|
|
struct glider {
|
|
|
|
struct pair type, reg, launch, landing;
|
|
|
|
enum launch_type how;
|
|
|
|
unsigned height_ft, pilot_min, dual_min, instr_min;
|
|
|
|
struct pair remarks;
|
2023-04-23 03:20:50 -04:00
|
|
|
};
|
2023-04-26 03:59:14 -04:00
|
|
|
#define TREE_NAME glider
|
|
|
|
#define TREE_KEY union line64
|
|
|
|
#define TREE_VALUE struct glider
|
|
|
|
#define TREE_HEAD
|
|
|
|
#include "../src/tree.h"
|
|
|
|
|
2023-04-23 03:20:50 -04:00
|
|
|
|
2023-04-28 16:40:11 -04:00
|
|
|
/* Flight array. */
|
|
|
|
struct flight {
|
|
|
|
struct pair type, reg, launch, landing, pilot, copilot;
|
|
|
|
unsigned dual_min, pilot_min, ifrsim_min, ifr_min;
|
|
|
|
struct pair remarks;
|
|
|
|
};
|
|
|
|
#define TREE_NAME flight
|
|
|
|
#define TREE_KEY union line64
|
|
|
|
#define TREE_VALUE struct flight
|
|
|
|
#define TREE_HEAD
|
|
|
|
#include "../src/tree.h"
|
|
|
|
|
|
|
|
|
2023-04-30 00:29:27 -04:00
|
|
|
#include "kjv.h"
|
2023-04-30 04:49:05 -04:00
|
|
|
#define TREE_NAME kjv
|
2023-04-28 19:18:58 -04:00
|
|
|
#define TREE_KEY union line64
|
|
|
|
#define TREE_VALUE struct kjvrange
|
|
|
|
#define TREE_HEAD
|
|
|
|
#include "../src/tree.h"
|
|
|
|
|
|
|
|
|
2023-04-23 03:20:50 -04:00
|
|
|
struct scan {
|
2023-04-26 03:59:14 -04:00
|
|
|
struct {
|
2023-05-07 03:06:36 -04:00
|
|
|
struct kvpair_array array;
|
2023-04-26 03:59:14 -04:00
|
|
|
struct pairmap_table map;
|
|
|
|
struct linemap_tree dates;
|
2023-05-06 21:11:23 -04:00
|
|
|
} sources, documents;
|
2023-04-30 14:06:27 -04:00
|
|
|
struct {
|
|
|
|
struct place_array array;
|
|
|
|
struct pairmap_table map;
|
|
|
|
struct linemap_tree dates;
|
|
|
|
} places;
|
2023-04-26 03:59:14 -04:00
|
|
|
struct {
|
|
|
|
struct score_array array;
|
|
|
|
struct pairmap_table map;
|
|
|
|
struct linemap_tree dates;
|
|
|
|
} scores;
|
2023-05-07 01:36:59 -04:00
|
|
|
struct {
|
|
|
|
struct edit_array array;
|
|
|
|
struct pairmap_table map;
|
|
|
|
struct linemap_tree dates;
|
|
|
|
} edits;
|
2023-05-08 00:44:14 -04:00
|
|
|
struct linekvpair_tree contacts, books, tvs, movies, ideas;
|
2023-04-26 03:59:14 -04:00
|
|
|
struct glider_tree gliders;
|
2023-04-28 16:40:11 -04:00
|
|
|
struct flight_tree flights;
|
2023-04-30 04:49:05 -04:00
|
|
|
struct kjv_tree kjvs;
|
2023-04-23 01:05:54 -04:00
|
|
|
};
|
|
|
|
|
2023-04-23 03:20:50 -04:00
|
|
|
void scan_(struct scan *);
|
|
|
|
struct scan scan(struct journal *);
|
2023-05-07 03:06:36 -04:00
|
|
|
const struct kvpair *scan_source_lookup(struct scan *, const union line64);
|
2023-04-26 03:59:14 -04:00
|
|
|
void scan_score_graph(struct scan *);
|
|
|
|
void scan_glider_graph(struct scan *);
|
2023-04-28 16:40:11 -04:00
|
|
|
void scan_flight_graph(struct scan *);
|
2023-04-28 19:18:58 -04:00
|
|
|
void scan_kjv_graph(struct scan *);
|