pxl_rust/runtime.rs
1//! Binding for pxl::runtime in PXL C++ library.
2//! This module provides functions in pxl::runtime namespace.
3
4pub mod context;
5pub use context::Context;
6
7pub mod job;
8pub use job::Job;
9
10pub mod map;
11pub use map::Map;
12
13pub mod stream;
14pub use stream::Stream;
15
16use crate::ffi;
17
18/// Get number of devices available.
19/// # Returns
20/// * Number of devices available.
21/// # Examples
22/// ```
23/// use pxl_rust::runtime::get_num_device();
24/// let num_devices = pxl::runtime::get_num_device();
25/// ```
26pub fn get_num_device() -> u32 {
27 ffi::getNumDevice()
28}
29
30/// Create a new `Context` object.
31/// # Arguments
32/// * `device_id` - Device ID to create the context for.
33/// # Returns
34/// * A new `Context` object.
35/// # Examples
36/// ```
37/// use pxl_rust::runtime::create_context;
38/// let context = create_context(0);
39/// ```
40pub fn create_context(device_id: u32) -> Context {
41 Context::new(device_id)
42}
43
44/// Destroy a `Context` object.
45/// # Arguments
46/// * `context` - Context to destroy.
47/// # Examples
48/// ```
49/// use pxl_rust::runtime::destroy_context;
50/// destroy_context(context);
51/// ```
52pub fn destroy_context(context: Context) {
53 let mut context = context;
54 context.destroy();
55}
56
57/// Create a new `Stream` object.
58/// # Returns
59/// * A new `Stream` object.
60/// # Examples
61/// ```
62/// use pxl_rust::runtime::create_stream;
63/// let stream = create_stream();
64/// ```
65pub fn create_stream() -> Stream {
66 Stream::new()
67}
68
69/// Destroy a `Stream` object.
70/// # Arguments
71/// * `stream` - Stream to destroy.
72/// # Examples
73/// ```
74/// use pxl_rust::runtime::destroy_stream;
75/// destroy_stream(stream);
76/// ```
77pub fn destroy_stream(stream: Stream) {
78 let mut stream = stream;
79 stream.destroy();
80}