add null_void

gui-branch
an 2019-03-29 14:32:17 -04:00
parent b8e624fecd
commit 1a3145b5b6
2 changed files with 20 additions and 2 deletions

View File

@ -9,15 +9,29 @@ macro_rules! c_str {
($s:expr) => {concat!($s, "\0").as_ptr() as $crate::durandal::ffi::NT}; ($s:expr) => {concat!($s, "\0").as_ptr() as $crate::durandal::ffi::NT};
} }
#[inline]
pub const fn null_void() -> *const c_void
{
null()
}
#[inline]
pub const fn null_mut_void() -> *mut c_void
{
null_mut()
}
impl CStringVec impl CStringVec
{ {
/// Creates a new empty CStringVec. /// Creates a new empty CStringVec.
#[inline]
pub fn new() -> Self pub fn new() -> Self
{ {
Self{sv: Vec::new(), cv: vec![null()]} Self{sv: Vec::new(), cv: vec![null()]}
} }
/// Creates a new `CStringVec` from an iterator. /// Creates a new `CStringVec` from an iterator.
#[inline]
pub fn new_from_iter<'a, I: Iterator<Item = &'a str>>(it: I) pub fn new_from_iter<'a, I: Iterator<Item = &'a str>>(it: I)
-> ResultS<Self> -> ResultS<Self>
{ {
@ -31,6 +45,7 @@ impl CStringVec
} }
/// Pushes a new `CString`. /// Pushes a new `CString`.
#[inline]
pub fn push(&mut self, st: CString) pub fn push(&mut self, st: CString)
{ {
self.cv.insert(self.cv.len() - 1, st.as_ptr()); self.cv.insert(self.cv.len() - 1, st.as_ptr());
@ -38,12 +53,14 @@ impl CStringVec
} }
/// Returns the FFI pointer. /// Returns the FFI pointer.
#[inline]
pub fn as_ptr(&self) -> *const NT pub fn as_ptr(&self) -> *const NT
{ {
self.cv.as_ptr() self.cv.as_ptr()
} }
/// Returns the FFI pointer mutably. /// Returns the FFI pointer mutably.
#[inline]
pub fn as_mut_ptr(&mut self) -> *mut NT pub fn as_mut_ptr(&mut self) -> *mut NT
{ {
self.cv.as_mut_ptr() self.cv.as_mut_ptr()
@ -52,6 +69,7 @@ impl CStringVec
impl Default for CStringVec impl Default for CStringVec
{ {
#[inline]
fn default() -> Self {Self::new()} fn default() -> Self {Self::new()}
} }

View File

@ -1,6 +1,6 @@
use maraiah::{durandal::{err::*, file::*, image::*, sound::*}, use maraiah::{durandal::{err::*, file::*, image::*, sound::*},
marathon::{machdr, ppm, shp, snd, tga, wad, wav}}; marathon::{machdr, ppm, shp, snd, tga, wad, wav}};
use std::{fs, io}; use std::{fs, io, slice::from_ref};
fn make_tga(_opt: &Options, fname: &str, im: &impl Image) -> ResultS<()> fn make_tga(_opt: &Options, fname: &str, im: &impl Image) -> ResultS<()>
{ {
@ -140,7 +140,7 @@ fn main() -> ResultS<()>
macro_rules! arg { macro_rules! arg {
($name:expr, $ref:expr, $type:expr, $desc:expr) => { ($name:expr, $ref:expr, $type:expr, $desc:expr) => {
ap.refer(&mut $ref).add_option(&[$name], $type, $desc); ap.refer(&mut $ref).add_option(from_ref(&$name), $type, $desc);
}; };
} }