root/ext/charconv/convlib.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. convlib_ces_conversion_supportedP
  2. convlib_open_input_conversion_port
  3. convlib_open_output_conversion_port
  4. convlib_ces_guess_from_string
  5. Scm_Init_convlib

   1 /* Generated by genstub.  Do not edit. */
   2 #include <gauche.h>
   3 #if defined(__CYGWIN__) || defined(__MINGW32__)
   4 #define SCM_CGEN_CONST /*empty*/
   5 #else
   6 #define SCM_CGEN_CONST const
   7 #endif
   8 #include "charconv.h"
   9 static ScmObj convlib_ces_conversion_supportedP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
  10 {
  11   ScmObj from_scm;
  12   ScmObj from;
  13   ScmObj to_scm;
  14   ScmObj to;
  15   SCM_ENTER_SUBR("ces-conversion-supported?");
  16   from_scm = SCM_ARGREF(0);
  17   from = (from_scm);
  18   to_scm = SCM_ARGREF(1);
  19   to = (to_scm);
  20   {
  21 {
  22 int SCM_RESULT;
  23 const char *cfrom = Scm_GetCESName(from, "from-code");
  24 const char *cto   = Scm_GetCESName(to, "to-code");
  25 SCM_RESULT = Scm_ConversionSupportedP(cfrom, cto);
  26 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
  27 }
  28   }
  29 }
  30 
  31 static SCM_DEFINE_STRING_CONST(convlib_ces_conversion_supportedP__NAME, "ces-conversion-supported?", 25, 25);
  32 static SCM_DEFINE_SUBR(convlib_ces_conversion_supportedP__STUB, 2, 0, SCM_OBJ(&convlib_ces_conversion_supportedP__NAME), convlib_ces_conversion_supportedP, NULL, NULL);
  33 
  34 static SCM_DEFINE_STRING_CONST(KEYARG_to_code__NAME, "to-code", 7, 7);
  35 static ScmObj KEYARG_to_code = SCM_UNBOUND;
  36 static SCM_DEFINE_STRING_CONST(KEYARG_buffer_size__NAME, "buffer-size", 11, 11);
  37 static ScmObj KEYARG_buffer_size = SCM_UNBOUND;
  38 static SCM_DEFINE_STRING_CONST(KEYARG_ownerP__NAME, "owner?", 6, 6);
  39 static ScmObj KEYARG_ownerP = SCM_UNBOUND;
  40 static SCM_DEFINE_STRING_CONST(KEYARG_handler__NAME, "handler", 7, 7);
  41 static ScmObj KEYARG_handler = SCM_UNBOUND;
  42 static ScmObj convlib_open_input_conversion_port(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
  43 {
  44   ScmObj source_scm;
  45   ScmPort* source;
  46   ScmObj from_code_scm;
  47   ScmObj from_code;
  48   ScmObj to_code_scm;
  49   ScmObj to_code;
  50   ScmObj buffer_size_scm;
  51   int buffer_size;
  52   ScmObj ownerP_scm;
  53   ScmObj ownerP;
  54   ScmObj handler_scm;
  55   ScmObj handler;
  56   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
  57   SCM_ENTER_SUBR("open-input-conversion-port");
  58   source_scm = SCM_ARGREF(0);
  59   if (!SCM_IPORTP(source_scm)) Scm_Error("input port required, but got %S", source_scm);
  60   source = SCM_PORT(source_scm);
  61   from_code_scm = SCM_ARGREF(1);
  62   from_code = (from_code_scm);
  63   to_code_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_to_code), SCM_OPTARGS, SCM_FALSE);
  64   to_code = (to_code_scm);
  65   buffer_size_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_buffer_size), SCM_OPTARGS, Scm_MakeInteger(0));
  66   if (!SCM_INTP(buffer_size_scm)) Scm_Error("small integer required, but got %S", buffer_size_scm);
  67   buffer_size = SCM_INT_VALUE(buffer_size_scm);
  68   ownerP_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_ownerP), SCM_OPTARGS, SCM_FALSE);
  69   ownerP = (ownerP_scm);
  70   handler_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_handler), SCM_OPTARGS, SCM_FALSE);
  71   handler = (handler_scm);
  72   {
  73 {
  74 ScmObj SCM_RESULT;
  75 const char *fc = Scm_GetCESName(from_code, "from-code");
  76 const char *tc = Scm_GetCESName(to_code, "to-code");
  77 SCM_RESULT = 
  78   Scm_MakeInputConversionPort(source, fc, tc, handler, buffer_size,
  79                               !SCM_FALSEP(ownerP));
  80 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
  81 }
  82   }
  83 }
  84 
  85 static SCM_DEFINE_STRING_CONST(convlib_open_input_conversion_port__NAME, "open-input-conversion-port", 26, 26);
  86 static SCM_DEFINE_SUBR(convlib_open_input_conversion_port__STUB, 2, 1, SCM_OBJ(&convlib_open_input_conversion_port__NAME), convlib_open_input_conversion_port, NULL, NULL);
  87 
  88 static SCM_DEFINE_STRING_CONST(KEYARG_from_code__NAME, "from-code", 9, 9);
  89 static ScmObj KEYARG_from_code = SCM_UNBOUND;
  90 static ScmObj convlib_open_output_conversion_port(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
  91 {
  92   ScmObj sink_scm;
  93   ScmPort* sink;
  94   ScmObj to_code_scm;
  95   ScmObj to_code;
  96   ScmObj from_code_scm;
  97   ScmObj from_code;
  98   ScmObj buffer_size_scm;
  99   int buffer_size;
 100   ScmObj ownerP_scm;
 101   ScmObj ownerP;
 102   ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
 103   SCM_ENTER_SUBR("open-output-conversion-port");
 104   sink_scm = SCM_ARGREF(0);
 105   if (!SCM_OPORTP(sink_scm)) Scm_Error("output port required, but got %S", sink_scm);
 106   sink = SCM_PORT(sink_scm);
 107   to_code_scm = SCM_ARGREF(1);
 108   to_code = (to_code_scm);
 109   from_code_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_from_code), SCM_OPTARGS, SCM_FALSE);
 110   from_code = (from_code_scm);
 111   buffer_size_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_buffer_size), SCM_OPTARGS, Scm_MakeInteger(0));
 112   if (!SCM_INTP(buffer_size_scm)) Scm_Error("small integer required, but got %S", buffer_size_scm);
 113   buffer_size = SCM_INT_VALUE(buffer_size_scm);
 114   ownerP_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_ownerP), SCM_OPTARGS, SCM_FALSE);
 115   ownerP = (ownerP_scm);
 116   {
 117 {
 118 ScmObj SCM_RESULT;
 119 const char *fc = Scm_GetCESName(from_code, "from-code");
 120 const char *tc = Scm_GetCESName(to_code, "to-code");
 121 SCM_RESULT = 
 122   Scm_MakeOutputConversionPort(sink, tc, fc, buffer_size,
 123                                !SCM_FALSEP(ownerP));
 124 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 125 }
 126   }
 127 }
 128 
 129 static SCM_DEFINE_STRING_CONST(convlib_open_output_conversion_port__NAME, "open-output-conversion-port", 27, 27);
 130 static SCM_DEFINE_SUBR(convlib_open_output_conversion_port__STUB, 2, 1, SCM_OBJ(&convlib_open_output_conversion_port__NAME), convlib_open_output_conversion_port, NULL, NULL);
 131 
 132 static ScmObj convlib_ces_guess_from_string(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
 133 {
 134   ScmObj string_scm;
 135   ScmString* string;
 136   ScmObj scheme_scm;
 137   ScmString* scheme;
 138   SCM_ENTER_SUBR("ces-guess-from-string");
 139   string_scm = SCM_ARGREF(0);
 140   if (!SCM_STRINGP(string_scm)) Scm_Error("string required, but got %S", string_scm);
 141   string = SCM_STRING(string_scm);
 142   scheme_scm = SCM_ARGREF(1);
 143   if (!SCM_STRINGP(scheme_scm)) Scm_Error("string required, but got %S", scheme_scm);
 144   scheme = SCM_STRING(scheme_scm);
 145   {
 146 {
 147 ScmObj SCM_RESULT;
 148 u_int size;
 149 const char *s = Scm_GetStringContent(string, &size, NULL, NULL);
 150 const char *guessed = Scm_GuessCES(Scm_GetStringConst(scheme),
 151                                    s, size);
 152 if (guessed) SCM_RESULT = SCM_MAKE_STR(guessed);
 153 else SCM_RESULT = SCM_FALSE;
 154 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
 155 }
 156   }
 157 }
 158 
 159 static SCM_DEFINE_STRING_CONST(convlib_ces_guess_from_string__NAME, "ces-guess-from-string", 21, 21);
 160 static SCM_DEFINE_SUBR(convlib_ces_guess_from_string__STUB, 2, 0, SCM_OBJ(&convlib_ces_guess_from_string__NAME), convlib_ces_guess_from_string, NULL, NULL);
 161 
 162 void Scm_Init_convlib(ScmModule *module)
 163 {
 164 
 165   SCM_DEFINE(module, "ces-guess-from-string", SCM_OBJ(&convlib_ces_guess_from_string__STUB));
 166   KEYARG_from_code = Scm_MakeKeyword(&KEYARG_from_code__NAME);
 167   SCM_DEFINE(module, "open-output-conversion-port", SCM_OBJ(&convlib_open_output_conversion_port__STUB));
 168   KEYARG_handler = Scm_MakeKeyword(&KEYARG_handler__NAME);
 169   KEYARG_ownerP = Scm_MakeKeyword(&KEYARG_ownerP__NAME);
 170   KEYARG_buffer_size = Scm_MakeKeyword(&KEYARG_buffer_size__NAME);
 171   KEYARG_to_code = Scm_MakeKeyword(&KEYARG_to_code__NAME);
 172   SCM_DEFINE(module, "open-input-conversion-port", SCM_OBJ(&convlib_open_input_conversion_port__STUB));
 173   SCM_DEFINE(module, "ces-conversion-supported?", SCM_OBJ(&convlib_ces_conversion_supportedP__STUB));
 174 }

/* [<][>][^][v][top][bottom][index][help] */