Skip to main content

samp_sdk/omp/generated/
db_row.rs

1//! `IDatabaseResultSetRow` — generated by `cargo xtask gen-omp` from `Server/Components/Databases/databases.hpp`.
2//! Implemented by `DatabaseResultSetRow` in the server's `Databases`.
3//!
4//! Do not edit: change `xtask/omp-wrappers.toml` or the generator and
5//! regenerate. Slots are clang's layout of the header for each ABI, checked
6//! against the official binaries by `cargo xtask check-abi --generated`.
7
8#![allow(unused_imports)]
9
10use crate::omp::containers::{FlatSet, HybridString, Pair, Span};
11use crate::omp::types::{
12    Colour, GTAQuat, Hours, Microseconds, Milliseconds, Minutes, Seconds, StringView, TimePoint,
13    UID, Vector2, Vector3, Vector4, WorldTimePoint,
14};
15use crate::omp::vtable::{call_vtable_small_struct, opaque, slots, virtual_fns};
16use crate::omp::*;
17
18opaque! {
19    /// Opaque handle for `IDatabaseResultSetRow*`.
20    pub IDatabaseResultSetRow;
21}
22
23slots! {
24    /// `std::size_t IDatabaseResultSetRow::getFieldCount()`
25    SLOT_GET_FIELD_COUNT: usize = 0, 0;
26    /// `bool IDatabaseResultSetRow::isFieldNameAvailable(StringView)`
27    SLOT_IS_FIELD_NAME_AVAILABLE: usize = 1, 1;
28    /// `StringView IDatabaseResultSetRow::getFieldName(std::size_t)`
29    SLOT_GET_FIELD_NAME: usize = 2, 2;
30    /// `StringView IDatabaseResultSetRow::getFieldString(std::size_t)`
31    SLOT_GET_FIELD_STRING: usize = 3, 3;
32    /// `long IDatabaseResultSetRow::getFieldInt(std::size_t)`
33    SLOT_GET_FIELD_INT: usize = 4, 4;
34    /// `double IDatabaseResultSetRow::getFieldFloat(std::size_t)`
35    SLOT_GET_FIELD_FLOAT: usize = 5, 5;
36    /// `StringView IDatabaseResultSetRow::getFieldStringByName(StringView)`
37    SLOT_GET_FIELD_STRING_BY_NAME: usize = 6, 6;
38    /// `long IDatabaseResultSetRow::getFieldIntByName(StringView)`
39    SLOT_GET_FIELD_INT_BY_NAME: usize = 7, 7;
40    /// `double IDatabaseResultSetRow::getFieldFloatByName(StringView)`
41    SLOT_GET_FIELD_FLOAT_BY_NAME: usize = 8, 8;
42}
43
44virtual_fns! {
45    /// `std::size_t IDatabaseResultSetRow::getFieldCount()`.
46    ///
47    /// # Safety
48    /// `row` must be a live `IDatabaseResultSetRow`.
49    #[must_use]
50    pub fn db_row_field_count(row: IDatabaseResultSetRow) -> usize = [0, SLOT_GET_FIELD_COUNT] or 0;
51
52    /// `bool IDatabaseResultSetRow::isFieldNameAvailable(StringView)`.
53    ///
54    /// # Safety
55    /// `row` must be a live `IDatabaseResultSetRow`.
56    #[must_use]
57    pub fn db_row_is_field_name_available(
58        row: IDatabaseResultSetRow,
59        field_name: StringView,
60    ) -> bool = [0, SLOT_IS_FIELD_NAME_AVAILABLE] or false;
61
62    /// `long IDatabaseResultSetRow::getFieldInt(std::size_t)`.
63    ///
64    /// # Safety
65    /// `row` must be a live `IDatabaseResultSetRow`.
66    #[must_use]
67    pub fn db_row_field_int(
68        row: IDatabaseResultSetRow,
69        field_index: usize,
70    ) -> i32 = [0, SLOT_GET_FIELD_INT] or 0;
71
72    /// `double IDatabaseResultSetRow::getFieldFloat(std::size_t)`.
73    ///
74    /// # Safety
75    /// `row` must be a live `IDatabaseResultSetRow`.
76    #[must_use]
77    pub fn db_row_field_float(
78        row: IDatabaseResultSetRow,
79        field_index: usize,
80    ) -> f64 = [0, SLOT_GET_FIELD_FLOAT] or 0.0;
81
82    /// `long IDatabaseResultSetRow::getFieldIntByName(StringView)`.
83    ///
84    /// # Safety
85    /// `row` must be a live `IDatabaseResultSetRow`.
86    #[must_use]
87    pub fn db_row_field_int_by_name(
88        row: IDatabaseResultSetRow,
89        field_name: StringView,
90    ) -> i32 = [0, SLOT_GET_FIELD_INT_BY_NAME] or 0;
91
92    /// `double IDatabaseResultSetRow::getFieldFloatByName(StringView)`.
93    ///
94    /// # Safety
95    /// `row` must be a live `IDatabaseResultSetRow`.
96    #[must_use]
97    pub fn db_row_field_float_by_name(
98        row: IDatabaseResultSetRow,
99        field_name: StringView,
100    ) -> f64 = [0, SLOT_GET_FIELD_FLOAT_BY_NAME] or 0.0;
101}
102
103/// `StringView IDatabaseResultSetRow::getFieldName(std::size_t)`.
104///
105/// # Safety
106/// `row` must be a live `IDatabaseResultSetRow`.
107#[must_use]
108pub unsafe fn db_row_field_name(
109    row: *mut IDatabaseResultSetRow,
110    field_index: usize,
111) -> Option<String> {
112    let view = call_vtable_small_struct!(
113        row.cast::<u8>(),
114        0,
115        SLOT_GET_FIELD_NAME,
116        StringView,
117        StringView::EMPTY,
118        (usize)(field_index)
119    )?;
120    unsafe { view.to_owned_string() }
121}
122
123/// `StringView IDatabaseResultSetRow::getFieldString(std::size_t)`.
124///
125/// # Safety
126/// `row` must be a live `IDatabaseResultSetRow`.
127#[must_use]
128pub unsafe fn db_row_field_string(
129    row: *mut IDatabaseResultSetRow,
130    field_index: usize,
131) -> Option<String> {
132    let view = call_vtable_small_struct!(
133        row.cast::<u8>(),
134        0,
135        SLOT_GET_FIELD_STRING,
136        StringView,
137        StringView::EMPTY,
138        (usize)(field_index)
139    )?;
140    unsafe { view.to_owned_string() }
141}
142
143/// `StringView IDatabaseResultSetRow::getFieldStringByName(StringView)`.
144///
145/// # Safety
146/// `row` must be a live `IDatabaseResultSetRow`.
147#[must_use]
148pub unsafe fn db_row_field_string_by_name(
149    row: *mut IDatabaseResultSetRow,
150    field_name: StringView,
151) -> Option<String> {
152    let view = call_vtable_small_struct!(
153        row.cast::<u8>(),
154        0,
155        SLOT_GET_FIELD_STRING_BY_NAME,
156        StringView,
157        StringView::EMPTY,
158        (StringView)(field_name)
159    )?;
160    unsafe { view.to_owned_string() }
161}