mlhmmv reorg

This commit is contained in:
John Kerl 2016-11-23 08:57:12 -05:00
parent 7c62d3f4ab
commit 8de4383aa0
5 changed files with 28 additions and 28 deletions

View file

@ -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));

View file

@ -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) {

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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);
}
}