diff --git a/DMS/DMS.vcxproj.filters b/DMS/DMS.vcxproj.filters
index ac3e0c8..16ade1f 100644
--- a/DMS/DMS.vcxproj.filters
+++ b/DMS/DMS.vcxproj.filters
@@ -111,12 +111,12 @@
Source Files\DMS\objects
-
- Source Files\DMS\standardMethods
-
Source Files\DMS
+
+ Source Files\DMS\platformdep
+
@@ -182,11 +182,11 @@
Header Files\DMS\C-API
-
- Header Files\DMS\standardMethods
-
Header Files\DMS
+
+ Header Files\DMS\platformdep
+
\ No newline at end of file
diff --git a/DMS/LineParserMatchProcess.cpp b/DMS/LineParserMatchProcess.cpp
index 01fd70b..21d4df2 100644
--- a/DMS/LineParserMatchProcess.cpp
+++ b/DMS/LineParserMatchProcess.cpp
@@ -43,7 +43,7 @@ namespace dms {
c->opcode = codes::KNOT;
c->args.push(assn);
current_chunk->addCmd(c);
- v.set(assn.s);
+ v.set(assn.getString());
v.type = variable;
return true;
}
@@ -64,7 +64,7 @@ namespace dms {
tokenstream tempstream(&toks);
value var(datatypes::variable);
if (match_process_standard(&tempstream, var)) {
- v.set(var.s);
+ v.set(var.getString());
v.type = datatypes::variable;
return true;
}
@@ -178,7 +178,7 @@ namespace dms {
value var = value(datatypes::variable);
// We have some work to do here
if (match_process_standard(stream, right)) {
- v.set(var.s);
+ v.set(var.getString());
v.type = datatypes::variable;
cmd* c = new cmd;
c->opcode = code;
@@ -242,7 +242,7 @@ namespace dms {
value var = value(datatypes::variable);
// COMP cmp out v1 v2
if (match_process_standard(stream,right)) {
- v.set(var.s);
+ v.set(var.getString());
v.type = datatypes::variable;
cmd* c = new cmd;
c->opcode = codes::COMP;
diff --git a/DMS/LineParserParse.cpp b/DMS/LineParserParse.cpp
index d97a25c..c40d664 100644
--- a/DMS/LineParserParse.cpp
+++ b/DMS/LineParserParse.cpp
@@ -459,7 +459,7 @@ namespace dms {
// We got a name which is refering to a variable so lets build one
value v;
v.type = datatypes::variable; // Special type, it writes data to the string portion, but is interperted as a lookup
- v.s = tokens[i].name;
+ v.getString() = tokens[i].name;
args.push(v);
}
else if (tokens[i].type == tokens::seperator) {
diff --git a/DMS/core.cpp b/DMS/core.cpp
index 0f3a8cc..3204080 100644
--- a/DMS/core.cpp
+++ b/DMS/core.cpp
@@ -21,6 +21,9 @@ namespace dms {
return datatype[args->args[0].type];
}
return "nil";
+ }
+ value concat(void* self, dms_state* state, dms_args* args) {
+
}
void init(dms_state* state) {
state->invoker.registerFunction("print", print);
diff --git a/DMS/core.h b/DMS/core.h
index c0a3f80..35f553e 100644
--- a/DMS/core.h
+++ b/DMS/core.h
@@ -3,7 +3,5 @@
namespace dms {
namespace core {
void init(dms_state* state);
- value print(void* self, dms_state* state, dms_args* args);
- value type(void* self, dms_state* state, dms_args* args);
}
}
\ No newline at end of file
diff --git a/DMS/dms_state.cpp b/DMS/dms_state.cpp
index 7bce8aa..52ebff1 100644
--- a/DMS/dms_state.cpp
+++ b/DMS/dms_state.cpp
@@ -19,7 +19,7 @@ namespace dms {
if (!state->run(func, Fmem)) {
std::vector err = Fmem->examine(datatypes::error);
if (err.size() > 0)
- state->push_error(errors::error{ errors::unknown ,err[0].s });
+ state->push_error(errors::error{ errors::unknown ,err[0].getString() });
else
state->push_error(errors::error{ errors::unknown ,"Function Returned an error!" });
state->popMem();// We need to restore the stack
@@ -182,7 +182,7 @@ namespace dms {
bool dms_state::assign(value var, value val) {
if (val.type == datatypes::error) {
(*getMem())[var.getPrintable()] = val;
- push_error(errors::error{ errors::unknown ,val.s });
+ push_error(errors::error{ errors::unknown ,val.getString() });
return false;
}
val.state = this;
diff --git a/DMS/dms_state_interpret.cpp b/DMS/dms_state_interpret.cpp
index 02689cf..1130da4 100644
--- a/DMS/dms_state_interpret.cpp
+++ b/DMS/dms_state_interpret.cpp
@@ -259,7 +259,7 @@ namespace dms {
{
if (c->args.args[0].resolve(this).type == datatypes::custom) {
auto cust = c->args.args[0].resolve(this);
- auto fname = c->args.args[1].s;
+ auto fname = c->args.args[1].getString();
auto assn = c->args.args[2];
dms_args args;
@@ -340,15 +340,15 @@ namespace dms {
value env = c->args.args[1];
value indx = c->args.args[2].resolve(this);
value assn = c->args.args[3].resolve(this);
- if (env.type == datatypes::block && blockExists(env.s)) { // If this is a block let's handle this
+ if (env.type == datatypes::block && blockExists(env.getString())) { // If this is a block let's handle this
enviroment* e = nullptr;
- if (environments.count(env.s)) {
- e = environments[env.s];
+ if (environments.count(env.getString())) {
+ e = environments[env.getString()];
}
- else if (characters.count(env.s)) {
- e = characters[env.s];
+ else if (characters.count(env.getString())) {
+ e = characters[env.getString()];
}
- e->values[indx.s] = assn;
+ e->values[indx.getString()] = assn;
}
else if (env.type == datatypes::env) {
if (indx.type == datatypes::number) {
@@ -437,13 +437,13 @@ namespace dms {
value assn = c->args.args[0];
value env = c->args.args[1];
value indx = c->args.args[2].resolve(this);
- if (env.type == datatypes::block && blockExists(env.s)) { // If this is a block let's handle this
+ if (env.type == datatypes::block && blockExists(env.getString())) { // If this is a block let's handle this
enviroment* e = nullptr;
- if (environments.count(env.s)) {
- e = environments[env.s];
+ if (environments.count(env.getString())) {
+ e = environments[env.getString()];
}
- else if (characters.count(env.s)) {
- e = characters[env.s];
+ else if (characters.count(env.getString())) {
+ e = characters[env.getString()];
}
if(!assign( assn, e->values[indx.getPrintable()])) {
return false;
@@ -556,13 +556,13 @@ namespace dms {
break;
case SSPK:
//Because we are using void* we must cast our pointers
- if (characterExists(c->args.args[0].s)){
- speaker = getCharacter(c->args.args[0].s);
+ if (characterExists(c->args.args[0].getString())){
+ speaker = getCharacter(c->args.args[0].getString());
if (!handler->handleSpeaker(this, speaker))
return false;
}
else {
- push_error(errors::error{ errors::disp_unknown,concat("Unknown character '",c->args.args[0].s,"'!")});
+ push_error(errors::error{ errors::disp_unknown,concat("Unknown character '",c->args.args[0].getString(),"'!")});
return false;
}
break;
@@ -572,7 +572,7 @@ namespace dms {
break;
case CHAR:
{
- std::string cha = c->args.args[0].s;
+ std::string cha = c->args.args[0].getString();
getCharacter(cha);
break;
}
@@ -596,10 +596,10 @@ namespace dms {
//Because we are using void* we must cast our pointers
{
std::vector args;
- std::string prompt = c->args.args[0].s;
- std::string fn = c->args.args[1].s;
+ std::string prompt = c->args.args[0].getString();
+ std::string fn = c->args.args[1].getString();
for (size_t i = 2; i < c->args.args.size(); i++)
- args.push_back(c->args.args[i].resolve(this).s);
+ args.push_back(c->args.args[i].resolve(this).getString());
size_t npos = handler->handleChoice(this, prompt, args);
size_t nnpos = seek(concat("CHOI_", fn, "_", npos),cmds,LABL,pos);
if (!nnpos) {
@@ -614,7 +614,7 @@ namespace dms {
case JUMP:
// Value assert resolves the data so a variable must eventually equal a string
if (utils::valueassert(c->args, this, datatypes::string)) {
- std::string block = c->args.args[0].resolve(this).s;
+ std::string block = c->args.args[0].resolve(this).getString();
if (chunks[block] == NULL) {
push_error(errors::error{ errors::non_existing_block ,utils::concat("Attempted to Jump to a non existing block [",block,"]") });
return false;
diff --git a/DMS/dump.bin b/DMS/dump.bin
index 0a8f1b9..d5bd542 100644
Binary files a/DMS/dump.bin and b/DMS/dump.bin differ
diff --git a/DMS/dump.txt b/DMS/dump.txt
index 74e064f..fb3c30c 100644
--- a/DMS/dump.txt
+++ b/DMS/dump.txt
@@ -33,55 +33,108 @@ Line <12> name extendedDefine
Line <12> newline
Line <12> newline
Line <13> newline
-Line <14> name music
-Line <14> equal =
-Line <14> name loadMusic
-Line <14> parao (
-Line <14> string test2.ogg
-Line <14> parac )
Line <14> newline
Line <14> newline
-Line <15> name music2
+Line <15> name music
Line <15> equal =
Line <15> name loadMusic
Line <15> parao (
-Line <15> string test.ogg
+Line <15> string test2.ogg
Line <15> parac )
Line <15> newline
Line <15> newline
-Line <16> bracketo [
-Line <16> name main
-Line <16> bracketc ]
+Line <16> name music2
+Line <16> equal =
+Line <16> name loadMusic
+Line <16> parao (
+Line <16> string test.ogg
+Line <16> parac )
Line <16> newline
Line <16> newline
-Line <17> name a
-Line <17> equal =
-Line <17> number 10
Line <17> newline
Line <17> newline
-Line <18> name tester
-Line <18> parao (
-Line <18> parac )
+Line <18> bracketo [
+Line <18> name main
+Line <18> bracketc ]
Line <18> newline
Line <18> newline
-Line <19> name print
-Line <19> parao (
-Line <19> string a =
-Line <19> plus +
-Line <19> name a
-Line <19> parac )
-Line <19> newline
Line <19> newline
Line <20> newline
+Line <20> newline
Line <21> newline
+Line <21> newline
+Line <22> name music
+Line <22> dot dot
+Line <22> name setPitch
+Line <22> parao (
+Line <22> number 0.7
+Line <22> parac )
Line <22> newline
+Line <22> newline
+Line <23> name print
+Line <23> parao (
+Line <23> name music
+Line <23> dot .
+Line <23> name getStatus
+Line <23> parao (
+Line <23> parac )
+Line <23> parac )
Line <23> newline
+Line <23> newline
+Line <24> name music
+Line <24> dot .
+Line <24> name play
+Line <24> parao (
+Line <24> parac )
Line <24> newline
+Line <24> newline
+Line <25> name print
+Line <25> parao (
+Line <25> name music
+Line <25> dot .
+Line <25> name getStatus
+Line <25> parao (
+Line <25> parac )
+Line <25> parac )
Line <25> newline
+Line <25> newline
+Line <26> name print
+Line <26> parao (
+Line <26> string Type:
+Line <26> plus +
+Line <26> name type
+Line <26> parao (
+Line <26> name music2
+Line <26> parac )
+Line <26> parac )
Line <26> newline
+Line <26> newline
+Line <27> name while
+Line <27> parao (
+Line <27> name music
+Line <27> dot dot
+Line <27> name getStatus
+Line <27> parao (
+Line <27> parac )
+Line <27> not !
+Line <27> equal =
+Line <27> string stopped
+Line <27> parac )
+Line <27> cbracketo {
Line <27> newline
+Line <27> newline
+Line <28> name wait
+Line <28> number 1
Line <28> newline
+Line <28> newline
+Line <29> cbracketc }
Line <29> newline
+Line <29> newline
+Line <30> name print
+Line <30> parao (
+Line <30> string Done
+Line <30> parac )
+Line <30> newline
Line <30> newline
Line <31> newline
Line <32> newline
@@ -96,270 +149,255 @@ Line <40> newline
Line <41> newline
Line <42> newline
Line <43> newline
-Line <43> newline
-Line <44> bracketo [
-Line <44> name tester
-Line <44> colon :
-Line <44> name function
-Line <44> parao (
-Line <44> parac )
-Line <44> bracketc ]
Line <44> newline
-Line <44> newline
-Line <45> name print
-Line <45> parao (
-Line <45> name a
-Line <45> parac )
Line <45> newline
Line <45> newline
+Line <46> bracketo [
+Line <46> name SelectSong
+Line <46> colon :
+Line <46> name function
+Line <46> parao (
+Line <46> parac )
+Line <46> bracketc ]
Line <46> newline
Line <46> newline
-Line <47> bracketo [
-Line <47> name SelectSong
-Line <47> colon :
-Line <47> name function
-Line <47> parao (
-Line <47> parac )
-Line <47> bracketc ]
+Line <47> control
+Line <47> string Pick song:
+Line <47> cbracketo {
Line <47> newline
Line <47> newline
-Line <48> control
-Line <48> string Pick song:
+Line <48> string Music 1
Line <48> cbracketo {
Line <48> newline
Line <48> newline
-Line <49> string Music 1
-Line <49> cbracketo {
+Line <49> ret
+Line <49> name music
Line <49> newline
Line <49> newline
-Line <50> ret
-Line <50> name music
+Line <50> cbracketc }
Line <50> newline
Line <50> newline
-Line <51> cbracketc }
+Line <51> string Music 2
+Line <51> cbracketo {
Line <51> newline
Line <51> newline
-Line <52> string Music 2
-Line <52> cbracketo {
+Line <52> ret
+Line <52> name music2
Line <52> newline
Line <52> newline
-Line <53> ret
-Line <53> name music2
+Line <53> cbracketc }
Line <53> newline
Line <53> newline
Line <54> cbracketc }
Line <54> newline
Line <54> newline
-Line <55> cbracketc }
Line <55> newline
Line <55> newline
+Line <56> bracketo [
+Line <56> name player
+Line <56> colon :
+Line <56> name function
+Line <56> parao (
+Line <56> name song
+Line <56> parac )
+Line <56> bracketc ]
Line <56> newline
Line <56> newline
-Line <57> bracketo [
-Line <57> name player
-Line <57> colon :
-Line <57> name function
-Line <57> parao (
-Line <57> name song
-Line <57> parac )
-Line <57> bracketc ]
+Line <57> control
+Line <57> string What you wanna do?
+Line <57> cbracketo {
Line <57> newline
Line <57> newline
-Line <58> control
-Line <58> string What you wanna do?
+Line <58> string play/resume
Line <58> cbracketo {
Line <58> newline
Line <58> newline
-Line <59> string play/resume
-Line <59> cbracketo {
+Line <59> name song
+Line <59> dot dot
+Line <59> name play
+Line <59> parao (
+Line <59> parac )
Line <59> newline
Line <59> newline
-Line <60> name song
-Line <60> dot dot
-Line <60> name play
+Line <60> name player
Line <60> parao (
+Line <60> name song
Line <60> parac )
Line <60> newline
Line <60> newline
-Line <61> name player
-Line <61> parao (
-Line <61> name song
-Line <61> parac )
+Line <61> cbracketc }
Line <61> newline
Line <61> newline
-Line <62> cbracketc }
+Line <62> string pause
+Line <62> cbracketo {
Line <62> newline
Line <62> newline
-Line <63> string pause
-Line <63> cbracketo {
+Line <63> name song
+Line <63> dot .
+Line <63> name pause
+Line <63> parao (
+Line <63> parac )
Line <63> newline
Line <63> newline
-Line <64> name song
-Line <64> dot .
-Line <64> name pause
+Line <64> name player
Line <64> parao (
+Line <64> name song
Line <64> parac )
Line <64> newline
Line <64> newline
-Line <65> name player
-Line <65> parao (
-Line <65> name song
-Line <65> parac )
+Line <65> cbracketc }
Line <65> newline
Line <65> newline
-Line <66> cbracketc }
+Line <66> string stop
+Line <66> cbracketo {
Line <66> newline
Line <66> newline
-Line <67> string stop
-Line <67> cbracketo {
+Line <67> name song
+Line <67> dot .
+Line <67> name stop
+Line <67> parao (
+Line <67> parac )
Line <67> newline
Line <67> newline
-Line <68> name song
-Line <68> dot .
-Line <68> name stop
+Line <68> name player
Line <68> parao (
+Line <68> name song
Line <68> parac )
Line <68> newline
Line <68> newline
-Line <69> name player
-Line <69> parao (
-Line <69> name song
-Line <69> parac )
+Line <69> cbracketc }
Line <69> newline
Line <69> newline
-Line <70> cbracketc }
+Line <70> string newSong
+Line <70> cbracketo {
Line <70> newline
Line <70> newline
-Line <71> string newSong
-Line <71> cbracketo {
+Line <71> name song
+Line <71> dot .
+Line <71> name stop
+Line <71> parao (
+Line <71> parac )
Line <71> newline
Line <71> newline
-Line <72> name song
-Line <72> dot .
-Line <72> name stop
+Line <72> name player
Line <72> parao (
+Line <72> name song
Line <72> parac )
Line <72> newline
Line <72> newline
-Line <73> name player
-Line <73> parao (
-Line <73> name song
-Line <73> parac )
+Line <73> cbracketc }
Line <73> newline
Line <73> newline
-Line <74> cbracketc }
+Line <74> string quit
+Line <74> exit
+Line <74> number 0
Line <74> newline
Line <74> newline
-Line <75> string quit
-Line <75> exit
-Line <75> number 0
+Line <75> cbracketc }
Line <75> newline
Line <75> newline
-Line <76> cbracketc }
Line <76> newline
Line <76> newline
+Line <77> bracketo [
+Line <77> name Ryan
+Line <77> colon :
+Line <77> name char
+Line <77> bracketc ]
Line <77> newline
Line <77> newline
-Line <78> bracketo [
-Line <78> name Ryan
-Line <78> colon :
-Line <78> name char
-Line <78> bracketc ]
+Line <78> name age
+Line <78> equal =
+Line <78> number 21
Line <78> newline
Line <78> newline
-Line <79> name age
+Line <79> name money
Line <79> equal =
-Line <79> number 21
+Line <79> number 1000
Line <79> newline
Line <79> newline
-Line <80> name money
+Line <80> name lname
Line <80> equal =
-Line <80> number 1000
+Line <80> string Ward
Line <80> newline
Line <80> newline
-Line <81> name lname
+Line <81> name known
Line <81> equal =
-Line <81> string Ward
+Line <81> true true
Line <81> newline
Line <81> newline
-Line <82> name known
-Line <82> equal =
-Line <82> true true
-Line <82> newline
Line <82> newline
+Line <83> name calm
+Line <83> colon :
+Line <83> string ./path/to/file
Line <83> newline
-Line <84> name calm
+Line <83> newline
+Line <84> name excited
Line <84> colon :
Line <84> string ./path/to/file
Line <84> newline
Line <84> newline
-Line <85> name excited
-Line <85> colon :
-Line <85> string ./path/to/file
Line <85> newline
Line <85> newline
+Line <86> bracketo [
+Line <86> name John
+Line <86> colon :
+Line <86> name char
+Line <86> bracketc ]
Line <86> newline
Line <86> newline
-Line <87> bracketo [
-Line <87> name John
-Line <87> colon :
-Line <87> name char
-Line <87> bracketc ]
+Line <87> name lname
+Line <87> equal =
+Line <87> string Johnson
Line <87> newline
Line <87> newline
-Line <88> name lname
+Line <88> name age
Line <88> equal =
-Line <88> string Johnson
+Line <88> number 16
Line <88> newline
Line <88> newline
-Line <89> name age
+Line <89> name money
Line <89> equal =
-Line <89> number 16
+Line <89> number 100000
Line <89> newline
Line <89> newline
-Line <90> name money
+Line <90> name known
Line <90> equal =
-Line <90> number 100000
+Line <90> true true
Line <90> newline
Line <90> newline
-Line <91> name known
-Line <91> equal =
-Line <91> true true
Line <91> newline
Line <91> newline
+Line <92> bracketo [
+Line <92> name Bob
+Line <92> colon :
+Line <92> name char
+Line <92> bracketc ]
Line <92> newline
Line <92> newline
-Line <93> bracketo [
-Line <93> name Bob
-Line <93> colon :
-Line <93> name char
-Line <93> bracketc ]
-Line <93> newline
Line <93> newline
Line <94> newline
+Line <95> name lname
+Line <95> equal =
+Line <95> string Johnson
Line <95> newline
-Line <96> name lname
+Line <96> name unknown
Line <96> equal =
-Line <96> string Johnson
+Line <96> string Some Random Guy
Line <96> newline
-Line <97> name unknown
+Line <96> newline
+Line <97> name age
Line <97> equal =
-Line <97> string Some Random Guy
+Line <97> number 24
Line <97> newline
Line <97> newline
-Line <98> name age
+Line <98> name money
Line <98> equal =
-Line <98> number 24
+Line <98> number 100
Line <98> newline
Line <98> newline
-Line <99> name money
-Line <99> equal =
-Line <99> number 100
+Line <99> name excited
+Line <99> colon :
+Line <99> string path/to/file
Line <99> newline
Line <99> newline
-Line <100> name excited
-Line <100> colon :
-Line <100> string path/to/file
-Line <100> newline
-Line <100> newline
-Line <100> eof
+Line <99> eof
diff --git a/DMS/sound.cpp b/DMS/sound.cpp
index 4f98a77..cdcc6c5 100644
--- a/DMS/sound.cpp
+++ b/DMS/sound.cpp
@@ -82,7 +82,7 @@ namespace dms::audio {
if (args->size() || args->args[0].resolve(state).type == datatypes::string) {
sf::Music* music = new sf::Music;
- if (!music->openFromFile(args->args[0].s)) {
+ if (!music->openFromFile(args->args[0].getString())) {
return value("Cannot open audio stream!", datatypes::error);
}
return value(music, "audiostream");
diff --git a/DMS/test.dms b/DMS/test.dms
index 1553cdc..2dc83d4 100644
--- a/DMS/test.dms
+++ b/DMS/test.dms
@@ -11,21 +11,23 @@ enable savestate
version 0.2
using extendedDefine
// this code will reside within
+
music = loadMusic("test2.ogg")
music2 = loadMusic("test.ogg")
+
[main]
- a = 10
- tester()
- print("a = " + a)
- // music.setPitch(.7)
- // print(music.getStatus())
- // music.play()
- // print(music.getStatus())
- // print("Type: " + type(music2))
- // while(music.getStatus()!="stopped"){
- // wait 1
- // }
- // print("Done")
+ // Let's extend the base feature set
+
+
+ music.setPitch(.7)
+ print(music.getStatus())
+ music.play()
+ print(music.getStatus())
+ print("Type: " + type(music2))
+ while(music.getStatus()!="stopped"){
+ wait 1
+ }
+ print("Done")
// a = 0
// while (true){
// asm {
@@ -41,9 +43,6 @@ music2 = loadMusic("test.ogg")
// player(song)
// }
-[tester:function()]
- print(a)
-
[SelectSong:function()]
choice "Pick song:" {
"Music 1" {
diff --git a/DMS/value.cpp b/DMS/value.cpp
index 4d32d3f..3cb1c84 100644
--- a/DMS/value.cpp
+++ b/DMS/value.cpp
@@ -359,8 +359,8 @@ namespace dms {
return false;
}
value value::resolve(dms_state* _state) {
- if (type == datatypes::variable && (*this)!=(*_state->getMem())[s]) {
- return (*_state->getMem())[s].resolve(_state);
+ if (type == datatypes::variable && (*this)!=(*_state->getMem())[getString()]) {
+ return (*_state->getMem())[getString()].resolve(_state);
}
return *this;
}
@@ -412,17 +412,17 @@ namespace dms {
return "custom";
}
else if (type == block) {
- if (state->characterExists(s)) {
- auto cha = state->getCharacter(s);
+ if (state->characterExists(getString())) {
+ auto cha = state->getCharacter(getString());
return cha->getName();
}
- return s;
+ return getString();
}
else if (type == datatypes::variable) {
- return s; // Do the lookup
+ return getString(); // Do the lookup
}
else if (type == datatypes::error) {
- return std::string("ERROR: ") + s;
+ return std::string("ERROR: ") + getString();
}
else if (type == datatypes::escape) {
return "";
@@ -450,6 +450,10 @@ namespace dms {
else
return INT_MIN;
}
+ std::string value::getString() const
+ {
+ return s;
+ }
// Compile time
void value::nuke() {
delete e;
@@ -457,7 +461,7 @@ namespace dms {
}
std::ostream& operator << (std::ostream& out, const value& c) {
if (c.type == string) {
- out << (char)c.type << c.s << (char)0;
+ out << (char)c.type << c.getString() << (char)0;
}
else if (c.type == number) {
out << (char)c.type << c.n;
@@ -481,10 +485,10 @@ namespace dms {
out << (char)c.type << "Custom Data: " << c;
}
else if (c.type == block) {
- out << (char)c.type << c.s;
+ out << (char)c.type << c.getString();
}
else if (c.type == datatypes::variable) {
- out << (char)c.type << c.s; // Do the lookup
+ out << (char)c.type << c.getString(); // Do the lookup
}
else if (c.type == datatypes::escape) {
out << (char)0;
diff --git a/DMS/value.h b/DMS/value.h
index 6c0cb4b..746ec41 100644
--- a/DMS/value.h
+++ b/DMS/value.h
@@ -84,6 +84,7 @@ namespace dms {
std::string toString() const;
double getDouble() const;
int64_t getInt() const;
+ std::string getString() const;
friend std::ostream& operator << (std::ostream& out, const value& c);
};
diff --git a/README.md b/README.md
index d92431b..7e6fc6b 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ The Dialogue Management Script's goal is to provide a nice and simple way to hav
- [X] ~~Implement bytecode for for/while loops~~
- [X] ~~Implement bytecode for concatenation~~
- [X] ~~Interpert all the bytecode~~
-- [ ] Finish implementing custom datatype
+- [X] ~~Finish implementing custom datatype~~
- [ ] Speed up interperter
- [ ] Finish C API for code
- [ ] Extend beginning features
\ No newline at end of file