I think I found a decent solution, but am still curious if there is a better that I am missing. I can get C to do the equivalent of (map values my-hashtable) giving me a list of key value pairs.
So where h is an s7 pointer to a hash-table: s7_pointer key_val_list = s7_call(s7, s7_name_to_value(s7, "map"), s7_list(s7, 2, s7_name_to_value(s7, "values"), h)); I'm guessing that's as good as it gets, eh? iain On Mon, Dec 7, 2020 at 7:21 PM Iain Duncan <[email protected]> wrote: > Hi folks, I'm needing to iterate through the key value pairs of a > hashtable from C code in order to make some functions that convert from Max > dictionaries to S7 hashes and vice versa. I can't think of an elegant way > to do this from C. The only thing I've thought of so far is that I could > define a function to get the keys and call it from C.. > > ie something like > > fun_get_keys = s7_eval_c_string(s7_scheme *sc, "(lambda (h)( map( > lambda(p)(car p) h )"); > > And then use C to call that function on my hashtable (which I have an s7 > pointer to). Is that a decent approach or am I missing something pretty > obvious here? > > thanks > iain >
_______________________________________________ Cmdist mailing list [email protected] https://cm-mail.stanford.edu/mailman/listinfo/cmdist
