rust-samp-sdk 3.6.0

Low-level FFI bindings for the SA-MP AMX virtual machine and open.mp native component ABI. Used internally by `rust-samp`; depend on it directly only if you need raw access without the higher-level macros and lifecycle.
Documentation
//! `IDatabasesComponent` — generated by `cargo xtask gen-omp` from `Server/Components/Databases/databases.hpp`.
//! Implemented by `DatabasesComponent` in the server's `Databases`.
//!
//! Do not edit: change `xtask/omp-wrappers.toml` or the generator and
//! regenerate. Slots are clang's layout of the header for each ABI, checked
//! against the official binaries by `cargo xtask check-abi --generated`.

#![allow(unused_imports)]

use crate::omp::containers::{FlatSet, HybridString, Pair, Span};
use crate::omp::types::{
    Colour, GTAQuat, Hours, Microseconds, Milliseconds, Minutes, Seconds, StringView, TimePoint,
    UID, Vector2, Vector3, Vector4, WorldTimePoint,
};
use crate::omp::vtable::{call_vtable_small_struct, opaque, slots, virtual_fns};
use crate::omp::*;

opaque! {
    /// Opaque handle for `IDatabasesComponent*`.
    pub IDatabasesComponent;
}

/// `DatabasesComponent_UID` in `Server/Components/Databases/databases.hpp`.
pub const DATABASES_COMPONENT_UID: UID = 0x80092e7eb5821a96;

impl ComponentInterface for IDatabasesComponent {
    const UID: UID = DATABASES_COMPONENT_UID;
}

slots! {
    /// `IDatabaseConnection * IDatabasesComponent::open(StringView, int)`
    SLOT_OPEN: usize = 18, 16;
    /// `bool IDatabasesComponent::close(IDatabaseConnection &)`
    SLOT_CLOSE: usize = 19, 17;
    /// `bool IDatabasesComponent::freeResultSet(IDatabaseResultSet &)`
    SLOT_FREE_RESULT_SET: usize = 20, 18;
    /// `std::size_t IDatabasesComponent::getDatabaseConnectionCount()`
    SLOT_GET_DATABASE_CONNECTION_COUNT: usize = 21, 19;
    /// `bool IDatabasesComponent::isDatabaseConnectionIDValid(int)`
    SLOT_IS_DATABASE_CONNECTION_ID_VALID: usize = 22, 20;
    /// `IDatabaseConnection & IDatabasesComponent::getDatabaseConnectionByID(int)`
    SLOT_GET_DATABASE_CONNECTION_BY_ID: usize = 23, 21;
    /// `std::size_t IDatabasesComponent::getDatabaseResultSetCount()`
    SLOT_GET_DATABASE_RESULT_SET_COUNT: usize = 24, 22;
    /// `bool IDatabasesComponent::isDatabaseResultSetIDValid(int)`
    SLOT_IS_DATABASE_RESULT_SET_ID_VALID: usize = 25, 23;
    /// `IDatabaseResultSet & IDatabasesComponent::getDatabaseResultSetByID(int)`
    SLOT_GET_DATABASE_RESULT_SET_BY_ID: usize = 26, 24;
}

virtual_fns! {
    /// `IDatabaseConnection * IDatabasesComponent::open(StringView, int)`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_open(
        component: IDatabasesComponent,
        path: StringView,
        flags: i32,
    ) -> *mut IDatabaseConnection = [0, SLOT_OPEN] or std::ptr::null_mut();

    /// `bool IDatabasesComponent::close(IDatabaseConnection &)`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_close(
        component: IDatabasesComponent,
        connection: *mut IDatabaseConnection,
    ) -> bool = [0, SLOT_CLOSE] or false;

    /// `bool IDatabasesComponent::freeResultSet(IDatabaseResultSet &)`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_free_result_set(
        component: IDatabasesComponent,
        result_set: *mut IDatabaseResultSet,
    ) -> bool = [0, SLOT_FREE_RESULT_SET] or false;

    /// `std::size_t IDatabasesComponent::getDatabaseConnectionCount()`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_database_connection_count(
        component: IDatabasesComponent,
    ) -> usize = [0, SLOT_GET_DATABASE_CONNECTION_COUNT] or 0;

    /// `bool IDatabasesComponent::isDatabaseConnectionIDValid(int)`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_is_database_connection_id_valid(
        component: IDatabasesComponent,
        database_connection_id: i32,
    ) -> bool = [0, SLOT_IS_DATABASE_CONNECTION_ID_VALID] or false;

    /// `IDatabaseConnection & IDatabasesComponent::getDatabaseConnectionByID(int)`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_database_connection_by_id(
        component: IDatabasesComponent,
        database_connection_id: i32,
    ) -> *mut IDatabaseConnection = [0, SLOT_GET_DATABASE_CONNECTION_BY_ID] or std::ptr::null_mut();

    /// `std::size_t IDatabasesComponent::getDatabaseResultSetCount()`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_database_result_set_count(
        component: IDatabasesComponent,
    ) -> usize = [0, SLOT_GET_DATABASE_RESULT_SET_COUNT] or 0;

    /// `bool IDatabasesComponent::isDatabaseResultSetIDValid(int)`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_is_database_result_set_id_valid(
        component: IDatabasesComponent,
        database_result_set_id: i32,
    ) -> bool = [0, SLOT_IS_DATABASE_RESULT_SET_ID_VALID] or false;

    /// `IDatabaseResultSet & IDatabasesComponent::getDatabaseResultSetByID(int)`.
    ///
    /// # Safety
    /// `component` must be a live `IDatabasesComponent`.
    #[must_use]
    pub fn databases_database_result_set_by_id(
        component: IDatabasesComponent,
        database_result_set_id: i32,
    ) -> *mut IDatabaseResultSet = [0, SLOT_GET_DATABASE_RESULT_SET_BY_ID] or std::ptr::null_mut();
}