summaryrefslogtreecommitdiffhomepage
path: root/mixlib/mix_eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixlib/mix_eval.c')
-rw-r--r--mixlib/mix_eval.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/mixlib/mix_eval.c b/mixlib/mix_eval.c
index 5a65391..023a413 100644
--- a/mixlib/mix_eval.c
+++ b/mixlib/mix_eval.c
@@ -1,7 +1,7 @@
/* -*-c-*- -------------- mix_eval.c :
* Implementation of the functions declared in mix_eval.h
* ------------------------------------------------------------------
- * Last change: Time-stamp: "00/12/03 22:27:53 jose"
+ * Last change: Time-stamp: "00/12/08 13:16:10 jose"
* ------------------------------------------------------------------
* Copyright (C) 2000 jose antonio ortega ruiz <jaortega@acm.org>
*
@@ -102,7 +102,7 @@ mix_eval_expression_with_loc (mix_eval_t *eval, const gchar *expr,
/* get the result of the last evaluation */
mix_word_t
-mix_eval_value (mix_eval_t *eval)
+mix_eval_value (const mix_eval_t *eval)
{
g_return_val_if_fail (eval != NULL, MIX_WORD_ZERO);
return eval->value;
@@ -110,7 +110,7 @@ mix_eval_value (mix_eval_t *eval)
/* get the last eval result code */
mix_eval_result_t
-mix_eval_last_error (mix_eval_t *eval)
+mix_eval_last_error (const mix_eval_t *eval)
{
g_return_val_if_fail (eval != NULL, MIX_EVAL_INTERN);
return eval->result;
@@ -118,7 +118,7 @@ mix_eval_last_error (mix_eval_t *eval)
/* get the last error string */
const gchar*
-mix_eval_last_error_string (mix_eval_t *eval)
+mix_eval_last_error_string (const mix_eval_t *eval)
{
g_return_val_if_fail (eval != NULL, errors_[MIX_EVAL_INTERN]);
return errors_[eval->result];
@@ -126,7 +126,7 @@ mix_eval_last_error_string (mix_eval_t *eval)
/* get the position of last error */
guint
-mix_eval_last_error_pos (mix_eval_t *eval)
+mix_eval_last_error_pos (const mix_eval_t *eval)
{
g_return_val_if_fail (eval != NULL, 0);
return eval->errpos;
@@ -161,4 +161,25 @@ mix_eval_use_symbol_table (mix_eval_t *eval,
eval->towner = FALSE;
}
-
+
+gboolean
+mix_eval_set_symbols_from_table (mix_eval_t *eval,
+ const mix_symbol_table_t *table)
+{
+ g_return_val_if_fail (eval != NULL, FALSE);
+ if (eval->table != NULL)
+ return mix_symbol_table_merge_table (eval->table, table);
+ else
+ return FALSE;
+}
+
+gboolean
+mix_eval_remove_symbols_from_table (mix_eval_t *eval,
+ const mix_symbol_table_t *table)
+{
+ g_return_val_if_fail (eval != NULL, FALSE);
+ if (eval->table != NULL)
+ return mix_symbol_table_substract_table (eval->table, table);
+ else
+ return FALSE;
+}