/* classes: h_files */
-#ifndef VARIABLEH
-#define VARIABLEH
-/* Copyright (C) 1995,1996 Free Software Foundation, Inc.
- *
+#ifndef SCM_VARIABLE_H
+#define SCM_VARIABLE_H
+
+/* Copyright (C) 1995,1996,2000,2001 Free Software Foundation, Inc.
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* If you write modifications of your own for GUILE, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice. */
+
\f
+
#include "libguile/__scm.h"
+#include "libguile/smob.h"
\f
-
/* Variables
*/
-extern int scm_tc16_variable;
-
-#define SCM_VARVCELL(V) SCM_CDR(V)
-#define SCM_VARIABLEP(X) (scm_tc16_variable == SCM_CAR(X))
-#define SCM_UDVARIABLEP(X) (SCM_VARIABLEP(X) && SCM_UNBNDP (SCM_CDR (SCM_VARVCELL (X))))
-#define SCM_DEFVARIABLEP(X) (SCM_VARIABLEP(X) && !SCM_UNBNDP (SCM_CDR (SCM_VARVCELL (X))))
+#define SCM_VARIABLEP(X) (!SCM_IMP (X) && SCM_TYP7(X) == scm_tc7_variable)
+#define SCM_VARIABLE_REF(V) SCM_CELL_OBJECT_1 (V)
+#define SCM_VARIABLE_SET(V, X) SCM_SET_CELL_OBJECT_1 (V, X)
+#define SCM_VARIABLE_LOC(V) ((SCM *) SCM_CELL_WORD_LOC ((V), 1))
\f
-extern SCM scm_make_variable SCM_P ((SCM init, SCM name_hint));
-extern SCM scm_make_undefined_variable SCM_P ((SCM name_hint));
-extern SCM scm_variable_p SCM_P ((SCM obj));
-extern SCM scm_variable_ref SCM_P ((SCM var));
-extern SCM scm_variable_set_x SCM_P ((SCM var, SCM val));
-extern SCM scm_builtin_variable SCM_P ((SCM name));
-extern SCM scm_variable_bound_p SCM_P ((SCM var));
-extern void scm_init_variable SCM_P ((void));
+SCM_API SCM scm_make_variable (SCM init);
+SCM_API SCM scm_make_undefined_variable (void);
+SCM_API SCM scm_variable_p (SCM obj);
+SCM_API SCM scm_variable_ref (SCM var);
+SCM_API SCM scm_variable_set_x (SCM var, SCM val);
+SCM_API SCM scm_variable_bound_p (SCM var);
+
+SCM_API void scm_i_variable_print (SCM var, SCM port, scm_print_state *pstate);
+
+SCM_API void scm_init_variable (void);
+
+#endif /* SCM_VARIABLE_H */
-#endif /* VARIABLEH */
+/*
+ Local Variables:
+ c-file-style: "gnu"
+ End:
+*/