Merge pull request #38 from TheBlueMatt/main
[ldk-c-bindings] / lightning-c-bindings / src / lightning / util / logger.rs
index eddadf6d9fe8a32d6ed30e6989f8d3b3f57fa234..cec6bb5c2035480a69f7994dd2bbab496e1e5e86 100644 (file)
@@ -23,63 +23,57 @@ use crate::c_types::*;
 #[derive(Clone)]
 #[repr(C)]
 pub enum Level {
-       ///Designates logger being silent
-       Off,
-       /// Designates very serious errors
-       Error,
-       /// Designates hazardous situations
-       Warn,
-       /// Designates useful information
-       Info,
-       /// Designates lower priority information
-       Debug,
        /// Designates very low priority, often extremely verbose, information
        Trace,
+       /// Designates lower priority information
+       Debug,
+       /// Designates useful information
+       Info,
+       /// Designates hazardous situations
+       Warn,
+       /// Designates very serious errors
+       Error,
 }
 use lightning::util::logger::Level as nativeLevel;
 impl Level {
        #[allow(unused)]
        pub(crate) fn to_native(&self) -> nativeLevel {
                match self {
-                       Level::Off => nativeLevel::Off,
-                       Level::Error => nativeLevel::Error,
-                       Level::Warn => nativeLevel::Warn,
-                       Level::Info => nativeLevel::Info,
-                       Level::Debug => nativeLevel::Debug,
                        Level::Trace => nativeLevel::Trace,
+                       Level::Debug => nativeLevel::Debug,
+                       Level::Info => nativeLevel::Info,
+                       Level::Warn => nativeLevel::Warn,
+                       Level::Error => nativeLevel::Error,
                }
        }
        #[allow(unused)]
        pub(crate) fn into_native(self) -> nativeLevel {
                match self {
-                       Level::Off => nativeLevel::Off,
-                       Level::Error => nativeLevel::Error,
-                       Level::Warn => nativeLevel::Warn,
-                       Level::Info => nativeLevel::Info,
-                       Level::Debug => nativeLevel::Debug,
                        Level::Trace => nativeLevel::Trace,
+                       Level::Debug => nativeLevel::Debug,
+                       Level::Info => nativeLevel::Info,
+                       Level::Warn => nativeLevel::Warn,
+                       Level::Error => nativeLevel::Error,
                }
        }
        #[allow(unused)]
        pub(crate) fn from_native(native: &nativeLevel) -> Self {
                match native {
-                       nativeLevel::Off => Level::Off,
-                       nativeLevel::Error => Level::Error,
-                       nativeLevel::Warn => Level::Warn,
-                       nativeLevel::Info => Level::Info,
-                       nativeLevel::Debug => Level::Debug,
                        nativeLevel::Trace => Level::Trace,
+                       nativeLevel::Debug => Level::Debug,
+                       nativeLevel::Info => Level::Info,
+                       nativeLevel::Warn => Level::Warn,
+                       nativeLevel::Error => Level::Error,
                }
        }
        #[allow(unused)]
        pub(crate) fn native_into(native: nativeLevel) -> Self {
                match native {
-                       nativeLevel::Off => Level::Off,
-                       nativeLevel::Error => Level::Error,
-                       nativeLevel::Warn => Level::Warn,
-                       nativeLevel::Info => Level::Info,
-                       nativeLevel::Debug => Level::Debug,
                        nativeLevel::Trace => Level::Trace,
+                       nativeLevel::Debug => Level::Debug,
+                       nativeLevel::Info => Level::Info,
+                       nativeLevel::Warn => Level::Warn,
+                       nativeLevel::Error => Level::Error,
                }
        }
 }
@@ -88,6 +82,26 @@ impl Level {
 pub extern "C" fn Level_clone(orig: &Level) -> Level {
        orig.clone()
 }
+#[no_mangle]
+/// Utility method to constructs a new Trace-variant Level
+pub extern "C" fn Level_trace() -> Level {
+       Level::Trace}
+#[no_mangle]
+/// Utility method to constructs a new Debug-variant Level
+pub extern "C" fn Level_debug() -> Level {
+       Level::Debug}
+#[no_mangle]
+/// Utility method to constructs a new Info-variant Level
+pub extern "C" fn Level_info() -> Level {
+       Level::Info}
+#[no_mangle]
+/// Utility method to constructs a new Warn-variant Level
+pub extern "C" fn Level_warn() -> Level {
+       Level::Warn}
+#[no_mangle]
+/// Utility method to constructs a new Error-variant Level
+pub extern "C" fn Level_error() -> Level {
+       Level::Error}
 /// Checks if two Levels contain equal inner contents.
 /// This ignores pointers and is_owned flags and looks at the values in fields.
 #[no_mangle]
@@ -123,6 +137,16 @@ pub struct Logger {
        /// Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
        pub free: Option<extern "C" fn(this_arg: *mut c_void)>,
 }
+unsafe impl Send for Logger {}
+unsafe impl Sync for Logger {}
+#[no_mangle]
+pub(crate) extern "C" fn Logger_clone_fields(orig: &Logger) -> Logger {
+       Logger {
+               this_arg: orig.this_arg,
+               log: Clone::clone(&orig.log),
+               free: Clone::clone(&orig.free),
+       }
+}
 
 use lightning::util::logger::Logger as rustLogger;
 impl rustLogger for Logger {