1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
// cala_core // // Copyright (c) 2020 Jeron Aldaron Lau // // Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or // https://apache.org/licenses/LICENSE-2.0>, or the Zlib License, <LICENSE-ZLIB // or http://opensource.org/licenses/Zlib>, at your option. This file may not be // copied, modified, or distributed except according to those terms. //! # Getting Started //! Add the following to your `Cargo.toml`: //! ```toml //! [dependencies.cala_core] //! version = "0.1.0" //! ``` //! //! ```rust //! // TODO //! ``` #![doc( html_logo_url = "https://raw.githubusercontent.com/libcala/cala_core/master/res/logo.svg", html_favicon_url = "https://raw.githubusercontent.com/libcala/cala_core/master/res/logo.svg", html_root_url = "https://docs.rs/cala_core" )] #![deny(unsafe_code)] #![warn( anonymous_parameters, missing_copy_implementations, missing_debug_implementations, missing_docs, nonstandard_style, rust_2018_idioms, single_use_lifetimes, trivial_casts, trivial_numeric_casts, unreachable_pub, unused_extern_crates, unused_qualifications, variant_size_differences )] #[cfg(all(feature = "stdweb", not(feature = "wasm-bindgen")))] #[macro_use] extern crate stdweb; #[cfg(all(feature = "cala", not(target_arch = "wasm32")))] #[doc(hidden)] pub extern crate pasts; pub mod os; /// **cala**: Set an asynchronous function as the entry point for the program. #[cfg(all(feature = "cala", not(target_arch = "wasm32")))] #[macro_export] macro_rules! exec { ($main:ident) => { fn main() { use $crate::pasts::Executor; static EXECUTOR: $crate::pasts::CvarExec = $crate::pasts::CvarExec::new(); EXECUTOR.block_on($main()); } }; } /// **cala**: Set an asynchronous function as the entry point for the program. #[cfg(all(feature = "cala", target_arch = "wasm32"))] #[macro_export] macro_rules! exec { ($main:ident) => { mod main { // Web Assembly "main" function #[no_mangle] extern "C" fn wasm_main() { $crate::os::web::panic_hook(); $crate::os::web::block_on(super::$main()); } } }; } /*/// Set a function as the entry point for the program. #[cfg(all(target_os = "android", not(target_arch = "wasm32")))] #[macro_export] macro_rules! main { ($main:expr) => { mod __cala_core_macro_generated { use super::*; /// Called from NativeActivity JNI #[no_mangle] pub extern "C" fn android_main( state: *mut c_void, /*AndroidApp*/ ) -> () { $main($crate::System); } } }; } /// Set a function as the entry point for the program. #[cfg(all(target_os = "windows", not(target_arch = "wasm32")))] #[macro_export] macro_rules! main { ($main:expr) => { mod __cala_core_macro_generated { use super::*; /// Called from Windows Runtime #[no_mangle] pub extern "C" fn wWinMain( _h_instance: *mut c_void, _h_prev_instance: *mut c_void, _p_cmd_line: *mut u16, _n_cmd_show: c_int, ) -> c_int { $main($crate::System); 0 } } }; } /// Set a function as the entry point for the program. #[cfg(not(any( target_arch = "wasm32", target_os = "android", target_os = "windows", )))] #[macro_export] macro_rules! main { ($main:expr) => { fn main() { $main($crate::System); } }; }*/