Пример #1
0
void
designer_widget_node_aux_load_callback (designer_node_t *node, lisp_object_t *obj, gpointer user_data)
{
    lisp_object_t *x = lisp_proplist_lookup_symbol(obj, ":x");
    lisp_object_t *y = lisp_proplist_lookup_symbol(obj, ":y");

    g_assert(lisp_number_p(x) && lisp_number_p(y));

    designer_widget_move_node(GTK_WIDGET(user_data), node, lisp_real(x), lisp_real(y));
}
VALUE
build_py_sexpr(lisp_object_t* cur)
{
  if (lisp_cons_p(cur))
    {
      VALUE lst = rb_ary_new();
  
      while (cur)
        {
          rb_ary_push(lst, build_py_sexpr(lisp_car(cur)));
          cur = lisp_cdr(cur);
        }
      
      return lst;
    }
  else if (lisp_string_p(cur))
    {
      return rb_str_new2(lisp_string(cur));
    }
  else if (lisp_symbol_p(cur))
    {
      return ID2SYM(rb_intern(lisp_symbol(cur)));
    }
  else if (lisp_integer_p(cur))
    {
      return INT2NUM(lisp_integer(cur));
    }
  else if (lisp_real_p(cur))
    {
      return rb_float_new(lisp_real(cur));
    }
  else if (lisp_boolean_p(cur))
    {
      if (lisp_boolean(cur))
        return Qtrue;
      else
        return Qfalse;
    }
  else
    {
      return Qnil;
    }
}