コード例 #1
0
ファイル: pdo_sqlite.cpp プロジェクト: Dx3webs/hhvm
bool PDOSqliteConnection::createFunction(const String& name,
                                         CVarRef callback,
                                         int argcount) {
  if (!f_is_callable(callback)) {
    raise_warning("function '%s' is not callable", callback.toString().data());
    return false;
  }

  c_SQLite3::UserDefinedFuncPtr udf(new c_SQLite3::UserDefinedFunc());
  auto stat = sqlite3_create_function(m_db, name.data(), argcount, SQLITE_UTF8,
                                      udf.get(), php_sqlite3_callback_func,
                                      nullptr, nullptr);
  if (stat != SQLITE_OK) {
    return false;
  }
  udf->func = callback;
  udf->argc = argcount;
  m_udfs.push_back(udf);
  return true;
}
コード例 #2
0
ファイル: ext_sqlite3.cpp プロジェクト: Diego-Brocanelli/hhvm
bool c_SQLite3::t_createfunction(const String& name, CVarRef callback,
                                 int64_t argcount /* = -1 */) {
  validate();
  if (name.empty()) {
    return false;
  }
  if (!f_is_callable(callback)) {
    raise_warning("Not a valid callback function %s",
                  callback.toString().data());
    return false;
  }

  UserDefinedFuncPtr udf(new UserDefinedFunc());
  if (sqlite3_create_function(m_raw_db, name.data(), argcount, SQLITE_UTF8,
                              udf.get(), php_sqlite3_callback_func,
                              NULL, NULL) == SQLITE_OK) {
    udf->func = callback;
    udf->argc = argcount;
    m_udfs.push_back(udf);
    return true;
  }
  return false;
}