DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(guile.info.gz) scm transition summary

Info Catalog (guile.info.gz) Mixing gh and scm APIs (guile.info.gz) GH
 
 19.14 Transitioning to the scm Interface
 ========================================
 
 The following table summarizes the available information on how to
 transition from the GH to the scm interface.  Where transitioning is not
 completely straightforward, the table includes a reference to more
 detailed documentation in the preceding sections.
 
 Header file
      Use `#include <libguile.h>' instead of `#include <guile/gh.h>'.
 
 Compiling and Linking
      Use `guile-config' to pick up the flags required to compile C or
      C++ code that uses `libguile', like so
 
           $(CC) -o prog.o -c prog.c `guile-config compile`
 
      If you are using libtool to link your executables, just use
      `-lguile' in your link command.  Libtool will expand this into the
      needed linker options automatically.  If you are not using
      libtool, use the `guile-config' program to query the needed
      options explicitly.  A linker command like
 
           $(CC) -o prog prog.o `guile-config link`
 
      should be all that is needed.  To link shared libraries that will
      be used as Guile Extensions, use libtool to control both the
      compilation and the link stage.
 
 The `SCM' type
      No change: the scm interface also uses this type to represent an
      arbitrary Scheme value.
 
 `SCM_BOOL_F' and `SCM_BOOL_T'
      No change.
 
 `SCM_UNSPECIFIED' and `SCM_UNDEFINED'
      No change.
 
 `gh_enter'
      Use `scm_boot_guile' instead, but note that `scm_boot_guile' has a
      slightly different calling convention from `gh_enter':
      `scm_boot_guile', and the main program function that you specify
      for `scm_boot_guile' to call, both take an additional CLOSURE
      parameter.   Guile Initialization Functions for more
      details.
 
 `gh_repl'
      Use `scm_shell' instead.
 
 `gh_init'
      Use `scm_init_guile' instead.
 
 `gh_eval_str'
      Use `scm_c_eval_string' instead.
 
 `gh_eval_file' or `gh_load'
      Use `scm_c_primitive_load' instead.
 
 `gh_new_procedure'
      Use `scm_c_define_gsubr' instead, but note that the arguments are
      in a different order: for `scm_c_define_gsubr' the C function
      pointer is the last argument.   A Sample Guile Extension
      for an example.
 
 `gh_defer_ints' and `gh_allow_ints'
      Use `SCM_DEFER_INTS' and `SCM_ALLOW_INTS' instead.  Note that
      these macros are used without parentheses, as in `SCM_DEFER_INTS;'.
 
 `gh_bool2scm'
      Use `SCM_BOOL' instead.
 
 `gh_ulong2scm'
      Use `scm_ulong2num' instead.
 
 `gh_long2scm'
      Use `scm_long2num' instead.
 
 `gh_double2scm'
      Use `scm_make_real' instead.
 
 `gh_char2scm'
      Use `SCM_MAKE_CHAR' instead.
 
 `gh_str2scm'
      Use `scm_mem2string' instead.
 
 `gh_str02scm'
      Use `scm_makfrom0str' instead.
 
 `gh_set_substr'
      No direct scm equivalent.  [FIXME]
 
 `gh_symbol2scm'
      Use `scm_str2symbol' instead.  [FIXME: inconsistent naming, should
      be `scm_str02symbol'.]
 
 `gh_ints2scm' and `gh_doubles2scm'
      No direct scm equivalent.  [FIXME]
 
 `gh_chars2byvect' and `gh_shorts2svect'
      No direct scm equivalent.  [FIXME]
 
 `gh_longs2ivect' and `gh_ulongs2uvect'
      No direct scm equivalent.  [FIXME]
 
 `gh_floats2fvect' and `gh_doubles2dvect'
      No direct scm equivalent.  [FIXME]
 
 `gh_scm2bool'
      Use `SCM_NFALSEP' instead.
 
 `gh_scm2int'
      Replace `gh_scm2int (OBJ)' by
           scm_num2int (OBJ, SCM_ARG1, STR)
      where STR is a C string that describes the context of the call.
 
 `gh_scm2ulong'
      Replace `gh_scm2ulong (OBJ)' by
           scm_num2ulong (OBJ, SCM_ARG1, STR)
      where STR is a C string that describes the context of the call.
 
 `gh_scm2long'
      Replace `gh_scm2long (OBJ)' by
           scm_num2long (OBJ, SCM_ARG1, STR)
      where STR is a C string that describes the context of the call.
 
 `gh_scm2double'
      Replace `gh_scm2double (OBJ)' by
           scm_num2dbl (OBJ, STR)
      where STR is a C string that describes the context of the call.
 
 `gh_scm2char'
      Use the `SCM_CHAR' macro instead, but note that `SCM_CHAR' does
      not check that its argument is actually a character.  To check that
      a `SCM' value is a character before using `SCM_CHAR' to extract
      the character value, use the `SCM_VALIDATE_CHAR' macro.
 
 `gh_scm2newstr'
      No direct scm equivalent.  [FIXME]
 
 `gh_get_substr'
      No direct scm equivalent.  [FIXME]
 
 `gh_symbol2newstr'
      No direct scm equivalent.  [FIXME]
 
 `gh_scm2chars'
      No direct scm equivalent.  [FIXME]
 
 `gh_scm2shorts' and `gh_scm2longs'
      No direct scm equivalent.  [FIXME]
 
 `gh_scm2floats' and `gh_scm2doubles'
      No direct scm equivalent.  [FIXME]
 
 `gh_boolean_p'
      Use the `SCM_BOOLP' macro instead, or replace `gh_boolean_p (OBJ)'
      by
           SCM_NFALSEP (scm_boolean_p (OBJ))
 
 `gh_symbol_p'
      Use the `SCM_SYMBOLP' macro instead, or replace `gh_symbol_p
      (OBJ)' by
           SCM_NFALSEP (scm_symbol_p (OBJ))
 
 `gh_char_p'
      Use the `SCM_CHARP' macro instead, or replace `gh_char_p (OBJ)' by
           SCM_NFALSEP (scm_char_p (OBJ))
 
 `gh_vector_p'
      Use the `SCM_VECTORP' macro instead, or replace `gh_vector_p
      (OBJ)' by
           SCM_NFALSEP (scm_vector_p (OBJ))
 
 `gh_pair_p'
      Use the `SCM_CONSP' macro instead, or replace `gh_pair_p (OBJ)' by
           SCM_NFALSEP (scm_pair_p (OBJ))
 
 `gh_number_p'
      Use the `SCM_NUMBERP' macro instead, or replace `gh_number_p
      (OBJ)' by
           SCM_NFALSEP (scm_number_p (OBJ))
 
 `gh_string_p'
      Use the `SCM_STRINGP' macro instead, or replace `gh_string_p
      (OBJ)' by
           SCM_NFALSEP (scm_string_p (OBJ))
 
 `gh_procedure_p'
      Replace `gh_procedure_p (OBJ)' by
           SCM_NFALSEP (scm_procedure_p (OBJ))
 
 `gh_list_p'
      Replace `gh_list_p (OBJ)' by
           SCM_NFALSEP (scm_list_p (OBJ))
 
 `gh_inexact_p'
      Use the `SCM_INEXACTP' macro instead, or replace `gh_inexact_p
      (OBJ)' by
           SCM_NFALSEP (scm_inexact_p (OBJ))
 
 `gh_exact_p'
      Replace `gh_exact_p (OBJ)' by
           SCM_NFALSEP (scm_exact_p (OBJ))
 
 `gh_eq_p'
      Use the `SCM_EQ_P' macro instead, or replace `gh_eq_p (X, Y)' by
           SCM_NFALSEP (scm_eq_p (X, Y))
 
 `gh_eqv_p'
      Replace `gh_eqv_p (X, Y)' by
           SCM_NFALSEP (scm_eqv_p (X, Y))
 
 `gh_equal_p'
      Replace `gh_equal_p (X, Y)' by
           SCM_NFALSEP (scm_equal_p (X, Y))
 
 `gh_string_equal_p'
      Replace `gh_string_equal_p (X, Y)' by
           SCM_NFALSEP (scm_string_equal_p (X, Y))
 
 `gh_null_p'
      Use the `SCM_NULLP' macro instead, or replace `gh_null_p (OBJ)' by
           SCM_NFALSEP (scm_null_p (OBJ))
 
 `gh_cons'
      Use `scm_cons' instead.
 
 `gh_car' and `gh_cdr'
      Use the `SCM_CAR' and `SCM_CDR' macros instead.
 
 `gh_cxxr' and `gh_cxxxr'
      (Where each x is either `a' or `d'.)  Use the corresponding
      `SCM_CXXR' or `SCM_CXXXR' macro instead.
 
 `gh_set_car_x' and `gh_set_cdr_x'
      Use `scm_set_car_x' and `scm_set_cdr_x' instead.
 
 `gh_list'
      Use `scm_listify' instead.
 
 `gh_length'
      Replace `gh_length (LST)' by
           scm_num2ulong (scm_length (LST), SCM_ARG1, STR)
      where STR is a C string that describes the context of the call.
 
 `gh_append'
      Use `scm_append' instead.
 
 `gh_append2', `gh_append3', `gh_append4'
      Replace `gh_appendN (L1, ..., LN)' by
           scm_append (scm_listify (L1, ..., LN, SCM_UNDEFINED))
 
 `gh_reverse'
      Use `scm_reverse' instead.
 
 `gh_list_tail' and `gh_list_ref'
      Use `scm_list_tail' and `scm_list_ref' instead.
 
 `gh_memq', `gh_memv' and `gh_member'
      Use `scm_memq', `scm_memv' and `scm_member' instead.
 
 `gh_assq', `gh_assv' and `gh_assoc'
      Use `scm_assq', `scm_assv' and `scm_assoc' instead.
 
 `gh_make_vector'
      Use `scm_make_vector' instead.
 
 `gh_vector' or `gh_list_to_vector'
      Use `scm_vector' instead.
 
 `gh_vector_ref' and `gh_vector_set_x'
      Use `scm_vector_ref' and `scm_vector_set_x' instead.
 
 `gh_vector_length'
      Use the `SCM_VECTOR_LENGTH' macro instead.
 
 `gh_apply'
      Use `scm_apply' instead, but note that `scm_apply' takes an
      additional third argument that you should set to `SCM_EOL'.
 
 
Info Catalog (guile.info.gz) Mixing gh and scm APIs (guile.info.gz) GH
automatically generated byinfo2html