示例#1
0
static uim_lisp
uim_sqlite3_close(uim_lisp db_)
{
  if (sqlite3_close(C_PTR(db_)) != SQLITE_OK)
    ERROR_OBJ(sqlite3_errmsg(C_PTR(db_)), db_);
  return uim_scm_t();
}
示例#2
0
static uim_lisp
uim_sqlite3_prepare(uim_lisp db_, uim_lisp zSql_, uim_lisp nBytes_)
{
  sqlite3_stmt *ppStmt;
  const char *pzTail;

  if (sqlite3_prepare(C_PTR(db_), REFER_C_STR(zSql_), C_INT(nBytes_), &ppStmt, &pzTail) != SQLITE_OK)
    ERROR_OBJ(sqlite3_errmsg(C_PTR(db_)), zSql_);
  return CONS(MAKE_PTR(ppStmt), MAKE_STR(pzTail));
}
示例#3
0
static uim_lisp
uim_sqlite3_clear_bindings(uim_lisp pStmt_)
{
  if (sqlite3_clear_bindings(C_PTR(pStmt_)) != SQLITE_OK)
    uim_scm_f();
  return uim_scm_t();
}
示例#4
0
static uim_lisp
uim_sqlite3_bind_text(uim_lisp pStmt_, uim_lisp idx_, uim_lisp str_, uim_lisp nBytes_)
{
  if (sqlite3_bind_text(C_PTR(pStmt_), C_INT(idx_), REFER_C_STR(str_), C_INT(nBytes_), SQLITE_TRANSIENT) != SQLITE_OK)
    uim_scm_f();
  return uim_scm_t();
}
示例#5
0
static uim_lisp
uim_sqlite3_bind_null(uim_lisp pStmt_, uim_lisp idx_)
{
  if (sqlite3_bind_null(C_PTR(pStmt_), C_INT(idx_)) != SQLITE_OK)
    uim_scm_f();
  return uim_scm_t();
}
示例#6
0
static uim_lisp
uim_sqlite3_reset(uim_lisp pStmt_)
{
  if (sqlite3_reset(C_PTR(pStmt_)) != SQLITE_OK)
    uim_scm_f();
  return uim_scm_t();
}
示例#7
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_getaddrinfo(uim_lisp hostname_, uim_lisp servname_, uim_lisp hint_)
{
  const char *hostname;
  char *servname = NULL;
  struct addrinfo *hints = C_PTR(hint_);
  struct addrinfo *res, *res0;
  uim_lisp ret_ = uim_scm_null();
  int error;

  if (INTP(servname_)) {
    uim_asprintf(&servname, "%d", C_INT(servname_));
  } else {
    servname = C_STR(servname_);
  }

  if (FALSEP(hostname_))
    hostname = NULL;
  else
    hostname = REFER_C_STR(hostname_);
  error = getaddrinfo(hostname, servname, hints, &res0);
  if (error) {
    const char *errstr = gai_strerror(error);
    uim_notify_fatal("getaddrinfo: %s", errstr);
    free(servname);
    return uim_scm_f();
  }

  free(servname);
  for (res = res0; res; res = res->ai_next) {
    ret_ = CONS(MAKE_PTR(res) , ret_);
  }
  return uim_scm_callf("reverse", "o", ret_);
}
示例#8
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_sun_len(uim_lisp sun_)
{
  struct sockaddr_un *s_un = C_PTR(sun_);

  return MAKE_INT(SUN_LEN(s_un));
}
示例#9
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_ref_sockaddr_un_sun_family(uim_lisp sun_)
{
  struct sockaddr_un *s_un = C_PTR(sun_);

  return MAKE_INT(s_un->sun_family);
}
示例#10
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_addrinfo_ref_ai_addr(uim_lisp addrinfo_)
{
  struct addrinfo *addrinfo = C_PTR(addrinfo_);

  return MAKE_PTR(addrinfo->ai_addr);
}
示例#11
0
static void *
dynlib_unbind_all_internal(uim_lisp plugin_alist_)
{
  /* call dlclose(3) collectively at the end in order to avoid GC problem */
  uim_lisp alist_ = plugin_alist_;

  while (!NULLP(alist_)) {
    uim_lisp plugin_, quit_proc_;
    void (*dynlib_instance_quit)(void);
    
    plugin_ = CAR(alist_);
    quit_proc_ = CAR(CDR(CDR(CDR(plugin_))));
    if (!FALSEP(quit_proc_)) {
      dynlib_instance_quit = C_FPTR(quit_proc_);
      (*dynlib_instance_quit)();
    }
    alist_ = CDR(alist_);
  }

  alist_ = plugin_alist_;
  while (!NULLP(alist_)) {
    uim_lisp plugin_, lib_;
    void *library;

    plugin_ = CAR(alist_);
    lib_ = CAR(CDR(plugin_));
    if (!FALSEP(lib_)) {
      library = C_PTR(lib_);
      dlclose(library);
    }
    alist_ = CDR(alist_);
  }

  return uim_scm_t();
}
示例#12
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_addrinfo_ref_ai_socktype(uim_lisp addrinfo_)
{
  struct addrinfo *addrinfo = C_PTR(addrinfo_);

  return MAKE_INT(addrinfo->ai_socktype);
}
示例#13
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_addrinfo_ref_ai_protocol(uim_lisp addrinfo_)
{
  struct addrinfo *addrinfo = C_PTR(addrinfo_);

  return MAKE_INT(addrinfo->ai_protocol);
}
示例#14
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_addrinfo_ref_ai_family(uim_lisp addrinfo_)
{
  struct addrinfo *addrinfo = C_PTR(addrinfo_);

  return MAKE_INT(addrinfo->ai_family);
}
示例#15
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_ref_sockaddr_un_sun_path(uim_lisp sun_)
{
  struct sockaddr_un *s_un = C_PTR(sun_);

  return MAKE_STR(s_un->sun_path);
}
示例#16
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_set_sockaddr_un_sun_path(uim_lisp sun_, uim_lisp path_)
{
  struct sockaddr_un *s_un = C_PTR(sun_);

  strlcpy(s_un->sun_path, REFER_C_STR(path_), sizeof(s_un->sun_path));
  return uim_scm_t();
}
示例#17
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_addrinfo_set_ai_family(uim_lisp addrinfo_, uim_lisp ai_family_)
{
  struct addrinfo *addrinfo = C_PTR(addrinfo_);

  addrinfo->ai_family = C_INT(ai_family_);
  return uim_scm_t();
}
示例#18
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_delete_sockaddr_un(uim_lisp sun_)
{
  struct sockaddr_un *s_un = C_PTR(sun_);

  free(s_un);
  return uim_scm_t();
}
示例#19
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_addrinfo_set_ai_protocol(uim_lisp addrinfo_, uim_lisp ai_protocol_)
{
  struct addrinfo *addrinfo = C_PTR(addrinfo_);

  addrinfo->ai_protocol = C_INT(ai_protocol_);
  return uim_scm_t();
}
示例#20
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_addrinfo_set_ai_socktype(uim_lisp addrinfo_, uim_lisp ai_socktype_)
{
  struct addrinfo *addrinfo = C_PTR(addrinfo_);

  addrinfo->ai_socktype = C_INT(ai_socktype_);
  return uim_scm_t();
}
示例#21
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_set_sockaddr_un_sun_family(uim_lisp sun_, uim_lisp family_)
{
  struct sockaddr_un *s_un = C_PTR(sun_);

  s_un->sun_family = C_INT(family_);
  return uim_scm_t();
}
示例#22
0
static uim_lisp
uim_sqlite3_column_text(uim_lisp pStmt_, uim_lisp iCol_)
{
  const unsigned char *ret = sqlite3_column_text(C_PTR(pStmt_), C_INT(iCol_));
  if (ret)
    return MAKE_STR(ret);
  return uim_scm_f();
}
示例#23
0
obj_t make_c_pointer(obj_t /* <static-pointer-class> */ cls, void *ptr)
{
    obj_t res = alloc(cls, sizeof(struct c_pointer));

    C_PTR(res)->pointer = ptr;

    return res;
}
示例#24
0
文件: ffi.c 项目: NgoHuy/uim
static uim_lisp
c_dlclose(uim_lisp handle_)
{
  if (!PTRP(handle_))
    return uim_scm_f();
  dlclose(C_PTR(handle_));
  ffi_strerr_ = NULL;
  return uim_scm_t();
}
示例#25
0
文件: expat.c 项目: DirtYiCE/uim
static uim_lisp
uim_xml_set_characterdata_handler(uim_lisp ctx_, uim_lisp element_characterdata_)
{
  uim_xml_ctx *ctx = C_PTR(ctx_);

  ctx->data->characterdata_ = element_characterdata_;

  return uim_scm_t();
}
示例#26
0
文件: socket.c 项目: DirtYiCE/uim
static uim_lisp
c_accept(uim_lisp s_, uim_lisp storage_)
{
  socklen_t storagelen;
  struct sockaddr_storage *storage = C_PTR(storage_);

  storagelen = sizeof(struct sockaddr_storage);
  return MAKE_INT(accept(C_INT(s_), (struct sockaddr *)storage, &storagelen));
}
示例#27
0
文件: expat.c 项目: DirtYiCE/uim
static void *
uim_xml_parse_internal(struct uim_xml_parse_args *args)
{
  uim_xml_ctx *ctx = C_PTR(args->ctx_);
  const XML_Char *s = REFER_C_STR(args->s_);
  int isFinal = C_INT(args->isFinal_);

  XML_SetUserData(ctx->parser, ctx->data);
  return MAKE_INT(XML_Parse(ctx->parser, s, strlen(s), isFinal));
}
示例#28
0
文件: expat.c 项目: DirtYiCE/uim
static uim_lisp
uim_xml_set_element_handler(uim_lisp ctx_, uim_lisp element_start_, uim_lisp element_end_)
{
  uim_xml_ctx *ctx = C_PTR(ctx_);

  ctx->data->start_ = element_start_;
  ctx->data->end_   = element_end_;

  return uim_scm_t();
}
示例#29
0
static uim_lisp
uim_sqlite3_step(uim_lisp pStmt_)
{
  int ret;

  ret = sqlite3_step(C_PTR(pStmt_));
  if (ret != SQLITE_OK)
    uim_scm_f();
  return MAKE_INT(ret);
}
示例#30
0
文件: uim-func.c 项目: ghpenguin/uim
/* extract Scheme IM context from Scheme-object-wrapped uim_context */
static uim_lisp
im_retrieve_context(uim_lisp uc_)
{
    uim_context uc;

    uc = C_PTR(uc_);
    assert(uc);

    return uc->sc;
}