Fix: Don't cast SCM values to pointer. Use SCM2PTR instead.
[bpt/guile.git] / libguile / read.c
index 9fe22c7..7af3b73 100644 (file)
@@ -47,7 +47,6 @@
 #include <stdio.h>
 #include "_scm.h"
 #include "chars.h"
-#include "genio.h"
 #include "eval.h"
 #include "unif.h"
 #include "keywords.h"
 #include "srcprop.h"
 #include "hashtab.h"
 #include "hash.h"
+#include "ports.h"
+#include "root.h"
+#include "strings.h"
+#include "vectors.h"
 
-#include "scm_validate.h"
+#include "validate.h"
 #include "read.h"
 
 \f
@@ -70,11 +73,11 @@ scm_option scm_read_opts[] = {
     "Record positions of source code expressions." },
   { SCM_OPTION_BOOLEAN, "case-insensitive", 0,
     "Convert symbols to lower case."},
-  { SCM_OPTION_SCM, "keywords", SCM_BOOL_F,
+  { SCM_OPTION_SCM, "keywords", SCM_UNPACK (SCM_BOOL_F),
     "Style of keyword recognition: #f or 'prefix"}
 };
 
-GUILE_PROC (scm_read_options, "read-options-interface", 0, 1, 0, 
+SCM_DEFINE (scm_read_options, "read-options-interface", 0, 1, 0, 
             (SCM setting),
 "")
 #define FUNC_NAME s_scm_read_options
@@ -92,7 +95,7 @@ GUILE_PROC (scm_read_options, "read-options-interface", 0, 1, 0,
 /* An association list mapping extra hash characters to procedures.  */
 static SCM *scm_read_hash_procedures;
 
-GUILE_PROC (scm_read, "read", 0, 1, 0, 
+SCM_DEFINE (scm_read, "read", 0, 1, 0, 
             (SCM port),
 "")
 #define FUNC_NAME s_scm_read
@@ -102,7 +105,7 @@ GUILE_PROC (scm_read, "read", 0, 1, 0,
 
   if (SCM_UNBNDP (port))
     port = scm_cur_inp;
-  SCM_VALIDATE_OPINPORT(1,port);
+  SCM_VALIDATE_OPINPORT (1,port);
 
   c = scm_flush_ws (port, (char *) NULL);
   if (EOF == c)
@@ -371,17 +374,17 @@ tryagain_no_flush_ws:
          c = scm_getc (port);
          j = scm_read_token (c, tok_buf, port, 0);
          if (j == 1)
-           return SCM_MAKICHR (c);
+           return SCM_MAKE_CHAR (c);
          if (c >= '0' && c < '8')
            {
              p = scm_istr2int (SCM_CHARS (*tok_buf), (long) j, 8);
              if (SCM_NFALSEP (p))
-               return SCM_MAKICHR (SCM_INUM (p));
+               return SCM_MAKE_CHAR (SCM_INUM (p));
            }
          for (c = 0; c < scm_n_charnames; c++)
            if (scm_charnames[c]
                && (scm_casei_streq (scm_charnames[c], SCM_CHARS (*tok_buf))))
-             return SCM_MAKICHR (scm_charnums[c]);
+             return SCM_MAKE_CHAR (scm_charnums[c]);
          scm_wta (SCM_UNDEFINED, "unknown # object: #\\", SCM_CHARS (*tok_buf));
 
          /* #:SYMBOL is a syntax for keywords supported in all contexts.  */
@@ -402,7 +405,7 @@ tryagain_no_flush_ws:
                SCM got;
 
                got = scm_apply (sharp,
-                                SCM_MAKICHR (c),
+                                SCM_MAKE_CHAR (c),
                                 scm_acons (port, SCM_EOL, SCM_EOL));
                if (SCM_UNSPECIFIED == got)
                  goto unkshrp;
@@ -414,8 +417,8 @@ tryagain_no_flush_ws:
              }
          }
        unkshrp:
-         scm_misc_error (s_scm_read, "Unknown # object: %S",
-                         scm_listify (SCM_MAKICHR (c), SCM_UNDEFINED));
+         scm_misc_error (s_scm_read, "Unknown # object: ~S",
+                         scm_listify (SCM_MAKE_CHAR (c), SCM_UNDEFINED));
        }
 
     case '"':
@@ -489,7 +492,7 @@ tryagain_no_flush_ws:
       goto tok;
 
     case ':':
-      if (SCM_KEYWORD_STYLE == scm_keyword_prefix)
+      if (SCM_PACK (SCM_KEYWORD_STYLE) == scm_keyword_prefix)
        {
          j = scm_read_token ('-', tok_buf, port, 0);
          p = scm_intern (SCM_CHARS (*tok_buf), j);
@@ -701,7 +704,7 @@ exit:
 
 /* Manipulate the read-hash-procedures alist.  This could be written in
    Scheme, but maybe it will also be used by C code during initialisation.  */
-GUILE_PROC (scm_read_hash_extend, "read-hash-extend", 2, 0, 0,
+SCM_DEFINE (scm_read_hash_extend, "read-hash-extend", 2, 0, 0,
             (SCM chr, SCM proc),
 "")
 #define FUNC_NAME s_scm_read_hash_extend
@@ -709,7 +712,7 @@ GUILE_PROC (scm_read_hash_extend, "read-hash-extend", 2, 0, 0,
   SCM this;
   SCM prev;
 
-  SCM_VALIDATE_CHAR(1,chr);
+  SCM_VALIDATE_CHAR (1,chr);
   SCM_ASSERT (SCM_FALSEP (proc) || SCM_NIMP(proc), proc, SCM_ARG2,
              FUNC_NAME);
 
@@ -768,7 +771,7 @@ scm_get_hash_procedure (int c)
       if (SCM_NULLP (rest))
        return SCM_BOOL_F;
   
-      if (SCM_ICHR (SCM_CAAR (rest)) == c)
+      if (SCM_CHAR (SCM_CAAR (rest)) == c)
        return SCM_CDAR (rest);
      
       rest = SCM_CDR (rest);
@@ -784,3 +787,9 @@ scm_init_read ()
   scm_init_opts (scm_read_options, scm_read_opts, SCM_N_READ_OPTIONS);
 #include "read.x"
 }
+
+/*
+  Local Variables:
+  c-file-style: "gnu"
+  End:
+*/