mirror of
https://github.com/ddnet/ddnet.git
synced 2024-10-20 15:58:18 +00:00
60 lines
1.7 KiB
Rust
60 lines
1.7 KiB
Rust
|
use super::CFGFLAG_CLIENT;
|
||
|
use super::CFGFLAG_SERVER;
|
||
|
use ddnet_base::s;
|
||
|
use ddnet_base::UserPtr;
|
||
|
use ddnet_engine::gs_ConsoleDefaultColor;
|
||
|
use ddnet_engine::IConsole;
|
||
|
use ddnet_engine::IConsole_FCommandCallback;
|
||
|
use ddnet_engine::IConsole_IResult;
|
||
|
use ddnet_engine::IConsole_OUTPUT_LEVEL_STANDARD;
|
||
|
use std::pin::Pin;
|
||
|
|
||
|
#[cxx::bridge]
|
||
|
mod ffi {
|
||
|
extern "C++" {
|
||
|
include!("base/rust.h");
|
||
|
include!("engine/console.h");
|
||
|
|
||
|
type IConsole = ddnet_engine::IConsole;
|
||
|
}
|
||
|
extern "Rust" {
|
||
|
fn RustVersionPrint(console: &IConsole);
|
||
|
fn RustVersionRegister(console: Pin<&mut IConsole>);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// Print the Rust version used for compiling this crate.
|
||
|
///
|
||
|
/// Uses [`IConsole::Print`] for printing.
|
||
|
#[allow(non_snake_case)]
|
||
|
pub fn RustVersionPrint(console: &IConsole) {
|
||
|
console.Print(
|
||
|
IConsole_OUTPUT_LEVEL_STANDARD,
|
||
|
s!("rust_version"),
|
||
|
s!(include_str!(concat!(env!("OUT_DIR"), "/rustc-version"))),
|
||
|
gs_ConsoleDefaultColor,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[allow(non_snake_case)]
|
||
|
extern "C" fn PrintRustVersionCallback(_: &IConsole_IResult, user: UserPtr) {
|
||
|
RustVersionPrint(unsafe { user.cast() })
|
||
|
}
|
||
|
|
||
|
/// Register the `rust_version` command to the given console instance.
|
||
|
///
|
||
|
/// This command calls the [`RustVersionPrint`] function to print the Rust
|
||
|
/// version used for compiling this crate.
|
||
|
#[allow(non_snake_case)]
|
||
|
pub fn RustVersionRegister(console: Pin<&mut IConsole>) {
|
||
|
let user = console.as_ref().get_ref().into();
|
||
|
console.Register(
|
||
|
s!("rust_version"),
|
||
|
s!(""),
|
||
|
CFGFLAG_CLIENT | CFGFLAG_SERVER,
|
||
|
IConsole_FCommandCallback(PrintRustVersionCallback),
|
||
|
user,
|
||
|
s!("Prints the Rust version used to compile DDNet"),
|
||
|
);
|
||
|
}
|