From 431a879d2c6805211f34b4fb46719349b89a69c0 Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Thu, 6 Aug 2020 00:41:41 -0700 Subject: [PATCH] update --- version3.0/nasal_gc.h | 60 ++++++---------- version3.0/nasal_runtime.h | 143 +++++++++++++++++++++++++++++++++++-- 2 files changed, 162 insertions(+), 41 deletions(-) diff --git a/version3.0/nasal_gc.h b/version3.0/nasal_gc.h index d66f714..21228f8 100644 --- a/version3.0/nasal_gc.h +++ b/version3.0/nasal_gc.h @@ -67,6 +67,8 @@ public: bool set_type(int); void set_number(double); void set_string(std::string); + double get_number(); + std::string get_string(); nasal_vector& get_vector(); nasal_hash& get_hash(); nasal_function& get_func(); @@ -325,6 +327,14 @@ void nasal_scalar::set_string(std::string str) *(std::string*)(this->scalar_ptr)=str; return; } +double nasal_scalar::get_number() +{ + return *(double*)(this->scalar_ptr); +} +std::string nasal_scalar::get_string() +{ + return *(std::string*)(this->scalar_ptr); +} nasal_vector& nasal_scalar::get_vector() { return *(nasal_vector*)(this->scalar_ptr); @@ -341,10 +351,8 @@ nasal_closure& nasal_scalar::get_closure() { return *(nasal_closure*)(this->scalar_ptr); } -int nasal_scalar::nasal_scalar_add(int a,int b) +int nasal_scalar::nasal_scalar_add(int a_scalar_addr,int b_scalar_addr) { - int a_scalar_addr=nasal_vm.mem_get(a); - int b_scalar_addr=nasal_vm.mem_get(b); if(a_scalar_addr<0 || b_scalar_addr<0) { std::cout<<">> [vm] scalar_add: memory returned an invalid address"<> [vm] scalar_sub: memory returned an invalid address"<> [vm] scalar_mult: memory returned an invalid address"<> [vm] scalar_div: memory returned an invalid address"<> [vm] scalar_link: memory returned an invalid address"<> [vm] scalar_unary_sub: memory returned an invalid address"<> [vm] scalar_unary_not: memory returned an invalid address"<> [vm] scalar_unary_not: error value type.number,string and nil can take part in unary not."<> [vm] scalar_cmp_equal: memory returned an invalid address"<> [vm] scalar_cmp_not_equal: memory returned an invalid address"<> [vm] scalar_cmp_less: memory returned an invalid address"<> [vm] scalar_cmp_greater: memory returned an invalid address"<> [vm] scalar_cmp_lequal: memory returned an invalid address"<> [vm] scalar_cmp_gequal: memory returned an invalid address"<