Example #1
0
void
scm_assert_foreign_object_type (SCM type, SCM val)
{
  if (!SCM_IS_A_P (val, type))
    scm_error (scm_arg_type_key, NULL, "Wrong type (expecting ~A): ~S",
               scm_list_2 (scm_class_name (type), val), scm_list_1 (val));
}
Example #2
0
void test_free_handle_slist_option (SCM option)
{
  SCM handle = cl_easy_init();
  SCM str_list = scm_list_2(scm_from_locale_string("foo"), scm_from_locale_string("bar"));
  SCM ret = cl_easy_setopt(handle, scm_variable_ref(option), str_list, SCM_BOOL_F);
  gc_free_handle(handle);
}
Example #3
0
int test_can_convert_to_slist__slist (void)
{
  SCM str_list = scm_list_2(scm_from_locale_string("foo"), scm_from_locale_string("bar"));
  int ret = _scm_can_convert_to_slist (str_list);
  printf("test that _scm_can_convert_to_slist returns 1 when passed a list of strings: %d\n", ret == 1);
  return ret == 1;
}
Example #4
0
int test_can_convert_to_slist__list_of_integers (void)
{
  SCM str_list = scm_list_2(scm_from_int(1), scm_from_int(2));
  int ret = _scm_can_convert_to_slist (str_list);
  printf("test that _scm_can_convert_to_slist returns 0 when passed a list of integers: %d\n", ret == 0);
  return ret == 0;
}
Example #5
0
int test_scm_convert_to_slist__slist (void)
{
  SCM str_list = scm_list_2(scm_from_locale_string("foo"), scm_from_locale_string("bar"));
  struct curl_slist *ret = _scm_convert_to_slist (str_list);
  printf("test that _scm_convert_to_slist returns an slist when passed a list of strings: %d\n", ret != NULL);
  return ret != NULL;
}
Example #6
0
/*! \brief Evaluate a string as a Scheme expression safely
 *  \par Function Description
 *
 *  Evaluates a string similarly to scm_eval_string(), but catching
 *  any errors or exceptions and reporting them via the libgeda
 *  logging mechanism.
 *
 *  See also g_scm_eval_protected() and g_scm_c_eval_string_protected().
 *
 *  \param str  String to evaluate.
 *
 *  \returns Evaluation results or SCM_BOOL_F if exception caught.
 */
SCM g_scm_eval_string_protected (SCM str)
{
  SCM expr = scm_list_2 (scm_from_utf8_symbol ("eval-string"),
                         str);

  return g_scm_eval_protected (expr, SCM_UNDEFINED);
}
Example #7
0
static void 
syntax_error (const char* const msg, const SCM form, const SCM expr)
{
  SCM msg_string = scm_from_locale_string (msg);
  SCM filename = SCM_BOOL_F;
  SCM linenr = SCM_BOOL_F;
  const char *format;
  SCM args;

  if (scm_is_pair (form))
    {
      filename = scm_source_property (form, scm_sym_filename);
      linenr = scm_source_property (form, scm_sym_line);
    }

  if (scm_is_false (filename) && scm_is_false (linenr) && scm_is_pair (expr))
    {
      filename = scm_source_property (expr, scm_sym_filename);
      linenr = scm_source_property (expr, scm_sym_line);
    }

  if (!SCM_UNBNDP (expr))
    {
      if (scm_is_true (filename))
	{
	  format = "In file ~S, line ~S: ~A ~S in expression ~S.";
	  args = scm_list_5 (filename, linenr, msg_string, form, expr);
	}
      else if (scm_is_true (linenr))
	{
	  format = "In line ~S: ~A ~S in expression ~S.";
	  args = scm_list_4 (linenr, msg_string, form, expr);
	}
      else
	{
	  format = "~A ~S in expression ~S.";
	  args = scm_list_3 (msg_string, form, expr);
	}
    }
  else
    {
      if (scm_is_true (filename))
	{
	  format = "In file ~S, line ~S: ~A ~S.";
	  args = scm_list_4 (filename, linenr, msg_string, form);
	}
      else if (scm_is_true (linenr))
	{
	  format = "In line ~S: ~A ~S.";
	  args = scm_list_3 (linenr, msg_string, form);
	}
      else
	{
	  format = "~A ~S.";
	  args = scm_list_2 (msg_string, form);
	}
    }

  scm_error (syntax_error_key, "memoization", format, args, SCM_BOOL_F);
}
Example #8
0
static void
check_flag (MuFlags flag, FlagData *fdata)
{
	SCM flag_scm;

	if (!(fdata->flags & flag))
		return;

	switch (flag) {
	case MU_FLAG_NEW:        flag_scm = SYMB_FLAG_NEW; break;
	case MU_FLAG_PASSED:     flag_scm = SYMB_FLAG_PASSED; break;
	case MU_FLAG_REPLIED:    flag_scm = SYMB_FLAG_REPLIED; break;
	case MU_FLAG_SEEN:       flag_scm = SYMB_FLAG_SEEN; break;
	case MU_FLAG_TRASHED:    flag_scm = SYMB_FLAG_TRASHED; break;
	case MU_FLAG_SIGNED:     flag_scm = SYMB_FLAG_SIGNED; break;
	case MU_FLAG_DRAFT:      flag_scm = SYMB_FLAG_DRAFT; break;
	case MU_FLAG_FLAGGED:    flag_scm = SYMB_FLAG_FLAGGED; break;
	case MU_FLAG_ENCRYPTED:  flag_scm = SYMB_FLAG_ENCRYPTED; break;
	case MU_FLAG_HAS_ATTACH: flag_scm = SYMB_FLAG_HAS_ATTACH; break;
	case MU_FLAG_UNREAD:     flag_scm = SYMB_FLAG_UNREAD; break;
	default: flag_scm = SCM_UNDEFINED;
	}

	fdata->lst = scm_append_x
		(scm_list_2(fdata->lst,
			    scm_list_1 (flag_scm)));
}
Example #9
0
static int
pyscm_PySCM_setattr(pyscm_PySCMObject *self, char *name, PyObject *v)
{
  /* Set attribute 'name' to value 'v'. v==NULL means delete */
  if (pyguile_verbosity_test(PYGUILE_VERBOSE_PYSCM)) {
    scm_simple_format(scm_current_output_port(),scm_makfrom0str("# pyscm_PySCM_setattr: trying to set attribute=~S from pobj=~S to value ~S\n"),scm_list_3(scm_makfrom0str(name),verbosity_repr((PyObject *)self),verbosity_repr(v)));
  }
  SCM sobj_keyword;
  SCM sattr_vector = retrieve_sattr_vector(self,name,&sobj_keyword);
  if (SCM_UNBNDP(sattr_vector)) {
    // Attribute error exception was raised by retrieve_sattr_vector().
    return(-1);
  }

  SCM ssetattr_func = GET_H_SETATTR_FUNC(sattr_vector);
  if (SCM_EQ_P(SCM_EOL,ssetattr_func)) {
    PyErr_SetString(PyExc_AttributeError, name);
    return(-1);
  }

  if (NULL != v) {
    SCM sval = p2g_apply(v,
			 GET_H_P2G_SETATTR_TEMPLATE(sattr_vector));
    scm_append_x(scm_list_2(sobj_keyword,sval));
  }

  SCM sresult = scm_apply(ssetattr_func,sobj_keyword,SCM_EOL);
  return(SCM_EQ_P(SCM_BOOL_F,sresult) ? (-1) : 0);
}
Example #10
0
void
scm_assert_foreign_object_type (SCM type, SCM val)
{
  /* FIXME: Add fast path for when type == struct vtable */
  if (!SCM_IS_A_P (val, type))
    scm_error (scm_arg_type_key, NULL, "Wrong type (expecting ~A): ~S",
               scm_list_2 (scm_class_name (type), val), scm_list_1 (val));
}
Example #11
0
SCM g_scm_c_get_uref (OBJECT *object)
{
  SCM func = scm_variable_ref (scm_c_lookup ("get-uref"));
  SCM object_smob = edascm_from_object (object);
  SCM exp = scm_list_2 (func, object_smob);

  return g_scm_eval_protected (exp, SCM_UNDEFINED);
}
Example #12
0
static PyObject *load_wrapper(PyObject *name_arg)
{
	return scm2py(
		scm_eval(
			scm_list_2(scm_from_utf8_symbol("load"),
				   py2scm(name_arg)),
			scm_current_module()));
}
Example #13
0
SCM g_scm_c_get_uref (TOPLEVEL *toplevel, OBJECT *object)
{
  SCM func = scm_variable_ref (scm_c_lookup ("get-uref"));
  SCM object_smob = g_make_object_smob (toplevel, object);
  SCM exp = scm_list_2 (func, object_smob);

  return g_scm_eval_protected (exp, SCM_UNDEFINED);
}
Example #14
0
SCM DLL_PUBLIC
cl_easy_perform (SCM handle, SCM bvflag, SCM headerflag)
{
  handle_post_t *c_handle;
  SCM data;
  CURLcode status;
  struct scm_flag body_sf, header_sf;

  SCM_ASSERT (_scm_is_handle (handle), handle, SCM_ARG1, "%curl-easy-perform");

  c_handle = _scm_to_handle (handle);

  body_sf.flag = scm_is_true (bvflag);
#if SCM_MAJOR_VERSION == 2
  if (body_sf.flag)
    data = scm_c_make_bytevector (0);
  else
    data = scm_c_make_string (0, SCM_MAKE_CHAR('\n'));
#else
  data = scm_c_make_string (0, SCM_MAKE_CHAR('\n'));
#endif
  body_sf.scm = data;

  header_sf.flag = 0;
#if SCM_MAJOR_VERSION == 2
  if (header_sf.flag)
    data = scm_c_make_bytevector (0);
  else
    data = scm_c_make_string (0, SCM_MAKE_CHAR('\n'));
#else
  data = scm_c_make_string (0, SCM_MAKE_CHAR('\n'));
#endif
  header_sf.scm = data;

  if (scm_is_true (headerflag)) 
  {
    curl_easy_setopt (c_handle->handle, CURLOPT_HEADERFUNCTION, write_callback);
    curl_easy_setopt (c_handle->handle, CURLOPT_HEADERDATA, &header_sf);
    curl_easy_setopt (c_handle->handle, CURLOPT_ERRORBUFFER, error_string);    
  }

  curl_easy_setopt (c_handle->handle, CURLOPT_WRITEFUNCTION, write_callback);
  curl_easy_setopt (c_handle->handle, CURLOPT_WRITEDATA, &body_sf);
  curl_easy_setopt (c_handle->handle, CURLOPT_ERRORBUFFER, error_string);

  /* Do the transfer, and fill c_str with the result */
  status = curl_easy_perform (c_handle->handle);
  if (status != CURLE_OK)
    {
      error_code = status;
      return (SCM_BOOL_F);
    }

  if (scm_is_true (headerflag)) 
    return (scm_list_2 (header_sf.scm, body_sf.scm));

  return (body_sf.scm);
}
VISIBLE SCM
scm_rexp_interval (SCM match, SCM subexpression)
{
  rexp_interval_t interv = rexp_interval (scm_to_rexp_match_t (match),
                                          scm_to_size_t (subexpression));
  return ((interv.i_start == -1) ?
          SCM_BOOL_F : scm_list_2 (scm_from_int (interv.i_start),
                                   scm_from_int (interv.i_end)));
}
Example #16
0
/* Return the range of the lines in the scroll region */
SCM
gucu_getscrreg (SCM win)
{
  int top, bottom;

  wgetscrreg (_scm_to_window (win), &top, &bottom);

  return (scm_list_2 (scm_from_int (top), scm_from_int (bottom)));
}
Example #17
0
/* Get the location of the virtual screen cursor */
SCM
gucu_getsyx ()
{
  int y = 0, x = 0;

  getsyx (y, x);

  return (scm_list_2 (scm_from_int (y), scm_from_int (x)));
}
Example #18
0
SCM
gucu_getyx (SCM win)
{
  int y, x;

  getyx (_scm_to_window (win), y, x);

  return (scm_list_2 (scm_from_int (y), scm_from_int (x)));
}
Example #19
0
SCM
gram_keydown_hook_run (void *data)
{
  struct keydown_input* input = (struct keydown_input*) data;
  scm_c_run_hook (gram_keydown_hook,
                  scm_list_2 (gram_keysym_scm (&input->keysym),
                              gram_view_scm(input->view)));
  return gram_swallow ? SCM_BOOL_T : SCM_BOOL_F;
}
Example #20
0
SCM
gram_view_focus_hook_run (void *data)
{
  struct view_focus_input *input = (struct view_focus_input *) data;
  scm_c_run_hook (gram_view_focus_hook,
                  scm_list_2 (gram_view_scm (input->handle),
                              input->focus ? SCM_BOOL_T : SCM_BOOL_F));
  return SCM_UNSPECIFIED;
}
Example #21
0
File: mo_tty.cpp Project: wehu/mo
SCM TTY::GetWinSize(SCM id){
  assert_object_type(id);
  TTY * t = (TTY *)get_object(id);
  assert(t!=NULL);
  int width = 0;
  int height = 0;
  int r = uv_tty_get_winsize(GetHandle(t), &width, &height);
  if(r) Logger::Err("uv_tty_get_winsize failed! : %d", r);
  return scm_list_2(scm_from_int(width), scm_from_int(height));
}
Example #22
0
static AVCodecContext *open_codec(SCM scm_self, AVCodecContext *codec_ctx, AVCodec *codec,
                                  const char *media_type, SCM scm_file_name)
{
  int err = avcodec_open2(codec_ctx, codec, NULL);
  if (err < 0) {
    ffmpeg_destroy(scm_self);
    scm_misc_error("open-codec", "Failed to open ~a codec for file '~a'",
                   scm_list_2(scm_from_locale_string(media_type), scm_file_name));
  };
  return codec_ctx;
}
Example #23
0
static void guilePropertyListenerCallback(guihckContext* ctx, guihckElementId listenerId, guihckElementId listenedId, const char* property, SCM value, void* data)
{
  (void) listenedId;
  (void) property;

  guihckStackPushElement(ctx, listenerId);
  SCM callback = data;
  guihckGuileRunExpression(ctx, scm_list_2(callback, value));
  guihckStackPopElement(ctx);

}
Example #24
0
SCM dijkstra(SCM scm_weights, SCM scm_start, SCM scm_cut_corners_p) {
  int row = scm_to_int(SCM_CAR(scm_start));
  int col = scm_to_int(SCM_CAR(SCM_CDR(scm_start)));
  SCM dimensions = scm_array_dimensions(scm_weights);
  int rows = scm_to_int(SCM_CAR(dimensions));
  int cols = scm_to_int(SCM_CAR(SCM_CDR(dimensions)));

  int cut_corners_p = scm_to_bool(scm_cut_corners_p);
  int * weights = calloc(rows * cols, sizeof(int *));
  WeightedPoint ** weighted_paths = calloc(rows, sizeof(WeightedPoint *));

  scm_t_array_handle weights_handle;
  scm_array_get_handle(scm_weights, &weights_handle);

  int i_row, i_col;
  for(i_row = 0; i_row < rows; i_row++) {
    weighted_paths[i_row] = calloc(cols, sizeof(WeightedPoint));
    for(i_col = 0; i_col < cols; i_col++) {
      ssize_t pos = scm_array_handle_pos(&weights_handle, scm_list_2(scm_from_int(i_row), scm_from_int(i_col)));
      weights[i_row * cols + i_col] = scm_to_int(scm_array_handle_ref(&weights_handle, pos));
    }
  }

  scm_array_handle_release(&weights_handle);
  find_paths(weighted_paths, (Point){col, row}, cut_corners_p, weights, rows, cols);

  SCM scm_paths = scm_make_array(scm_from_int(0), dimensions);
  for(i_row = 0; i_row < rows; i_row++) {
    for(i_col = 0; i_col < cols; i_col++) {
      scm_array_set_x(scm_paths,
		      scm_list_2(scm_from_int(weighted_paths[i_row][i_col].prev.y), scm_from_int(weighted_paths[i_row][i_col] .prev.x)),
		      scm_list_2(scm_from_int(i_row), scm_from_int(i_col)));
    }
    free(weighted_paths[i_row]);
  }

  free(weighted_paths);
  free(weights);

  return scm_paths;
}
static SCM
gdbscm_memory_port_range (SCM port)
{
  ioscm_memory_port *iomem;

  SCM_ASSERT_TYPE (gdbscm_is_memory_port (port), port, SCM_ARG1, FUNC_NAME,
		   memory_port_desc_name);

  iomem = (ioscm_memory_port *) SCM_STREAM (port);
  return scm_list_2 (gdbscm_scm_from_ulongest (iomem->start),
		     gdbscm_scm_from_ulongest (iomem->end));
}
Example #26
0
File: scheme.c Project: nizmic/nwm
static SCM scm_all_clients(void)
{
    SCM clients = SCM_EOL;
    SCM smob;
    client_t *client = client_list;
    while (client) {
        SCM_NEWSMOB(smob, client_tag, client);
        clients = scm_append(scm_list_2(clients, scm_list_1(smob)));
        client = client->next;
    }
    return clients;
}
Example #27
0
static AVCodecContext *open_decoder(SCM scm_self, SCM scm_file_name,
                                    AVStream *stream, const char *media_type)
{
  AVCodecContext *dec_ctx = stream->codec;
  AVCodec *decoder = avcodec_find_decoder(dec_ctx->codec_id);
  if (!decoder) {
    ffmpeg_destroy(scm_self);
    scm_misc_error("open-codec", "Failed to find ~a codec for file '~a'",
                   scm_list_2(scm_from_locale_string(media_type), scm_file_name));
  };
  return open_codec(scm_self, dec_ctx, decoder, media_type, scm_file_name);
}
static SCM
gdbscm_open_memory (SCM rest)
{
  const SCM keywords[] = {
    mode_keyword, start_keyword, size_keyword, SCM_BOOL_F
  };
  char *mode = NULL;
  CORE_ADDR start = 0;
  CORE_ADDR end;
  int mode_arg_pos = -1, start_arg_pos = -1, size_arg_pos = -1;
  ULONGEST size;
  SCM port;
  long mode_bits;

  gdbscm_parse_function_args (FUNC_NAME, SCM_ARG1, keywords, "#sUU", rest,
			      &mode_arg_pos, &mode,
			      &start_arg_pos, &start,
			      &size_arg_pos, &size);

  scm_dynwind_begin ((scm_t_dynwind_flags) 0);

  if (mode == NULL)
    mode = xstrdup ("r");
  scm_dynwind_free (mode);

  if (size_arg_pos > 0)
    {
      /* For now be strict about start+size overflowing.  If it becomes
	 a nuisance we can relax things later.  */
      if (start + size < start)
	{
	  gdbscm_out_of_range_error (FUNC_NAME, 0,
				scm_list_2 (gdbscm_scm_from_ulongest (start),
					    gdbscm_scm_from_ulongest (size)),
				     _("start+size overflows"));
	}
      end = start + size;
    }
  else
    end = ~(CORE_ADDR) 0;

  mode_bits = ioscm_parse_mode_bits (FUNC_NAME, mode);

  port = ioscm_open_port (memory_port_desc, mode_bits);

  ioscm_init_memory_port (port, start, end);

  scm_dynwind_end ();

  /* TODO: Set the file name as "memory-start-end"?  */
  return port;
}
Example #29
0
static void x_window_invoke_macro(GtkEntry *entry, void *userdata)
{
  GSCHEM_TOPLEVEL *w_current = userdata;
  SCM interpreter;

  interpreter = scm_list_2(scm_from_utf8_symbol("invoke-macro"),
			   scm_from_utf8_string(gtk_entry_get_text(entry)));

  g_scm_eval_protected(interpreter, SCM_UNDEFINED);

  gtk_widget_hide(w_current->macro_box);
  gtk_widget_grab_focus(w_current->drawing_area);
}
Example #30
0
SCM
gucu_slk_attr ()
{
  attr_t rendition, attributes;
  short color_pair_number;
  rendition = slk_attr ();
  attributes = rendition;
  attributes &= A_ATTRIBUTES ^ A_COLOR;
  color_pair_number = PAIR_NUMBER (rendition & A_COLOR);

  return scm_list_2 (_scm_from_attr (attributes),
		     scm_from_short (color_pair_number));
}