mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-22 23:48:30 +00:00
mlhmmv reorg
This commit is contained in:
parent
7c62d3f4ab
commit
8de4383aa0
5 changed files with 28 additions and 28 deletions
|
|
@ -134,7 +134,7 @@ mv_t local_stack_frame_get_scalar_from_indexed(local_stack_frame_t* pframe, // x
|
|||
if (pbase_xval->is_terminal) {
|
||||
return mv_absent();
|
||||
} else {
|
||||
pxval = mlhmmv_get_value_from_level(pbase_xval->pnext_level, pmvkeys, &error);
|
||||
pxval = mlhmmv_level_look_up_and_reference_xvalue(pbase_xval->pnext_level, pmvkeys, &error);
|
||||
}
|
||||
}
|
||||
if (pxval == NULL) {
|
||||
|
|
@ -178,7 +178,7 @@ mlhmmv_value_t* local_stack_frame_get_extended_from_indexed(local_stack_frame_t*
|
|||
if (pmvkeys == NULL || pmvkeys->length == 0) {
|
||||
return pmvalue;
|
||||
} else {
|
||||
return mlhmmv_get_value_from_level(pmvalue->pnext_level, pmvkeys, &error);
|
||||
return mlhmmv_level_look_up_and_reference_xvalue(pmvalue->pnext_level, pmvkeys, &error);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -204,7 +204,7 @@ void local_stack_frame_assign_scalar_indexed(local_stack_frame_t* pframe,
|
|||
pmvalue->is_terminal = FALSE;
|
||||
pmvalue->pnext_level = mlhmmv_level_alloc();
|
||||
}
|
||||
mlhmmv_put_terminal_from_level(pmvalue->pnext_level, pmvkeys->phead, &terminal_value);
|
||||
mlhmmv_level_put_terminal(pmvalue->pnext_level, pmvkeys->phead, &terminal_value);
|
||||
|
||||
LOCAL_STACK_TRACE(printf("VALUE IS:\n"));
|
||||
LOCAL_STACK_TRACE(mlhmmv_level_print_stacked(pmvalue->pnext_level, 0, TRUE, TRUE, "", stdout));
|
||||
|
|
|
|||
|
|
@ -190,14 +190,14 @@ static int mlhmmv_level_find_index_for_key(mlhmmv_level_t* plevel, mv_t* plevel_
|
|||
// ----------------------------------------------------------------
|
||||
// Example: keys = ["a", 2, "c"] and value = 4.
|
||||
void mlhmmv_root_put_terminal(mlhmmv_root_t* pmap, sllmv_t* pmvkeys, mv_t* pterminal_value) {
|
||||
mlhmmv_put_terminal_from_level(pmap->proot_level, pmvkeys->phead, pterminal_value);
|
||||
mlhmmv_level_put_terminal(pmap->proot_level, pmvkeys->phead, pterminal_value);
|
||||
}
|
||||
|
||||
// Example on recursive calls:
|
||||
// * level = map, rest_keys = ["a", 2, "c"] , terminal value = 4.
|
||||
// * level = map["a"], rest_keys = [2, "c"] , terminal value = 4.
|
||||
// * level = map["a"][2], rest_keys = ["c"] , terminal value = 4.
|
||||
void mlhmmv_put_terminal_from_level(mlhmmv_level_t* plevel, sllmve_t* prest_keys, mv_t* pterminal_value) {
|
||||
void mlhmmv_level_put_terminal(mlhmmv_level_t* plevel, sllmve_t* prest_keys, mv_t* pterminal_value) {
|
||||
if ((plevel->num_occupied + plevel->num_freed) >= (plevel->array_length * LOAD_FACTOR))
|
||||
mlhmmv_level_enlarge(plevel);
|
||||
mlhmmv_level_put_no_enlarge(plevel, prest_keys, pterminal_value);
|
||||
|
|
@ -237,7 +237,7 @@ static void mlhmmv_level_put_no_enlarge(mlhmmv_level_t* plevel, sllmve_t* prest_
|
|||
plevel->num_occupied++;
|
||||
if (prest_keys->pnext != NULL) {
|
||||
// RECURSE
|
||||
mlhmmv_put_terminal_from_level(pentry->level_value.pnext_level, prest_keys->pnext, pterminal_value);
|
||||
mlhmmv_level_put_terminal(pentry->level_value.pnext_level, prest_keys->pnext, pterminal_value);
|
||||
}
|
||||
|
||||
} else if (plevel->states[index] == OCCUPIED) { // Existing key found in chain
|
||||
|
|
@ -257,7 +257,7 @@ static void mlhmmv_level_put_no_enlarge(mlhmmv_level_t* plevel, sllmve_t* prest_
|
|||
pentry->level_value.pnext_level = mlhmmv_level_alloc();
|
||||
}
|
||||
// RECURSE
|
||||
mlhmmv_put_terminal_from_level(pentry->level_value.pnext_level, prest_keys->pnext, pterminal_value);
|
||||
mlhmmv_level_put_terminal(pentry->level_value.pnext_level, prest_keys->pnext, pterminal_value);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
@ -267,16 +267,16 @@ static void mlhmmv_level_put_no_enlarge(mlhmmv_level_t* plevel, sllmve_t* prest_
|
|||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlhmmv_level_t* mlhmmv_put_empty_map_from_level(mlhmmv_level_t* plevel, sllmve_t* prest_keys) {
|
||||
mlhmmv_level_t* mlhmmv_level_put_empty_map(mlhmmv_level_t* plevel, sllmve_t* prest_keys) {
|
||||
mv_t x = mv_absent();
|
||||
mlhmmv_put_terminal_from_level(plevel, prest_keys, &x); // xxx optimize to avoid 2nd lookup
|
||||
mlhmmv_level_put_terminal(plevel, prest_keys, &x); // xxx optimize to avoid 2nd lookup
|
||||
int error;
|
||||
sllmv_t s = { // xxx simplify API
|
||||
.phead = prest_keys,
|
||||
.ptail = prest_keys,
|
||||
.length = 1
|
||||
};
|
||||
mlhmmv_value_t* pxval = mlhmmv_get_value_from_level(plevel, &s, &error);
|
||||
mlhmmv_value_t* pxval = mlhmmv_level_look_up_and_reference_xvalue(plevel, &s, &error);
|
||||
*pxval = mlhmmv_value_alloc_empty_map();
|
||||
return pxval->pnext_level;
|
||||
}
|
||||
|
|
@ -344,7 +344,7 @@ mv_t* mlhmmv_root_look_up_and_reference_terminal(mlhmmv_root_t* pmap, sllmv_t* p
|
|||
return &plevel_entry->level_value.terminal_mlrval;
|
||||
}
|
||||
|
||||
mv_t* mlhmmv_get_terminal_from_level(mlhmmv_level_t* plevel, sllmv_t* pmvkeys, int* perror) {
|
||||
mv_t* mlhmmv_level_look_up_and_reference_terminal(mlhmmv_level_t* plevel, sllmv_t* pmvkeys, int* perror) {
|
||||
mlhmmv_level_entry_t* plevel_entry = mlhmmv_get_entry_at_level(plevel, pmvkeys->phead, perror);
|
||||
if (plevel_entry == NULL) {
|
||||
return NULL;
|
||||
|
|
@ -507,7 +507,7 @@ static mlhmmv_value_t* mlhmmv_get_next_level_entry_value(mlhmmv_level_t* plevel,
|
|||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlhmmv_value_t* mlhmmv_get_value_from_level(mlhmmv_level_t* pstart_level, sllmv_t* pmvkeys, int* perror) {
|
||||
mlhmmv_value_t* mlhmmv_level_look_up_and_reference_xvalue(mlhmmv_level_t* pstart_level, sllmv_t* pmvkeys, int* perror) {
|
||||
*perror = MLHMMV_ERROR_NONE;
|
||||
sllmve_t* prest_keys = pmvkeys->phead;
|
||||
if (prest_keys == NULL) {
|
||||
|
|
|
|||
|
|
@ -81,11 +81,11 @@ mlhmmv_level_t* mlhmmv_level_alloc();
|
|||
|
||||
void mlhmmv_clear_level(mlhmmv_level_t* plevel);
|
||||
|
||||
mv_t* mlhmmv_get_terminal_from_level(mlhmmv_level_t* plevel, sllmv_t* pmvkeys, int* perror); // xxx rename
|
||||
mlhmmv_value_t* mlhmmv_get_value_from_level(mlhmmv_level_t* plevel, sllmv_t* pmvkeys, int* perror);
|
||||
mlhmmv_level_t* mlhmmv_put_empty_map_from_level(mlhmmv_level_t* plevel, sllmve_t* prest_keys);
|
||||
void mlhmmv_level_put_value(mlhmmv_level_t* plevel, sllmve_t* prest_keys, mlhmmv_value_t* pvalue); // xxx rename w/ xval
|
||||
void mlhmmv_put_terminal_from_level(mlhmmv_level_t* plevel, sllmve_t* prest_keys, mv_t* pterminal_value);
|
||||
mv_t* mlhmmv_level_look_up_and_reference_terminal(mlhmmv_level_t* plevel, sllmv_t* pmvkeys, int* perror);
|
||||
mlhmmv_value_t* mlhmmv_level_look_up_and_reference_xvalue (mlhmmv_level_t* plevel, sllmv_t* pmvkeys, int* perror);
|
||||
mlhmmv_level_t* mlhmmv_level_put_empty_map (mlhmmv_level_t* plevel, sllmve_t* prest_keys);
|
||||
void mlhmmv_level_put_value (mlhmmv_level_t* plevel, sllmve_t* prest_keys, mlhmmv_value_t* pvalue); // xxx rename w/ xval
|
||||
void mlhmmv_level_put_terminal (mlhmmv_level_t* plevel, sllmve_t* prest_keys, mv_t* pterminal_value);
|
||||
|
||||
// Used by for-loops over map-valued local variables
|
||||
sllv_t* mlhmmv_copy_keys_from_submap_xxx_rename(mlhmmv_value_t* pmvalue, sllmv_t* pmvkeys);
|
||||
|
|
|
|||
|
|
@ -522,14 +522,14 @@ static void handle_oosvar_from_full_srec_assignment(
|
|||
mlhmmv_clear_level(plevel);
|
||||
|
||||
for (lrece_t* pe = pvars->pinrec->phead; pe != NULL; pe = pe->pnext) {
|
||||
mv_t k = mv_from_string(pe->key, NO_FREE); // mlhmmv_put_terminal_from_level will copy
|
||||
mv_t k = mv_from_string(pe->key, NO_FREE); // mlhmmv_level_put_terminal will copy
|
||||
sllmve_t e = { .value = k, .free_flags = 0, .pnext = NULL };
|
||||
mv_t* pomv = lhmsmv_get(pvars->ptyped_overlay, pe->key);
|
||||
if (pomv != NULL) {
|
||||
mlhmmv_put_terminal_from_level(plevel, &e, pomv);
|
||||
mlhmmv_level_put_terminal(plevel, &e, pomv);
|
||||
} else {
|
||||
mv_t v = mv_from_string(pe->value, NO_FREE); // mlhmmv_put_terminal_from_level will copy
|
||||
mlhmmv_put_terminal_from_level(plevel, &e, &v);
|
||||
mv_t v = mv_from_string(pe->value, NO_FREE); // mlhmmv_level_put_terminal will copy
|
||||
mlhmmv_level_put_terminal(plevel, &e, &v);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ static void rxval_evaluator_from_map_literal_aux(
|
|||
for (sllve_t* pe = plist_evaluator->pkvpair_evaluators->phead; pe != NULL; pe = pe->pnext) {
|
||||
map_literal_kvpair_evaluator_t* pkvpair = pe->pvvalue;
|
||||
|
||||
// mlhmmv_put_terminal_from_level will copy keys and values
|
||||
// mlhmmv_level_put_terminal will copy keys and values
|
||||
mv_t mvkey = pkvpair->pkey_evaluator->pprocess_func(pkvpair->pkey_evaluator->pvstate, pvars);
|
||||
if (pkvpair->is_terminal) {
|
||||
sllmve_t e = { .value = mvkey, .free_flags = 0, .pnext = NULL };
|
||||
|
|
@ -196,7 +196,7 @@ static void rxval_evaluator_from_map_literal_aux(
|
|||
}
|
||||
} else {
|
||||
sllmve_t e = { .value = mvkey, .free_flags = 0, .pnext = NULL };
|
||||
mlhmmv_level_t* pnext_level = mlhmmv_put_empty_map_from_level(plevel, &e);
|
||||
mlhmmv_level_t* pnext_level = mlhmmv_level_put_empty_map(plevel, &e);
|
||||
rxval_evaluator_from_map_literal_aux(pstate, pkvpair->plist_evaluator, pnext_level, pvars);
|
||||
}
|
||||
}
|
||||
|
|
@ -379,7 +379,7 @@ static boxed_xval_t rxval_evaluator_from_oosvar_keylist_func(void* pvstate, vari
|
|||
|
||||
if (all_non_null_or_error) {
|
||||
int lookup_error = FALSE;
|
||||
mlhmmv_value_t* pxval = mlhmmv_get_value_from_level(pvars->poosvars->proot_level,
|
||||
mlhmmv_value_t* pxval = mlhmmv_level_look_up_and_reference_xvalue(pvars->poosvars->proot_level,
|
||||
pmvkeys, &lookup_error);
|
||||
sllmv_free(pmvkeys);
|
||||
if (pxval != NULL) {
|
||||
|
|
@ -461,16 +461,16 @@ static boxed_xval_t rxval_evaluator_from_full_srec_func(void* pvstate, variables
|
|||
boxed_xval.xval = mlhmmv_value_alloc_empty_map();
|
||||
|
||||
for (lrece_t* pe = pvars->pinrec->phead; pe != NULL; pe = pe->pnext) {
|
||||
// mlhmmv_put_terminal_from_level will copy mv keys and values so we needn't (and shouldn't)
|
||||
// mlhmmv_level_put_terminal will copy mv keys and values so we needn't (and shouldn't)
|
||||
// duplicate them here.
|
||||
mv_t k = mv_from_string(pe->key, NO_FREE);
|
||||
sllmve_t e = { .value = k, .free_flags = 0, .pnext = NULL };
|
||||
mv_t* pomv = lhmsmv_get(pvars->ptyped_overlay, pe->key);
|
||||
if (pomv != NULL) {
|
||||
mlhmmv_put_terminal_from_level(boxed_xval.xval.pnext_level, &e, pomv); // xxx make a simpler 1-level API call
|
||||
mlhmmv_level_put_terminal(boxed_xval.xval.pnext_level, &e, pomv); // xxx make a simpler 1-level API call
|
||||
} else {
|
||||
mv_t v = mv_from_string(pe->value, NO_FREE); // mlhmmv_put_terminal_from_level will copy
|
||||
mlhmmv_put_terminal_from_level(boxed_xval.xval.pnext_level, &e, &v);
|
||||
mv_t v = mv_from_string(pe->value, NO_FREE); // mlhmmv_level_put_terminal will copy
|
||||
mlhmmv_level_put_terminal(boxed_xval.xval.pnext_level, &e, &v);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue