Skip to content

Commit

Permalink
More cleanup:
Browse files Browse the repository at this point in the history
- Some renames to better reflect what's going on inside vm/
- Remove an unnecessary Arc for each builtin function, and use Box instead.
- Formatting and stuff
  • Loading branch information
rdaum committed Jul 5, 2024
1 parent 39e500d commit da4abec
Show file tree
Hide file tree
Showing 35 changed files with 376 additions and 361 deletions.
25 changes: 12 additions & 13 deletions crates/kernel/src/builtins/bf_list_sets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
//

use std::ops::BitOr;
use std::sync::Arc;

use onig::{Region, SearchOptions, SyntaxOperator};

Expand All @@ -26,7 +25,7 @@ use moor_values::var::{v_listv, Error};
use crate::bf_declare;
use crate::builtins::BfRet::Ret;
use crate::builtins::{BfCallState, BfErr, BfRet, BuiltinFunction};
use crate::vm::vm_execute::one_to_zero_index;
use crate::vm::moo_execute::one_to_zero_index;

fn bf_is_member(bf_args: &mut BfCallState<'_>) -> Result<BfRet, BfErr> {
if bf_args.args.len() != 2 {
Expand Down Expand Up @@ -423,17 +422,17 @@ fn bf_substitute(bf_args: &mut BfCallState<'_>) -> Result<BfRet, BfErr> {
}
bf_declare!(substitute, bf_substitute);

pub(crate) fn register_bf_list_sets(builtins: &mut [Arc<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("is_member")] = Arc::new(BfIsMember {});
builtins[offset_for_builtin("listinsert")] = Arc::new(BfListinsert {});
builtins[offset_for_builtin("listappend")] = Arc::new(BfListappend {});
builtins[offset_for_builtin("listdelete")] = Arc::new(BfListdelete {});
builtins[offset_for_builtin("listset")] = Arc::new(BfListset {});
builtins[offset_for_builtin("setadd")] = Arc::new(BfSetadd {});
builtins[offset_for_builtin("setremove")] = Arc::new(BfSetremove {});
builtins[offset_for_builtin("match")] = Arc::new(BfMatch {});
builtins[offset_for_builtin("rmatch")] = Arc::new(BfRmatch {});
builtins[offset_for_builtin("substitute")] = Arc::new(BfSubstitute {});
pub(crate) fn register_bf_list_sets(builtins: &mut [Box<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("is_member")] = Box::new(BfIsMember {});
builtins[offset_for_builtin("listinsert")] = Box::new(BfListinsert {});
builtins[offset_for_builtin("listappend")] = Box::new(BfListappend {});
builtins[offset_for_builtin("listdelete")] = Box::new(BfListdelete {});
builtins[offset_for_builtin("listset")] = Box::new(BfListset {});
builtins[offset_for_builtin("setadd")] = Box::new(BfSetadd {});
builtins[offset_for_builtin("setremove")] = Box::new(BfSetremove {});
builtins[offset_for_builtin("match")] = Box::new(BfMatch {});
builtins[offset_for_builtin("rmatch")] = Box::new(BfRmatch {});
builtins[offset_for_builtin("substitute")] = Box::new(BfSubstitute {});
}

#[cfg(test)]
Expand Down
46 changes: 22 additions & 24 deletions crates/kernel/src/builtins/bf_num.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
// this program. If not, see <https://www.gnu.org/licenses/>.
//

use std::sync::Arc;

use decorum::R64;
use rand::Rng;

Expand Down Expand Up @@ -364,26 +362,26 @@ fn bf_trunc(bf_args: &mut BfCallState<'_>) -> Result<BfRet, BfErr> {
}
bf_declare!(trunc, bf_trunc);

pub(crate) fn register_bf_num(builtins: &mut [Arc<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("abs")] = Arc::new(BfAbs {});
builtins[offset_for_builtin("min")] = Arc::new(BfMin {});
builtins[offset_for_builtin("max")] = Arc::new(BfMax {});
builtins[offset_for_builtin("random")] = Arc::new(BfRandom {});
builtins[offset_for_builtin("floatstr")] = Arc::new(BfFloatstr {});
builtins[offset_for_builtin("sqrt")] = Arc::new(BfSqrt {});
builtins[offset_for_builtin("sin")] = Arc::new(BfSin {});
builtins[offset_for_builtin("cos")] = Arc::new(BfCos {});
builtins[offset_for_builtin("tan")] = Arc::new(BfTan {});
builtins[offset_for_builtin("asin")] = Arc::new(BfAsin {});
builtins[offset_for_builtin("acos")] = Arc::new(BfAcos {});
builtins[offset_for_builtin("atan")] = Arc::new(BfAtan {});
builtins[offset_for_builtin("sinh")] = Arc::new(BfSinh {});
builtins[offset_for_builtin("cosh")] = Arc::new(BfCosh {});
builtins[offset_for_builtin("tanh")] = Arc::new(BfTanh {});
builtins[offset_for_builtin("exp")] = Arc::new(BfExp {});
builtins[offset_for_builtin("log")] = Arc::new(BfLog {});
builtins[offset_for_builtin("log10")] = Arc::new(BfLog10 {});
builtins[offset_for_builtin("ceil")] = Arc::new(BfCeil {});
builtins[offset_for_builtin("floor")] = Arc::new(BfFloor {});
builtins[offset_for_builtin("trunc")] = Arc::new(BfTrunc {});
pub(crate) fn register_bf_num(builtins: &mut [Box<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("abs")] = Box::new(BfAbs {});
builtins[offset_for_builtin("min")] = Box::new(BfMin {});
builtins[offset_for_builtin("max")] = Box::new(BfMax {});
builtins[offset_for_builtin("random")] = Box::new(BfRandom {});
builtins[offset_for_builtin("floatstr")] = Box::new(BfFloatstr {});
builtins[offset_for_builtin("sqrt")] = Box::new(BfSqrt {});
builtins[offset_for_builtin("sin")] = Box::new(BfSin {});
builtins[offset_for_builtin("cos")] = Box::new(BfCos {});
builtins[offset_for_builtin("tan")] = Box::new(BfTan {});
builtins[offset_for_builtin("asin")] = Box::new(BfAsin {});
builtins[offset_for_builtin("acos")] = Box::new(BfAcos {});
builtins[offset_for_builtin("atan")] = Box::new(BfAtan {});
builtins[offset_for_builtin("sinh")] = Box::new(BfSinh {});
builtins[offset_for_builtin("cosh")] = Box::new(BfCosh {});
builtins[offset_for_builtin("tanh")] = Box::new(BfTanh {});
builtins[offset_for_builtin("exp")] = Box::new(BfExp {});
builtins[offset_for_builtin("log")] = Box::new(BfLog {});
builtins[offset_for_builtin("log10")] = Box::new(BfLog10 {});
builtins[offset_for_builtin("ceil")] = Box::new(BfCeil {});
builtins[offset_for_builtin("floor")] = Box::new(BfFloor {});
builtins[offset_for_builtin("trunc")] = Box::new(BfTrunc {});
}
28 changes: 13 additions & 15 deletions crates/kernel/src/builtins/bf_objects.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
//

use lazy_static::lazy_static;
use std::sync::Arc;

use tracing::{debug, error, trace};

use moor_compiler::offset_for_builtin;
Expand Down Expand Up @@ -704,17 +702,17 @@ fn bf_players(bf_args: &mut BfCallState<'_>) -> Result<BfRet, BfErr> {
}
bf_declare!(players, bf_players);

pub(crate) fn register_bf_objects(builtins: &mut [Arc<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("create")] = Arc::new(BfCreate {});
builtins[offset_for_builtin("valid")] = Arc::new(BfValid {});
builtins[offset_for_builtin("verbs")] = Arc::new(BfVerbs {});
builtins[offset_for_builtin("properties")] = Arc::new(BfProperties {});
builtins[offset_for_builtin("parent")] = Arc::new(BfParent {});
builtins[offset_for_builtin("children")] = Arc::new(BfChildren {});
builtins[offset_for_builtin("move")] = Arc::new(BfMove {});
builtins[offset_for_builtin("chparent")] = Arc::new(BfChparent {});
builtins[offset_for_builtin("set_player_flag")] = Arc::new(BfSetPlayerFlag {});
builtins[offset_for_builtin("recycle")] = Arc::new(BfRecycle {});
builtins[offset_for_builtin("max_object")] = Arc::new(BfMaxObject {});
builtins[offset_for_builtin("players")] = Arc::new(BfPlayers {});
pub(crate) fn register_bf_objects(builtins: &mut [Box<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("create")] = Box::new(BfCreate {});
builtins[offset_for_builtin("valid")] = Box::new(BfValid {});
builtins[offset_for_builtin("verbs")] = Box::new(BfVerbs {});
builtins[offset_for_builtin("properties")] = Box::new(BfProperties {});
builtins[offset_for_builtin("parent")] = Box::new(BfParent {});
builtins[offset_for_builtin("children")] = Box::new(BfChildren {});
builtins[offset_for_builtin("move")] = Box::new(BfMove {});
builtins[offset_for_builtin("chparent")] = Box::new(BfChparent {});
builtins[offset_for_builtin("set_player_flag")] = Box::new(BfSetPlayerFlag {});
builtins[offset_for_builtin("recycle")] = Box::new(BfRecycle {});
builtins[offset_for_builtin("max_object")] = Box::new(BfMaxObject {});
builtins[offset_for_builtin("players")] = Box::new(BfPlayers {});
}
16 changes: 7 additions & 9 deletions crates/kernel/src/builtins/bf_properties.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
// this program. If not, see <https://www.gnu.org/licenses/>.
//

use std::sync::Arc;

use moor_compiler::offset_for_builtin;
use moor_values::model::{PropAttrs, PropFlag};
use moor_values::util::BitEnum;
Expand Down Expand Up @@ -252,11 +250,11 @@ fn bf_delete_property(bf_args: &mut BfCallState<'_>) -> Result<BfRet, BfErr> {
}
bf_declare!(delete_property, bf_delete_property);

pub(crate) fn register_bf_properties(builtins: &mut [Arc<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("property_info")] = Arc::new(BfPropertyInfo {});
builtins[offset_for_builtin("set_property_info")] = Arc::new(BfSetPropertyInfo {});
builtins[offset_for_builtin("is_clear_property")] = Arc::new(BfIsClearProperty {});
builtins[offset_for_builtin("clear_property")] = Arc::new(BfSetClearProperty {});
builtins[offset_for_builtin("add_property")] = Arc::new(BfAddProperty {});
builtins[offset_for_builtin("delete_property")] = Arc::new(BfDeleteProperty {});
pub(crate) fn register_bf_properties(builtins: &mut [Box<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("property_info")] = Box::new(BfPropertyInfo {});
builtins[offset_for_builtin("set_property_info")] = Box::new(BfSetPropertyInfo {});
builtins[offset_for_builtin("is_clear_property")] = Box::new(BfIsClearProperty {});
builtins[offset_for_builtin("clear_property")] = Box::new(BfSetClearProperty {});
builtins[offset_for_builtin("add_property")] = Box::new(BfAddProperty {});
builtins[offset_for_builtin("delete_property")] = Box::new(BfDeleteProperty {});
}
67 changes: 33 additions & 34 deletions crates/kernel/src/builtins/bf_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
//

use std::io::Read;
use std::sync::Arc;
use std::time::{Duration, SystemTime};

use chrono::{DateTime, Local, TimeZone};
Expand Down Expand Up @@ -897,37 +896,37 @@ fn load_server_options(bf_args: &mut BfCallState<'_>) -> Result<BfRet, BfErr> {
}
bf_declare!(load_server_options, load_server_options);

pub(crate) fn register_bf_server(builtins: &mut [Arc<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("notify")] = Arc::new(BfNotify {});
builtins[offset_for_builtin("connected_players")] = Arc::new(BfConnectedPlayers {});
builtins[offset_for_builtin("is_player")] = Arc::new(BfIsPlayer {});
builtins[offset_for_builtin("caller_perms")] = Arc::new(BfCallerPerms {});
builtins[offset_for_builtin("set_task_perms")] = Arc::new(BfSetTaskPerms {});
builtins[offset_for_builtin("callers")] = Arc::new(BfCallers {});
builtins[offset_for_builtin("task_id")] = Arc::new(BfTaskId {});
builtins[offset_for_builtin("idle_seconds")] = Arc::new(BfIdleSeconds {});
builtins[offset_for_builtin("connected_seconds")] = Arc::new(BfConnectedSeconds {});
builtins[offset_for_builtin("connection_name")] = Arc::new(BfConnectionName {});
builtins[offset_for_builtin("time")] = Arc::new(BfTime {});
builtins[offset_for_builtin("ctime")] = Arc::new(BfCtime {});
builtins[offset_for_builtin("raise")] = Arc::new(BfRaise {});
builtins[offset_for_builtin("server_version")] = Arc::new(BfServerVersion {});
builtins[offset_for_builtin("shutdown")] = Arc::new(BfShutdown {});
builtins[offset_for_builtin("suspend")] = Arc::new(BfSuspend {});
builtins[offset_for_builtin("queued_tasks")] = Arc::new(BfQueuedTasks {});
builtins[offset_for_builtin("kill_task")] = Arc::new(BfKillTask {});
builtins[offset_for_builtin("resume")] = Arc::new(BfResume {});
builtins[offset_for_builtin("ticks_left")] = Arc::new(BfTicksLeft {});
builtins[offset_for_builtin("seconds_left")] = Arc::new(BfSecondsLeft {});
builtins[offset_for_builtin("boot_player")] = Arc::new(BfBootPlayer {});
builtins[offset_for_builtin("call_function")] = Arc::new(BfCallFunction {});
builtins[offset_for_builtin("server_log")] = Arc::new(BfServerLog {});
builtins[offset_for_builtin("function_info")] = Arc::new(BfFunctionInfo {});
builtins[offset_for_builtin("listeners")] = Arc::new(BfListeners {});
builtins[offset_for_builtin("eval")] = Arc::new(BfEval {});
builtins[offset_for_builtin("read")] = Arc::new(BfRead {});
builtins[offset_for_builtin("dump_database")] = Arc::new(BfDumpDatabase {});
builtins[offset_for_builtin("memory_usage")] = Arc::new(BfMemoryUsage {});
builtins[offset_for_builtin("db_disk_size")] = Arc::new(BfDbDiskSize {});
builtins[offset_for_builtin("load_server_options")] = Arc::new(BfLoadServerOptions {});
pub(crate) fn register_bf_server(builtins: &mut [Box<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("notify")] = Box::new(BfNotify {});
builtins[offset_for_builtin("connected_players")] = Box::new(BfConnectedPlayers {});
builtins[offset_for_builtin("is_player")] = Box::new(BfIsPlayer {});
builtins[offset_for_builtin("caller_perms")] = Box::new(BfCallerPerms {});
builtins[offset_for_builtin("set_task_perms")] = Box::new(BfSetTaskPerms {});
builtins[offset_for_builtin("callers")] = Box::new(BfCallers {});
builtins[offset_for_builtin("task_id")] = Box::new(BfTaskId {});
builtins[offset_for_builtin("idle_seconds")] = Box::new(BfIdleSeconds {});
builtins[offset_for_builtin("connected_seconds")] = Box::new(BfConnectedSeconds {});
builtins[offset_for_builtin("connection_name")] = Box::new(BfConnectionName {});
builtins[offset_for_builtin("time")] = Box::new(BfTime {});
builtins[offset_for_builtin("ctime")] = Box::new(BfCtime {});
builtins[offset_for_builtin("raise")] = Box::new(BfRaise {});
builtins[offset_for_builtin("server_version")] = Box::new(BfServerVersion {});
builtins[offset_for_builtin("shutdown")] = Box::new(BfShutdown {});
builtins[offset_for_builtin("suspend")] = Box::new(BfSuspend {});
builtins[offset_for_builtin("queued_tasks")] = Box::new(BfQueuedTasks {});
builtins[offset_for_builtin("kill_task")] = Box::new(BfKillTask {});
builtins[offset_for_builtin("resume")] = Box::new(BfResume {});
builtins[offset_for_builtin("ticks_left")] = Box::new(BfTicksLeft {});
builtins[offset_for_builtin("seconds_left")] = Box::new(BfSecondsLeft {});
builtins[offset_for_builtin("boot_player")] = Box::new(BfBootPlayer {});
builtins[offset_for_builtin("call_function")] = Box::new(BfCallFunction {});
builtins[offset_for_builtin("server_log")] = Box::new(BfServerLog {});
builtins[offset_for_builtin("function_info")] = Box::new(BfFunctionInfo {});
builtins[offset_for_builtin("listeners")] = Box::new(BfListeners {});
builtins[offset_for_builtin("eval")] = Box::new(BfEval {});
builtins[offset_for_builtin("read")] = Box::new(BfRead {});
builtins[offset_for_builtin("dump_database")] = Box::new(BfDumpDatabase {});
builtins[offset_for_builtin("memory_usage")] = Box::new(BfMemoryUsage {});
builtins[offset_for_builtin("db_disk_size")] = Box::new(BfDbDiskSize {});
builtins[offset_for_builtin("load_server_options")] = Box::new(BfLoadServerOptions {});
}
18 changes: 8 additions & 10 deletions crates/kernel/src/builtins/bf_strings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
//

use md5::Digest;
use std::sync::Arc;

use rand::distributions::Alphanumeric;
use rand::Rng;

Expand Down Expand Up @@ -219,14 +217,14 @@ fn bf_binary_hash(_bf_args: &mut BfCallState<'_>) -> Result<BfRet, BfErr> {
}
bf_declare!(binary_hash, bf_binary_hash);

pub(crate) fn register_bf_strings(builtins: &mut [Arc<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("strsub")] = Arc::new(BfStrsub {});
builtins[offset_for_builtin("index")] = Arc::new(BfIndex {});
builtins[offset_for_builtin("rindex")] = Arc::new(BfRindex {});
builtins[offset_for_builtin("strcmp")] = Arc::new(BfStrcmp {});
builtins[offset_for_builtin("crypt")] = Arc::new(BfCrypt {});
builtins[offset_for_builtin("string_hash")] = Arc::new(BfStringHash {});
builtins[offset_for_builtin("binary_hash")] = Arc::new(BfBinaryHash {});
pub(crate) fn register_bf_strings(builtins: &mut [Box<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("strsub")] = Box::new(BfStrsub {});
builtins[offset_for_builtin("index")] = Box::new(BfIndex {});
builtins[offset_for_builtin("rindex")] = Box::new(BfRindex {});
builtins[offset_for_builtin("strcmp")] = Box::new(BfStrcmp {});
builtins[offset_for_builtin("crypt")] = Box::new(BfCrypt {});
builtins[offset_for_builtin("string_hash")] = Box::new(BfStringHash {});
builtins[offset_for_builtin("binary_hash")] = Box::new(BfBinaryHash {});
}

#[cfg(test)]
Expand Down
29 changes: 14 additions & 15 deletions crates/kernel/src/builtins/bf_values.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
use std::sync::Arc;

use moor_compiler::offset_for_builtin;
use moor_values::var::Error::{E_ARGS, E_INVARG, E_TYPE};
Expand Down Expand Up @@ -187,18 +186,18 @@ fn bf_object_bytes(bf_args: &mut BfCallState<'_>) -> Result<BfRet, BfErr> {
}
bf_declare!(object_bytes, bf_object_bytes);

pub(crate) fn register_bf_values(builtins: &mut [Arc<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("typeof")] = Arc::new(BfTypeof {});
builtins[offset_for_builtin("tostr")] = Arc::new(BfTostr {});
builtins[offset_for_builtin("toliteral")] = Arc::new(BfToliteral {});
builtins[offset_for_builtin("toint")] = Arc::new(BfToint {});
builtins[offset_for_builtin("tonum")] = Arc::new(BfToint {});
builtins[offset_for_builtin("tonum")] = Arc::new(BfToint {});
builtins[offset_for_builtin("toobj")] = Arc::new(BfToobj {});
builtins[offset_for_builtin("tofloat")] = Arc::new(BfTofloat {});
builtins[offset_for_builtin("equal")] = Arc::new(BfEqual {});
builtins[offset_for_builtin("value_bytes")] = Arc::new(BfValueBytes {});
builtins[offset_for_builtin("object_bytes")] = Arc::new(BfObjectBytes {});
builtins[offset_for_builtin("value_hash")] = Arc::new(BfValueHash {});
builtins[offset_for_builtin("length")] = Arc::new(BfLength {});
pub(crate) fn register_bf_values(builtins: &mut [Box<dyn BuiltinFunction>]) {
builtins[offset_for_builtin("typeof")] = Box::new(BfTypeof {});
builtins[offset_for_builtin("tostr")] = Box::new(BfTostr {});
builtins[offset_for_builtin("toliteral")] = Box::new(BfToliteral {});
builtins[offset_for_builtin("toint")] = Box::new(BfToint {});
builtins[offset_for_builtin("tonum")] = Box::new(BfToint {});
builtins[offset_for_builtin("tonum")] = Box::new(BfToint {});
builtins[offset_for_builtin("toobj")] = Box::new(BfToobj {});
builtins[offset_for_builtin("tofloat")] = Box::new(BfTofloat {});
builtins[offset_for_builtin("equal")] = Box::new(BfEqual {});
builtins[offset_for_builtin("value_bytes")] = Box::new(BfValueBytes {});
builtins[offset_for_builtin("object_bytes")] = Box::new(BfObjectBytes {});
builtins[offset_for_builtin("value_hash")] = Box::new(BfValueHash {});
builtins[offset_for_builtin("length")] = Box::new(BfLength {});
}
Loading

0 comments on commit da4abec

Please sign in to comment.