better macro usage
This commit is contained in:
parent
5b501c7a8c
commit
80252e4335
3 changed files with 18 additions and 9 deletions
9
Cargo.lock
generated
9
Cargo.lock
generated
|
|
@ -1,6 +1,12 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "ident_concat"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d8a30341e754d424ef08dbc16d24564ed3438dc6ffcf72cdbd91529496e362e"
|
||||
|
||||
[[package]]
|
||||
name = "multicall"
|
||||
|
|
@ -18,6 +24,7 @@ checksum = "b03f7fbd470aa8b3ad163c85cce8bccfc11cc9c44ef12da0a4eddd98bd307352"
|
|||
name = "spl"
|
||||
version = "0.4.2"
|
||||
dependencies = [
|
||||
"ident_concat",
|
||||
"multicall",
|
||||
"readformat",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -10,3 +10,4 @@ authors = ["TudbuT"]
|
|||
[dependencies]
|
||||
readformat = "0.1"
|
||||
multicall = "0.1"
|
||||
ident_concat = "0.3"
|
||||
|
|
|
|||
17
src/lib.rs
17
src/lib.rs
|
|
@ -39,6 +39,7 @@ pub mod stream;
|
|||
pub use lexer::*;
|
||||
pub use runtime::*;
|
||||
|
||||
use ident_concat::ident;
|
||||
use std::fs;
|
||||
|
||||
/// Creates a runtime, lexes and executes some SPL code from a file, returning the stack that was
|
||||
|
|
@ -104,8 +105,8 @@ nofmt! {
|
|||
#[macro_export]
|
||||
macro_rules! require_mut_on_stack {
|
||||
($name:tt, $type:tt, $stack:expr, $fn:literal) => {
|
||||
let binding = $stack.pop();
|
||||
let Value::$type(ref mut $name) = binding.lock().native else {
|
||||
let ident!($name binding) = $stack.pop();
|
||||
let Value::$type(ref mut $name) = ident!($name binding).lock().native else {
|
||||
return $stack.err(ErrorKind::InvalidCall($fn.to_owned()))
|
||||
};
|
||||
};
|
||||
|
|
@ -146,15 +147,15 @@ nofmt! {
|
|||
#[macro_export]
|
||||
macro_rules! require_array_on_stack {
|
||||
($name:tt, $stack:expr, $fn:literal) => {
|
||||
let binding = $stack.pop();
|
||||
require_array!($name, binding, $stack, $fn)
|
||||
let ident!($name binding) = $stack.pop();
|
||||
require_array!($name, ident!($name binding), $stack, $fn)
|
||||
};
|
||||
}
|
||||
#[macro_export]
|
||||
macro_rules! require_byte_array_on_stack {
|
||||
($name:tt, $stack:expr, $fn:literal) => {
|
||||
let binding = $stack.pop();
|
||||
let $name = match binding.lock_ro().native {
|
||||
let ident!($name binding) = $stack.pop();
|
||||
let $name = match ident!($name binding).lock_ro().native {
|
||||
Value::Array(ref x) => x
|
||||
.iter()
|
||||
.cloned()
|
||||
|
|
@ -178,8 +179,8 @@ nofmt! {
|
|||
#[macro_export]
|
||||
macro_rules! require_mut_array_on_stack {
|
||||
($name:tt, $stack:expr, $fn:literal) => {
|
||||
let binding = $stack.pop();
|
||||
require_mut_array!($name, binding, $stack, $fn)
|
||||
let ident!($name binding) = $stack.pop();
|
||||
require_mut_array!($name, ident!($name binding), $stack, $fn)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue