mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-18 00:45:47 +00:00
json-input iterate
This commit is contained in:
parent
a2f0d20692
commit
4eb8e1b207
16 changed files with 29 additions and 29 deletions
|
|
@ -168,7 +168,7 @@ join_bucket_keeper_t* join_bucket_keeper_alloc_from_reader(
|
|||
join_bucket_keeper_t* pkeeper = mlr_malloc_or_die(sizeof(join_bucket_keeper_t));
|
||||
|
||||
void* pvhandle = plrec_reader->popen_func(plrec_reader->pvstate, prepipe, left_file_name);
|
||||
plrec_reader->psof_func(plrec_reader->pvstate);
|
||||
plrec_reader->psof_func(plrec_reader->pvstate, pvhandle);
|
||||
|
||||
context_t* pctx = mlr_malloc_or_die(sizeof(context_t));
|
||||
context_init(pctx, left_file_name);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ struct _lrec_reader_t; // forward reference for method declarations
|
|||
typedef void* lrec_reader_open_func_t(void* pvstate, char* prepipe, char* filename);
|
||||
typedef void lrec_reader_close_func_t(void* pvstate, void* pvhandle, char* prepipe);
|
||||
typedef lrec_t* lrec_reader_process_func_t(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
typedef void lrec_reader_sof_func_t(void* pvstate);
|
||||
typedef void lrec_reader_sof_func_t(void* pvstate, void* pvhandle);
|
||||
typedef void lrec_reader_free_func_t(struct _lrec_reader_t* preader);
|
||||
|
||||
typedef struct _lrec_reader_t {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ typedef struct _lrec_reader_in_memory_state_t {
|
|||
} lrec_reader_in_memory_state_t;
|
||||
|
||||
static void lrec_reader_in_memory_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_in_memory_sof(void* pvstate);
|
||||
static void lrec_reader_in_memory_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_in_memory_process(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static void* lrec_reader_in_memory_vopen(void* pvstate, char* prepipe, char* filename);
|
||||
static void lrec_reader_in_memory_vclose(void* pvstate, void* pvhandle, char* prepipe);
|
||||
|
|
@ -42,7 +42,7 @@ static void lrec_reader_in_memory_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// No-op for stateless readers such as this one.
|
||||
static void lrec_reader_in_memory_sof(void* pvstate) {
|
||||
static void lrec_reader_in_memory_sof(void* pvstate, void* pvhandle) {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ typedef struct _lrec_reader_mmap_csv_state_t {
|
|||
} lrec_reader_mmap_csv_state_t;
|
||||
|
||||
static void lrec_reader_mmap_csv_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_mmap_csv_sof(void* pvstate);
|
||||
static void lrec_reader_mmap_csv_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_mmap_csv_process(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static int lrec_reader_mmap_csv_get_fields(lrec_reader_mmap_csv_state_t* pstate,
|
||||
rslls_t* pfields, file_reader_mmap_state_t* phandle);
|
||||
|
|
@ -139,7 +139,7 @@ static void lrec_reader_mmap_csv_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
static void lrec_reader_mmap_csv_sof(void* pvstate) {
|
||||
static void lrec_reader_mmap_csv_sof(void* pvstate, void* pvhandle) {
|
||||
lrec_reader_mmap_csv_state_t* pstate = pvstate;
|
||||
pstate->ilno = 0LL;
|
||||
pstate->expect_header_line_next = pstate->use_implicit_header ? FALSE : TRUE;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ typedef struct _lrec_reader_mmap_csvlite_state_t {
|
|||
} lrec_reader_mmap_csvlite_state_t;
|
||||
|
||||
static void lrec_reader_mmap_csvlite_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_mmap_csvlite_sof(void* pvstate);
|
||||
static void lrec_reader_mmap_csvlite_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_mmap_csvlite_process_single_seps(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_mmap_csvlite_process_multi_seps(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
||||
|
|
@ -108,7 +108,7 @@ static void lrec_reader_mmap_csvlite_free(lrec_reader_t* preader) {
|
|||
free(preader);
|
||||
}
|
||||
|
||||
static void lrec_reader_mmap_csvlite_sof(void* pvstate) {
|
||||
static void lrec_reader_mmap_csvlite_sof(void* pvstate, void* pvhandle) {
|
||||
lrec_reader_mmap_csvlite_state_t* pstate = pvstate;
|
||||
pstate->ifnr = 0LL;
|
||||
pstate->ilno = 0LL;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ typedef struct _lrec_reader_mmap_dkvp_state_t {
|
|||
} lrec_reader_mmap_dkvp_state_t;
|
||||
|
||||
static void lrec_reader_mmap_dkvp_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_mmap_dkvp_sof(void* pvstate);
|
||||
static void lrec_reader_mmap_dkvp_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_mmap_dkvp_process_single_irs_single_others(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_mmap_dkvp_process_single_irs_multi_others(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_mmap_dkvp_process_multi_irs_single_others(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
|
@ -59,7 +59,7 @@ static void lrec_reader_mmap_dkvp_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// No-op for stateless readers such as this one.
|
||||
static void lrec_reader_mmap_dkvp_sof(void* pvstate) {
|
||||
static void lrec_reader_mmap_dkvp_sof(void* pvstate, void* pvhandle) {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ typedef struct _lrec_reader_mmap_json_state_t {
|
|||
} lrec_reader_mmap_json_state_t;
|
||||
|
||||
static void lrec_reader_mmap_json_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_mmap_json_sof(void* pvstate);
|
||||
static void lrec_reader_mmap_json_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_mmap_json_process(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
@ -61,8 +61,8 @@ static void lrec_reader_mmap_json_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// xxx cmt non-streaming; ingest-all here.
|
||||
static void lrec_reader_mmap_json_sof(void* pvstate) {
|
||||
// xxx parse
|
||||
static void lrec_reader_mmap_json_sof(void* pvstate, void* pvhandle) {
|
||||
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ typedef struct _lrec_reader_mmap_nidx_state_t {
|
|||
} lrec_reader_mmap_nidx_state_t;
|
||||
|
||||
static void lrec_reader_mmap_nidx_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_mmap_nidx_sof(void* pvstate);
|
||||
static void lrec_reader_mmap_nidx_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_mmap_nidx_process_single_irs_single_ifs(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_mmap_nidx_process_single_irs_multi_ifs(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_mmap_nidx_process_multi_irs_single_ifs(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
|
@ -55,7 +55,7 @@ static void lrec_reader_mmap_nidx_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// No-op for stateless readers such as this one.
|
||||
static void lrec_reader_mmap_nidx_sof(void* pvstate) {
|
||||
static void lrec_reader_mmap_nidx_sof(void* pvstate, void* pvhandle) {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ typedef struct _lrec_reader_mmap_xtab_state_t {
|
|||
} lrec_reader_mmap_xtab_state_t;
|
||||
|
||||
static void lrec_reader_mmap_xtab_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_mmap_xtab_sof(void* pvstate);
|
||||
static void lrec_reader_mmap_xtab_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_mmap_xtab_process_single_ifs_single_ips(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_mmap_xtab_process_single_ifs_multi_ips(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_mmap_xtab_process_multi_ifs_single_ips(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
|
@ -56,7 +56,7 @@ static void lrec_reader_mmap_xtab_free(lrec_reader_t* preader) {
|
|||
free(preader);
|
||||
}
|
||||
|
||||
static void lrec_reader_mmap_xtab_sof(void* pvstate) {
|
||||
static void lrec_reader_mmap_xtab_sof(void* pvstate, void* pvhandle) {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ typedef struct _lrec_reader_stdio_csv_state_t {
|
|||
} lrec_reader_stdio_csv_state_t;
|
||||
|
||||
static void lrec_reader_stdio_csv_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_stdio_csv_sof(void* pvstate);
|
||||
static void lrec_reader_stdio_csv_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_stdio_csv_process(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static int lrec_reader_stdio_csv_get_fields(lrec_reader_stdio_csv_state_t* pstate, rslls_t* pfields);
|
||||
static lrec_t* paste_indices_and_data(lrec_reader_stdio_csv_state_t* pstate, rslls_t* pdata_fields,
|
||||
|
|
@ -157,7 +157,7 @@ static void lrec_reader_stdio_csv_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
static void lrec_reader_stdio_csv_sof(void* pvstate) {
|
||||
static void lrec_reader_stdio_csv_sof(void* pvstate, void* pvhandle) {
|
||||
lrec_reader_stdio_csv_state_t* pstate = pvstate;
|
||||
pstate->ilno = 0LL;
|
||||
pstate->expect_header_line_next = pstate->use_implicit_header ? FALSE : TRUE;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ typedef struct _lrec_reader_stdio_csvlite_state_t {
|
|||
} lrec_reader_stdio_csvlite_state_t;
|
||||
|
||||
static void lrec_reader_stdio_csvlite_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_stdio_sof(void* pvstate);
|
||||
static void lrec_reader_stdio_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_stdio_csvlite_process(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
@ -94,7 +94,7 @@ static void lrec_reader_stdio_csvlite_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
static void lrec_reader_stdio_sof(void* pvstate) {
|
||||
static void lrec_reader_stdio_sof(void* pvstate, void* pvhandle) {
|
||||
lrec_reader_stdio_csvlite_state_t* pstate = pvstate;
|
||||
pstate->ifnr = 0LL;
|
||||
pstate->ilno = 0LL;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ typedef struct _lrec_reader_stdio_dkvp_state_t {
|
|||
} lrec_reader_stdio_dkvp_state_t;
|
||||
|
||||
static void lrec_reader_stdio_dkvp_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_stdio_dkvp_sof(void* pvstate);
|
||||
static void lrec_reader_stdio_dkvp_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_stdio_dkvp_process_single_irs_single_others(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_stdio_dkvp_process_single_irs_multi_others(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_stdio_dkvp_process_multi_irs_single_others(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
|
@ -60,7 +60,7 @@ static void lrec_reader_stdio_dkvp_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// No-op for stateless readers such as this one.
|
||||
static void lrec_reader_stdio_dkvp_sof(void* pvstate) {
|
||||
static void lrec_reader_stdio_dkvp_sof(void* pvstate, void* pvhandle) {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ typedef struct _lrec_reader_stdio_nidx_state_t {
|
|||
} lrec_reader_stdio_nidx_state_t;
|
||||
|
||||
static void lrec_reader_stdio_nidx_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_stdio_nidx_sof(void* pvstate);
|
||||
static void lrec_reader_stdio_nidx_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_stdio_nidx_process_single_irs_single_ifs(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_stdio_nidx_process_single_irs_multi_ifs(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
static lrec_t* lrec_reader_stdio_nidx_process_multi_irs_single_ifs(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
|
@ -54,7 +54,7 @@ static void lrec_reader_stdio_nidx_free(lrec_reader_t* preader) {
|
|||
}
|
||||
|
||||
// No-op for stateless readers such as this one.
|
||||
static void lrec_reader_stdio_nidx_sof(void* pvstate) {
|
||||
static void lrec_reader_stdio_nidx_sof(void* pvstate, void* pvhandle) {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ typedef struct _lrec_reader_stdio_xtab_state_t {
|
|||
} lrec_reader_stdio_xtab_state_t;
|
||||
|
||||
static void lrec_reader_stdio_xtab_free(lrec_reader_t* preader);
|
||||
static void lrec_reader_stdio_xtab_sof(void* pvstate);
|
||||
static void lrec_reader_stdio_xtab_sof(void* pvstate, void* pvhandle);
|
||||
static lrec_t* lrec_reader_stdio_xtab_process(void* pvstate, void* pvhandle, context_t* pctx);
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
@ -45,7 +45,7 @@ static void lrec_reader_stdio_xtab_free(lrec_reader_t* preader) {
|
|||
free(preader);
|
||||
}
|
||||
|
||||
static void lrec_reader_stdio_xtab_sof(void* pvstate) {
|
||||
static void lrec_reader_stdio_xtab_sof(void* pvstate, void* pvhandle) {
|
||||
lrec_reader_stdio_xtab_state_t* pstate = pvstate;
|
||||
pstate->at_eof = FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -505,7 +505,7 @@ static void ingest_left_file(mapper_join_state_t* pstate) {
|
|||
|
||||
void* pvhandle = plrec_reader->popen_func(plrec_reader->pvstate, pstate->popts->prepipe,
|
||||
pstate->popts->left_file_name);
|
||||
plrec_reader->psof_func(plrec_reader->pvstate);
|
||||
plrec_reader->psof_func(plrec_reader->pvstate, pvhandle);
|
||||
|
||||
context_t ctx = { .nr = 0, .fnr = 0, .filenum = 1, .filename = pstate->popts->left_file_name };
|
||||
context_t* pctx = &ctx;
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ static int do_file_chained(char* prepipe, char* filename, context_t* pctx,
|
|||
void* pvhandle = plrec_reader->popen_func(plrec_reader->pvstate, prepipe, filename);
|
||||
|
||||
// Start-of-file hook, e.g. expecting CSV headers on input.
|
||||
plrec_reader->psof_func(plrec_reader->pvstate);
|
||||
plrec_reader->psof_func(plrec_reader->pvstate, pvhandle);
|
||||
|
||||
while (1) {
|
||||
lrec_t* pinrec = plrec_reader->pprocess_func(plrec_reader->pvstate, pvhandle, pctx);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue