Merge pull request #1 from n00b87/user_types_integration
User types integration
This commit is contained in:
@@ -43,3 +43,5 @@ DATA SEGMENT SIZE 8 BYTES
|
||||
//----PROGRAM----
|
||||
CODE SEGMENT CODE SEGMENT SIZE
|
||||
DATA SEGMENT DATA SEGMENT SIZE
|
||||
|
||||
|
||||
|
||||
@@ -514,3 +514,14 @@ sub IncrementMatrixRows(mA, mB, r, num_rows, value)
|
||||
sub IncrementMatrixColumns(mA, mB, c, num_cols, value)
|
||||
sub JoinMatrixRows(mA, mB, mC)
|
||||
sub JoinMatrixColumns(mA, mB, mC)
|
||||
|
||||
'v4.0
|
||||
|
||||
'Empty Type is used mainly for built-in functions that need to have a user type specified to be able to compile properly
|
||||
type empty
|
||||
end type
|
||||
|
||||
function TypeArrayDim(Byref id as empty)
|
||||
function TypeArraySize(Byref id as empty, array_dim)
|
||||
sub TypeArrayCopy(ByRef src as empty, ByRef dst as empty)
|
||||
sub TypeArrayFill(ByRef src as empty, fdata as empty)
|
||||
|
||||
@@ -60,8 +60,8 @@ stack<uint64_t> for_counter;
|
||||
stack<string> do_end;
|
||||
stack<string> while_end;
|
||||
|
||||
bool isFunctionArg_flag = false;
|
||||
|
||||
bool isFunctionArg_flag = false;
|
||||
|
||||
bool enable_presets = true;
|
||||
|
||||
struct if_data
|
||||
@@ -426,6 +426,82 @@ bool add_type_member(string member_name, int member_type, string member_utype_na
|
||||
return true;
|
||||
}
|
||||
|
||||
bool add_type_member_embedded(string member_name, int member_type, string member_utype_name, int member_dim_count, int dim1, int dim2, int dim3)
|
||||
{
|
||||
int m_utype_index = member_utype_name.compare("")!=0 ? getUType(member_utype_name) : -1;
|
||||
if(m_utype_index == current_type_index)
|
||||
{
|
||||
//cout << "you canno do is" << endl;
|
||||
rc_setError("Cannot create member of type from within itself");
|
||||
return false;
|
||||
}
|
||||
//cout << "utype index = " << current_type_index << endl;
|
||||
int utype_index = current_type_index;
|
||||
int utype_current_member = utype[utype_index].num_members;
|
||||
member_name = StringToLower(member_name);
|
||||
utype[utype_index].member_name.push_back(member_name);
|
||||
|
||||
string dim_mem_type = "";
|
||||
|
||||
switch(member_type)
|
||||
{
|
||||
case ID_TYPE_NUM:
|
||||
dim_mem_type = "!0 !" + rc_intToString(utype_current_member);
|
||||
utype[utype_index].member_type.push_back(ID_TYPE_USER_NUM);
|
||||
utype[utype_index].member_vec_pos.push_back(utype[utype_index].nidCount);
|
||||
utype[utype_index].nidCount++;
|
||||
break;
|
||||
case ID_TYPE_ARR_NUM:
|
||||
dim_mem_type = "!0 !" + rc_intToString(utype_current_member);
|
||||
utype[utype_index].member_type.push_back(ID_TYPE_USER_NUM_ARRAY);
|
||||
utype[utype_index].member_vec_pos.push_back(utype[utype_index].nidCount);
|
||||
utype[utype_index].nidCount++;
|
||||
break;
|
||||
case ID_TYPE_STR:
|
||||
dim_mem_type = "!1 !" + rc_intToString(utype_current_member);
|
||||
utype[utype_index].member_type.push_back(ID_TYPE_USER_STR);
|
||||
utype[utype_index].member_vec_pos.push_back(utype[utype_index].sidCount);
|
||||
utype[utype_index].sidCount++;
|
||||
break;
|
||||
case ID_TYPE_ARR_STR:
|
||||
dim_mem_type = "!1 !" + rc_intToString(utype_current_member);
|
||||
utype[utype_index].member_type.push_back(ID_TYPE_USER_STR_ARRAY);
|
||||
utype[utype_index].member_vec_pos.push_back(utype[utype_index].sidCount);
|
||||
utype[utype_index].sidCount++;
|
||||
break;
|
||||
case ID_TYPE_USER:
|
||||
dim_mem_type = "!2 !" + rc_intToString(utype_current_member);
|
||||
utype[utype_index].member_type.push_back(ID_TYPE_USER);
|
||||
utype[utype_index].member_vec_pos.push_back(utype[utype_index].uidCount);
|
||||
utype[utype_index].uidCount++;
|
||||
break;
|
||||
default:
|
||||
rc_setError("Invalid member type in type definition");
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
utype[utype_index].member_dim_count.push_back(member_dim_count);
|
||||
utype[utype_index].member_utype_index.push_back(m_utype_index);
|
||||
|
||||
|
||||
vm_asm.push_back("dim_tfield !" + rc_intToString(utype_index) + " " + dim_mem_type + " !"
|
||||
+ rc_intToString(member_dim_count) + " "
|
||||
+ "n0 n1 n2");
|
||||
|
||||
//NOTE: user_array_dim is no longer used
|
||||
user_array_dim d;
|
||||
d.dim_size[0] = dim1;
|
||||
d.dim_size[1] = dim2;
|
||||
d.dim_size[2] = dim3;
|
||||
utype[utype_index].member_dim.push_back(d);
|
||||
//cout << member_name << " has " << member_dim_count << " dimensions" << endl;
|
||||
//utype[utype_index].member_dim[utype_current_member].dim_size[1] = dim2;
|
||||
//utype[utype_index].member_dim[utype_current_member].dim_size[2] = dim3;
|
||||
utype[utype_index].num_members++;
|
||||
return true;
|
||||
}
|
||||
|
||||
//return the index of the id name or -1 on failure
|
||||
int getIDInScope_ByIndex_TypeMatch(string id_name, string check_scope="")
|
||||
{
|
||||
@@ -441,13 +517,34 @@ int getIDInScope_ByIndex_TypeMatch(string id_name, string check_scope="")
|
||||
int id_match = -1;
|
||||
check_scope = StringToLower(check_scope);
|
||||
//cout << "CHECK SCOPE = " << check_scope << endl;
|
||||
|
||||
string id_name_str = "";
|
||||
|
||||
if(id_name.substr(id_name.length()-1,1).compare("$")==0)
|
||||
{
|
||||
id_name_str = id_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
id_name_str = id_name + "$";
|
||||
}
|
||||
|
||||
for(int i = 0; i < id.size(); i++)
|
||||
{
|
||||
if(id[i].scope.compare(check_scope)==0)
|
||||
{
|
||||
//cout << id_name << " ~ " << id[i].name << endl;
|
||||
if(id_name.compare(id[i].name)==0)
|
||||
return i;
|
||||
if(id[i].name.substr(id[i].name.length()-1,1).compare("$")==0) //id in type is string
|
||||
{
|
||||
//cout << id_name_str << " ~ " << id[i].name << endl;
|
||||
if(id_name_str.compare(StringToLower(id[i].name))==0)
|
||||
return i;
|
||||
}
|
||||
else
|
||||
{
|
||||
//cout << id_name << " ~ " << id[i].name << endl;
|
||||
if(id_name.compare(StringToLower(id[i].name))==0)
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
return id_match;
|
||||
@@ -815,7 +912,18 @@ bool create_variable(string name, int type, string utype_name="", int vec = -1)
|
||||
int var_index = id.size();
|
||||
var.num_args = 0;
|
||||
var.parent_index = -1;
|
||||
set_vectorPosition(var);
|
||||
|
||||
if(vec == -1)
|
||||
{
|
||||
set_vectorPosition(var);
|
||||
//cout << var.name << " <==> " << var.vec_pos << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
//cout << "set " << name << " to " << vec << endl;
|
||||
var.vec_pos = vec;
|
||||
}
|
||||
|
||||
id.push_back(var);
|
||||
|
||||
if(isInFunctionScope && !isFunctionArg_flag)
|
||||
@@ -940,7 +1048,7 @@ bool create_array(string name, int type, string utype_name, int dim_count, strin
|
||||
return true;
|
||||
}
|
||||
|
||||
bool embed_function(string name, int type)
|
||||
bool embed_function(string name, int type, int fn_utype=-1)
|
||||
{
|
||||
if(getIDInScope(name) >= 0)
|
||||
{
|
||||
@@ -958,6 +1066,7 @@ bool embed_function(string name, int type)
|
||||
break;
|
||||
case ID_TYPE_FN_NUM:
|
||||
case ID_TYPE_FN_STR:
|
||||
case ID_TYPE_FN_USER:
|
||||
current_block_state = BLOCK_STATE_FUNCTION;
|
||||
break;
|
||||
default:
|
||||
@@ -976,9 +1085,11 @@ bool embed_function(string name, int type)
|
||||
fn.name = name;
|
||||
fn.scope = "main";
|
||||
fn.type = type;
|
||||
fn.type_index = fn_utype;
|
||||
fn.isBuiltin = true;
|
||||
fn.vmFunctionIndex = current_vmFunction_index;
|
||||
current_vmFunction_index++;
|
||||
//cout << "current_vmFunction = " << current_vmFunction_index << endl;
|
||||
|
||||
fn.num_args = 0; //function args default to 0; args are added with add_function_args
|
||||
current_fn_index = id.size();
|
||||
@@ -986,7 +1097,7 @@ bool embed_function(string name, int type)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool add_embedded_arg(string arg_name, int arg_type)
|
||||
bool add_embedded_arg(string arg_name, int arg_type, int arg_utype=-1)
|
||||
{
|
||||
//fn_arg
|
||||
//fn_arg_type
|
||||
@@ -994,6 +1105,11 @@ bool add_embedded_arg(string arg_name, int arg_type)
|
||||
int fn_index = current_fn_index;
|
||||
id[fn_index].fn_arg.push_back(arg_name);
|
||||
id[fn_index].fn_arg_type.push_back(arg_type);
|
||||
id[fn_index].fn_arg_utype.push_back(arg_utype);
|
||||
|
||||
string fn_arg_utype_name = "";
|
||||
if(arg_utype >= 0)
|
||||
fn_arg_utype_name = utype[arg_utype].name;
|
||||
|
||||
string fn_id = "";
|
||||
int fn_id_index = -1;
|
||||
@@ -1012,6 +1128,13 @@ bool add_embedded_arg(string arg_name, int arg_type)
|
||||
create_variable(fn_id, ID_TYPE_STR);
|
||||
fn_strCount++;
|
||||
}
|
||||
else if(arg_type == ID_TYPE_USER)
|
||||
{
|
||||
fn_id = "#fu" + rc_intToString(fn_usrCount);
|
||||
if(getIDInScope(fn_id) < 0)
|
||||
create_variable(fn_id, ID_TYPE_USER, fn_arg_utype_name);
|
||||
fn_usrCount++;
|
||||
}
|
||||
else if(arg_type == ID_TYPE_BYREF_NUM)
|
||||
{
|
||||
fn_id = "#fn" + rc_intToString(fn_numCount);
|
||||
@@ -1026,6 +1149,13 @@ bool add_embedded_arg(string arg_name, int arg_type)
|
||||
create_variable(fn_id, ID_TYPE_BYREF_STR);
|
||||
fn_strCount++;
|
||||
}
|
||||
else if(arg_type == ID_TYPE_BYREF_USER)
|
||||
{
|
||||
fn_id = "#fu" + rc_intToString(fn_usrCount);
|
||||
if(getIDInScope(fn_id) < 0)
|
||||
create_variable(fn_id, ID_TYPE_BYREF_USER, fn_arg_utype_name);
|
||||
fn_usrCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc_setError("Invalid type in function definition");
|
||||
@@ -1037,7 +1167,7 @@ bool add_embedded_arg(string arg_name, int arg_type)
|
||||
|
||||
isFunctionArg_flag = true;
|
||||
|
||||
create_variable(arg_name, arg_type, "", fn_arg_vec);
|
||||
create_variable(arg_name, arg_type, fn_arg_utype_name, fn_arg_vec);
|
||||
|
||||
id[fn_index].fn_reg.push_back( fn_id );
|
||||
id[fn_index].fn_arg_vec.push_back(fn_arg_vec);
|
||||
|
||||
@@ -36,7 +36,8 @@ vector<string> inc_files;
|
||||
|
||||
void rcbasic_init()
|
||||
{
|
||||
create_type("null");
|
||||
//init built-in types here
|
||||
init_embedded_types();
|
||||
|
||||
//init built-in functions here
|
||||
|
||||
@@ -46,7 +47,9 @@ void rcbasic_init()
|
||||
current_scope = "main";
|
||||
vm_asm.push_back(".code");
|
||||
|
||||
init_embedded();
|
||||
init_embedded_functions();
|
||||
|
||||
init_embedded_variables();
|
||||
|
||||
//cout << "numid_count = " << num_id_count << endl;
|
||||
//cout << "strid_count = " << str_id_count << endl << endl;
|
||||
@@ -61,7 +64,7 @@ void rcbasic_init()
|
||||
|
||||
void rcbasic_dev_init()
|
||||
{
|
||||
create_type("null");
|
||||
//create_type("empty");
|
||||
|
||||
//init built-in functions here
|
||||
|
||||
@@ -166,354 +169,7 @@ bool rc_preprocessor()
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Array_Macros(int tmp_start_token)
|
||||
{
|
||||
//returning true is just saying there were no syntax errors found
|
||||
if(tmp_token[tmp_start_token].length() < 5)
|
||||
return true;
|
||||
if(StringToLower(tmp_token[tmp_start_token].substr(4)).compare("arraydim")!=0 && StringToLower(tmp_token[tmp_start_token].substr(4)).compare("arraysize")!=0 &&
|
||||
StringToLower(tmp_token[tmp_start_token].substr(4)).compare("arraycopy")!=0 && StringToLower(tmp_token[tmp_start_token].substr(4)).compare("arrayfill")!=0)
|
||||
return true;
|
||||
|
||||
int64_t arr_id = 0;
|
||||
vector<string> tmp_macro_token;
|
||||
vector<string> tmp_current_token;
|
||||
//int ArrayDim_id = getIDInScope_ByIndex("ArrayDim");
|
||||
for(int i = tmp_start_token; i < tmp_token.size(); i++)
|
||||
{
|
||||
if(tmp_token[i].substr(0,4).compare("<id>")==0)
|
||||
{
|
||||
if(StringToLower(tmp_token[i].substr(4)).compare("arraydim")==0)
|
||||
{
|
||||
if(tmp_token[i+1].compare("<par>")!=0)
|
||||
{
|
||||
rc_setError("Invalid use of ArrayDim");
|
||||
return false;
|
||||
}
|
||||
if(tmp_token[i+2].substr(0,4).compare("<id>")==0)
|
||||
{
|
||||
arr_id = getIDInScope_ByIndex(tmp_token[i+2].substr(4));
|
||||
if(arr_id < 0)
|
||||
{
|
||||
rc_setError("Identifier must be declared before call to ArrayDim");
|
||||
return false;
|
||||
}
|
||||
|
||||
id[arr_id].isArrayArg = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
rc_setError("Expected Identifier in ArrayDim");
|
||||
return false;
|
||||
}
|
||||
|
||||
int end_token = i+2;
|
||||
int expr_scope = 1;
|
||||
for(end_token; end_token < tmp_token.size(); end_token++)
|
||||
{
|
||||
if(tmp_token[end_token].compare("<par>")==0 || tmp_token[end_token].compare("<square>")==0)
|
||||
expr_scope++;
|
||||
else if(tmp_token[end_token].compare("</par>")==0 || tmp_token[end_token].compare("</square>")==0)
|
||||
expr_scope--;
|
||||
|
||||
if(expr_scope==0 && tmp_token[end_token].compare("</par>")==0)
|
||||
break;
|
||||
}
|
||||
|
||||
tmp_macro_token.clear();
|
||||
for(int n = i; n <= end_token; n++)
|
||||
tmp_macro_token.push_back(tmp_token[n]);
|
||||
|
||||
//cout << "<---- DEBUG ---->" << i << endl;
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"token[" << n << "] = " << token[n] << endl;
|
||||
|
||||
tmp_current_token.clear();
|
||||
for(int n = 0; n < token.size(); n++)
|
||||
tmp_current_token.push_back(token[n]);
|
||||
|
||||
token.clear();
|
||||
for(int n = 0; n < tmp_macro_token.size(); n++)
|
||||
token.push_back(tmp_macro_token[n]);
|
||||
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"new token[" << n << "] = " << token[n] << endl;
|
||||
|
||||
|
||||
if(!eval_expression())
|
||||
{
|
||||
rc_setError("Could not evaluate ArrayDim");
|
||||
return false;
|
||||
}
|
||||
|
||||
for(int n = i; n <= end_token; n++)
|
||||
tmp_token[n] = token[n-i];
|
||||
|
||||
token.clear();
|
||||
for(int n = 0; n < tmp_current_token.size(); n++)
|
||||
token.push_back(tmp_current_token[n]);
|
||||
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"final token[" << n << "] = " << token[n] << endl;
|
||||
return true;
|
||||
|
||||
}
|
||||
else if(StringToLower(tmp_token[i].substr(4)).compare("arraysize")==0)
|
||||
{
|
||||
if(tmp_token[i+1].compare("<par>")!=0)
|
||||
{
|
||||
rc_setError("Invalid use of ArraySize");
|
||||
return false;
|
||||
}
|
||||
if(tmp_token[i+2].substr(0,4).compare("<id>")==0)
|
||||
{
|
||||
arr_id = getIDInScope_ByIndex(tmp_token[i+2].substr(4));
|
||||
if(arr_id < 0)
|
||||
{
|
||||
rc_setError("Identifier must be declared before call to ArraySize");
|
||||
return false;
|
||||
}
|
||||
|
||||
id[arr_id].isArrayArg = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
rc_setError("Expected Identifier in ArraySize");
|
||||
return false;
|
||||
}
|
||||
|
||||
int end_token = i+2;
|
||||
int expr_scope = 1;
|
||||
for(end_token; end_token < tmp_token.size(); end_token++)
|
||||
{
|
||||
if(tmp_token[end_token].compare("<par>")==0 || tmp_token[end_token].compare("<square>")==0)
|
||||
expr_scope++;
|
||||
else if(tmp_token[end_token].compare("</par>")==0 || tmp_token[end_token].compare("</square>")==0)
|
||||
expr_scope--;
|
||||
|
||||
if(expr_scope==0 && tmp_token[end_token].compare("</par>")==0)
|
||||
break;
|
||||
}
|
||||
|
||||
tmp_macro_token.clear();
|
||||
for(int n = i; n <= end_token; n++)
|
||||
tmp_macro_token.push_back(tmp_token[n]);
|
||||
|
||||
|
||||
tmp_current_token.clear();
|
||||
for(int n = 0; n < token.size(); n++)
|
||||
tmp_current_token.push_back(token[n]);
|
||||
|
||||
token.clear();
|
||||
for(int n = 0; n < tmp_macro_token.size(); n++)
|
||||
token.push_back(tmp_macro_token[n]);
|
||||
|
||||
if(!eval_expression(0, token.size()-1, true))//i, end_token))
|
||||
{
|
||||
rc_setError("Could not evaluate ArraySize expression");
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout << "token["<< n << "] = " << token[n] << endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
for(int n = i; n <= end_token; n++)
|
||||
tmp_token[n] = token[n-i];
|
||||
|
||||
token.clear();
|
||||
for(int n = 0; n < tmp_current_token.size(); n++)
|
||||
token.push_back(tmp_current_token[n]);
|
||||
|
||||
return true;
|
||||
}
|
||||
else if(StringToLower(tmp_token[i].substr(4)).compare("arraycopy")==0)
|
||||
{
|
||||
if(tmp_token.size() < 5)
|
||||
{
|
||||
rc_setError("Ivalid use of ArrayCopy");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(tmp_token[i+1].compare("<par>")!=0)
|
||||
{
|
||||
rc_setError("Invalid use of ArrayCopy");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(tmp_token[i+2].substr(0,4).compare("<id>")==0)
|
||||
{
|
||||
arr_id = getIDInScope_ByIndex(tmp_token[i+2].substr(4));
|
||||
if(arr_id < 0)
|
||||
{
|
||||
rc_setError("Identifier must be declared before call to ArrayCopy");
|
||||
return false;
|
||||
}
|
||||
|
||||
id[arr_id].isArrayArg = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
rc_setError("Expected Identifier in ArrayCopy");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!tmp_token[i+3].substr(0,7).compare("<comma>")==0)
|
||||
{
|
||||
rc_setError("Expected comma in ArrayCopy");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(tmp_token[i+4].substr(0,4).compare("<id>")==0)
|
||||
{
|
||||
arr_id = getIDInScope_ByIndex(tmp_token[i+4].substr(4));
|
||||
if(arr_id < 0)
|
||||
{
|
||||
rc_setError("Identifier must be declared before call to ArrayCopy");
|
||||
return false;
|
||||
}
|
||||
|
||||
id[arr_id].isArrayArg = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
rc_setError("Expected Identifier in ArrayCopy");
|
||||
return false;
|
||||
}
|
||||
|
||||
int end_token = i+4;
|
||||
int expr_scope = 1;
|
||||
for(end_token; end_token < tmp_token.size(); end_token++)
|
||||
{
|
||||
if(tmp_token[end_token].compare("<par>")==0 || tmp_token[end_token].compare("<square>")==0)
|
||||
expr_scope++;
|
||||
else if(tmp_token[end_token].compare("</par>")==0 || tmp_token[end_token].compare("</square>")==0)
|
||||
expr_scope--;
|
||||
|
||||
if(expr_scope==0 && tmp_token[end_token].compare("</par>")==0)
|
||||
break;
|
||||
}
|
||||
|
||||
tmp_macro_token.clear();
|
||||
for(int n = i; n <= end_token; n++)
|
||||
tmp_macro_token.push_back(tmp_token[n]);
|
||||
|
||||
//cout << "<---- DEBUG ---->" << i << endl;
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"token[" << n << "] = " << token[n] << endl;
|
||||
|
||||
tmp_current_token.clear();
|
||||
for(int n = 0; n < token.size(); n++)
|
||||
tmp_current_token.push_back(token[n]);
|
||||
|
||||
token.clear();
|
||||
for(int n = 0; n < tmp_macro_token.size(); n++)
|
||||
token.push_back(tmp_macro_token[n]);
|
||||
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"new token[" << n << "] = " << token[n] << endl;
|
||||
|
||||
|
||||
if(!eval_expression())
|
||||
{
|
||||
rc_setError("Could not evaluate ArrayCopy");
|
||||
return false;
|
||||
}
|
||||
|
||||
for(int n = i; n <= end_token; n++)
|
||||
tmp_token[n] = token[n-i];
|
||||
|
||||
token.clear();
|
||||
for(int n = 0; n < tmp_current_token.size(); n++)
|
||||
token.push_back(tmp_current_token[n]);
|
||||
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"final token[" << n << "] = " << token[n] << endl;
|
||||
return true;
|
||||
|
||||
}
|
||||
else if(StringToLower(tmp_token[i].substr(4)).compare("arrayfill")==0)
|
||||
{
|
||||
if(tmp_token[i+1].compare("<par>")!=0)
|
||||
{
|
||||
rc_setError("Invalid use of ArrayFill");
|
||||
return false;
|
||||
}
|
||||
if(tmp_token[i+2].substr(0,4).compare("<id>")==0)
|
||||
{
|
||||
arr_id = getIDInScope_ByIndex(tmp_token[i+2].substr(4));
|
||||
if(arr_id < 0)
|
||||
{
|
||||
rc_setError("Identifier must be declared before call to ArrayFill");
|
||||
return false;
|
||||
}
|
||||
|
||||
id[arr_id].isArrayArg = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
rc_setError("Expected Identifier in ArrayFill");
|
||||
return false;
|
||||
}
|
||||
|
||||
int end_token = i+2;
|
||||
int expr_scope = 1;
|
||||
for(end_token; end_token < tmp_token.size(); end_token++)
|
||||
{
|
||||
if(tmp_token[end_token].compare("<par>")==0 || tmp_token[end_token].compare("<square>")==0)
|
||||
expr_scope++;
|
||||
else if(tmp_token[end_token].compare("</par>")==0 || tmp_token[end_token].compare("</square>")==0)
|
||||
expr_scope--;
|
||||
|
||||
if(expr_scope==0 && tmp_token[end_token].compare("</par>")==0)
|
||||
break;
|
||||
}
|
||||
|
||||
tmp_macro_token.clear();
|
||||
for(int n = i; n <= end_token; n++)
|
||||
tmp_macro_token.push_back(tmp_token[n]);
|
||||
|
||||
//cout << "<---- DEBUG ---->" << i << endl;
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"token[" << n << "] = " << token[n] << endl;
|
||||
|
||||
tmp_current_token.clear();
|
||||
for(int n = 0; n < token.size(); n++)
|
||||
tmp_current_token.push_back(token[n]);
|
||||
|
||||
token.clear();
|
||||
for(int n = 0; n < tmp_macro_token.size(); n++)
|
||||
token.push_back(tmp_macro_token[n]);
|
||||
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"new token[" << n << "] = " << token[n] << endl;
|
||||
|
||||
|
||||
if(!eval_expression())
|
||||
{
|
||||
rc_setError("Could not evaluate ArrayFill");
|
||||
return false;
|
||||
}
|
||||
|
||||
for(int n = i; n <= end_token; n++)
|
||||
tmp_token[n] = token[n-i];
|
||||
|
||||
token.clear();
|
||||
for(int n = 0; n < tmp_current_token.size(); n++)
|
||||
token.push_back(tmp_current_token[n]);
|
||||
|
||||
//for(int n = 0; n < token.size(); n++)
|
||||
// cout <<"final token[" << n << "] = " << token[n] << endl;
|
||||
return true;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool rc_eval(string line)
|
||||
{
|
||||
@@ -524,6 +180,8 @@ bool rc_eval(string line)
|
||||
ERROR_MSG = "";
|
||||
clearRegs();
|
||||
clearTokens();
|
||||
byref_type_exception.clear();
|
||||
|
||||
if(line.compare("#var")==0)
|
||||
{
|
||||
output_vars();
|
||||
@@ -597,11 +255,11 @@ bool rc_eval(string line)
|
||||
//cout << "i = " << i << " tmp_token_size = " << tmp_token.size() << endl;
|
||||
if(tmp_token[i].compare("<:>")==0)
|
||||
break;
|
||||
else if(!Array_Macros(i))
|
||||
{
|
||||
//cout << "ERROR:" << rc_getError() << endl;
|
||||
return false;
|
||||
}
|
||||
//else if(!Array_Macros(i))
|
||||
//{
|
||||
// cout << "ERROR:" << rc_getError() << endl;
|
||||
// return false;
|
||||
//}
|
||||
//cout << "### tmp_token[" << i << "] = ";
|
||||
//cout << tmp_token[i] << endl;
|
||||
token.push_back(tmp_token[i]);
|
||||
@@ -617,6 +275,20 @@ bool rc_eval(string line)
|
||||
}
|
||||
}
|
||||
|
||||
if(byref_type_exception.size() > 0)
|
||||
{
|
||||
for(int i = 0; i < byref_type_exception.size(); i++)
|
||||
{
|
||||
//cout << "type exception: [" << byref_type_exception[i].tk_reg << "] exception_status = " << byref_type_exception[i].exception_used << endl;
|
||||
|
||||
if(!byref_type_exception[i].exception_used)
|
||||
{
|
||||
rc_setError(byref_type_exception[i].error_log);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
//if(!eval_expression())
|
||||
@@ -762,7 +434,7 @@ bool rcbasic_compile()
|
||||
{
|
||||
vm_asm.push_back("dbg uint=0 uint=" + rc_uint64ToString(rcbasic_program.top().dbg_inc_index) + " uint=" + rc_uint64ToString(rcbasic_program.top().line_number));
|
||||
}
|
||||
cout << "line " << rcbasic_program.top().line_number << ": " << rcbasic_file.tellg() << " -> " << line << endl;
|
||||
//cout << "line " << rcbasic_program.top().line_number << ": " << rcbasic_file.tellg() << " -> " << line << endl;
|
||||
if(!rcbasic_program.top().eof_reached)
|
||||
rcbasic_program.top().line_position = rcbasic_file.tellg();
|
||||
//vm_asm.push_back("mov n0 " + rc_intToString(rcbasic_program.top().line_number));
|
||||
@@ -827,6 +499,7 @@ void rcbasic_export_dev()
|
||||
fstream f("rcbasic_dev.txt", fstream::out | fstream::trunc);
|
||||
fstream f2("rcbasic_dev2.txt", fstream::out | fstream::trunc);
|
||||
fstream f3("rcbasic_dev3.txt", fstream::out | fstream::trunc);
|
||||
fstream f4("rcbasic_dev4.txt", fstream::out | fstream::trunc);
|
||||
|
||||
if(!f.is_open())
|
||||
return;
|
||||
@@ -848,6 +521,11 @@ void rcbasic_export_dev()
|
||||
f2 << fn_line << endl;
|
||||
f3 << "case FN_" << id[i].name << ": //String Function" << endl << "break;" << endl;
|
||||
break;
|
||||
case ID_TYPE_FN_USER:
|
||||
output_line += "ID_TYPE_FN_STR);";
|
||||
f2 << fn_line << endl;
|
||||
f3 << "case FN_" << id[i].name << ": //UDT Function" << endl << "break;" << endl;
|
||||
break;
|
||||
case ID_TYPE_SUB:
|
||||
output_line += "ID_TYPE_SUB);";
|
||||
f2 << fn_line << endl;
|
||||
@@ -858,6 +536,7 @@ void rcbasic_export_dev()
|
||||
}
|
||||
f << output_line << endl;
|
||||
output_line = "";
|
||||
string fn_arg_utype = "";
|
||||
for(int n = 0; n < id[i].num_args; n++)
|
||||
{
|
||||
fn_line = "#define " + StringToUpper(id[i].name + "_" + id[i].fn_arg[n]) + " ";
|
||||
@@ -868,19 +547,33 @@ void rcbasic_export_dev()
|
||||
case ID_TYPE_NUM:
|
||||
output_line += "ID_TYPE_NUM);";
|
||||
//fn_line += "num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].nid_value[0].value[0]";
|
||||
fn_line += "num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].nid_value[0].value[ num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].byref_offset ]";
|
||||
fn_line += "num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].nid_value.value[ num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].byref_offset ]";
|
||||
break;
|
||||
case ID_TYPE_BYREF_NUM:
|
||||
output_line += "ID_TYPE_BYREF_NUM);";
|
||||
fn_line += "num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].nid_value[0].value[ num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].byref_offset ]";
|
||||
fn_line += "num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].nid_value.value[ num_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].byref_offset ]";
|
||||
break;
|
||||
case ID_TYPE_STR:
|
||||
output_line += "ID_TYPE_STR);";
|
||||
fn_line += "str_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].sid_value[0].value[ str_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].byref_offset ]";
|
||||
fn_line += "str_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].sid_value.value[ str_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].byref_offset ]";
|
||||
break;
|
||||
case ID_TYPE_BYREF_STR:
|
||||
output_line += "ID_TYPE_BYREF_STR);";
|
||||
fn_line += "str_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].sid_value[0].value[ str_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].byref_offset ]";
|
||||
fn_line += "str_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].sid_value.value[ str_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].byref_offset ]";
|
||||
break;
|
||||
case ID_TYPE_USER:
|
||||
//fn_arg_utype = "";
|
||||
//if(id[i].fn_arg_utype[n] >= 0)
|
||||
// fn_arg_utype = utype[id[i].fn_arg_utype[n]].name;
|
||||
output_line += "ID_TYPE_USER, " + rc_intToString(id[i].fn_arg_utype[n]) + ");";
|
||||
fn_line += "usr_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].var_ref->uid_value[0]";
|
||||
break;
|
||||
case ID_TYPE_BYREF_USER:
|
||||
//fn_arg_utype = "";
|
||||
//if(id[i].fn_arg_utype[n] >= 0)
|
||||
// fn_arg_utype = utype[id[i].fn_arg_utype[n]].name;
|
||||
output_line += "ID_TYPE_BYREF_USER, " + rc_intToString(id[i].fn_arg_utype[n]) + ");";
|
||||
fn_line += "usr_var[" + rc_intToString(id[i].fn_arg_vec[n]) + "].var_ref";
|
||||
break;
|
||||
}
|
||||
f2 << fn_line << endl;
|
||||
@@ -888,9 +581,50 @@ void rcbasic_export_dev()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for(int i = 0; i < utype.size(); i++)
|
||||
{
|
||||
output_line = "create_type(\"" + utype[i].name + "\");";
|
||||
|
||||
f4 << output_line << endl;
|
||||
|
||||
for(int n = 0; n < utype[i].num_members; n++)
|
||||
{
|
||||
output_line = "vm_asm.push_back(\"mov n0 " + rc_intToString(utype[i].member_dim[n].dim_size[0]) + "\");";
|
||||
f4 << output_line << endl;
|
||||
|
||||
output_line = "vm_asm.push_back(\"mov n1 " + rc_intToString(utype[i].member_dim[n].dim_size[1]) + "\");";
|
||||
f4 << output_line << endl;
|
||||
|
||||
output_line = "vm_asm.push_back(\"mov n2 " + rc_intToString(utype[i].member_dim[n].dim_size[2]) + "\");";
|
||||
f4 << output_line << endl;
|
||||
|
||||
int ut_index = utype[i].member_utype_index[n];
|
||||
string member_utype_name = "";
|
||||
|
||||
if(ut_index >= 0)
|
||||
member_utype_name = utype[ut_index].name;
|
||||
else if(utype[i].member_type[n] == ID_TYPE_USER)
|
||||
{
|
||||
cout << "ERROR CREATING TYPE" << endl;
|
||||
f.close();
|
||||
f2.close();
|
||||
f3.close();
|
||||
f4.close();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
output_line = "add_type_member(\"" + utype[i].member_name[n] + "\", " + rc_intToString(utype[i].member_type[n]) + ", \"" + member_utype_name + "\", " +
|
||||
rc_intToString(utype[i].member_dim_count[n]) + ", \"n0\", \"n1\", \"n2\");";
|
||||
f4 << output_line << endl;
|
||||
}
|
||||
}
|
||||
|
||||
f.close();
|
||||
f2.close();
|
||||
f3.close();
|
||||
f4.close();
|
||||
cout << "rcbasic_dev file was created" << endl;
|
||||
}
|
||||
|
||||
@@ -965,6 +699,9 @@ void rcbasic_output_debug_info()
|
||||
case ID_TYPE_USER:
|
||||
f << "U " << id[i].scope << " " << id[i].name << " " << id[i].vec_pos << "\n";
|
||||
break;
|
||||
case ID_TYPE_BYREF_USER:
|
||||
f << "BU " << id[i].scope << " " << id[i].name << " " << id[i].vec_pos << "\n";
|
||||
break;
|
||||
case ID_TYPE_USER_NUM:
|
||||
f << "UN " << id[i].scope << " " << id[i].name << " " << id[i].vec_pos << "\n";
|
||||
break;
|
||||
@@ -996,7 +733,7 @@ int main(int argc, char * argv[])
|
||||
{
|
||||
string line = "";
|
||||
|
||||
//rcbasic_dev("embedded_functions.bas"); return 0;
|
||||
//rcbasic_dev("embedded_functions.bas"); rcbasic_output_debug_info(); return 0;
|
||||
|
||||
string rc_filename = "";// = "tst.bas";
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -70,7 +70,9 @@ public:
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim1")==0 || s.substr(0,s.find_first_of(" ")).compare("redim1$")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("for_offset_arr2")==0 || s.substr(0,s.find_first_of(" ")).compare("obj_usr_n1")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_s1")==0 || s.substr(0,s.find_first_of(" ")).compare("uref_ptr")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_init1")==0 || s.substr(0,s.find_first_of(" ")).compare("preset_t")==0)
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_init1")==0 || s.substr(0,s.find_first_of(" ")).compare("preset_t")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim_type")==0 || s.substr(0,s.find_first_of(" ")).compare("redim_type_n1")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim_type_s1")==0)
|
||||
{
|
||||
current_address[current_segment] += 17; //1 byte for instruction and 8 bytes for each argument
|
||||
}
|
||||
@@ -128,7 +130,8 @@ public:
|
||||
s.substr(0,s.find_first_of(" ")).compare("end_x")==0 || s.substr(0,s.find_first_of(" ")).compare("lval")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("lval$")==0 || s.substr(0,s.find_first_of(" ")).compare("obj_usr_n")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_s")==0 || s.substr(0,s.find_first_of(" ")).compare("obj_usr_get")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("delete_t")==0 || s.substr(0,s.find_first_of(" ")).compare("obj_usr_init")==0)
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_init")==0 || s.substr(0,s.find_first_of(" ")).compare("redim_type_n")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim_type_s")==0)
|
||||
{
|
||||
current_address[current_segment] += 9; //1 byte for instruction and 8 bytes a single argument
|
||||
}
|
||||
@@ -138,7 +141,9 @@ public:
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim2")==0 || s.substr(0,s.find_first_of(" ")).compare("redim2$")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("for_offset_arr3")==0 || s.substr(0,s.find_first_of(" ")).compare("dbg")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_n2")==0 || s.substr(0,s.find_first_of(" ")).compare("obj_usr_s2")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_init2")==0 || s.substr(0,s.find_first_of(" ")).compare("preset_t1")==0)
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_init2")==0 || s.substr(0,s.find_first_of(" ")).compare("preset_t1")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("delete_t")==0 || s.substr(0,s.find_first_of(" ")).compare("redim_type1")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim_type_n2")==0 || s.substr(0,s.find_first_of(" ")).compare("redim_type_s2")==0)
|
||||
{
|
||||
current_address[current_segment] += 25; //1 byte for instruction and 8 bytes for 3 arguments
|
||||
}
|
||||
@@ -148,11 +153,13 @@ public:
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim3")==0 || s.substr(0,s.find_first_of(" ")).compare("redim3$")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr_n3")==0 || s.substr(0,s.find_first_of(" ")).compare("obj_usr_s3")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("obj_usr3")==0 || s.substr(0,s.find_first_of(" ")).compare("obj_usr_init3")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("preset_t2")==0)
|
||||
s.substr(0,s.find_first_of(" ")).compare("preset_t2")==0 || s.substr(0,s.find_first_of(" ")).compare("redim_type2")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim_type_n3")==0 || s.substr(0,s.find_first_of(" ")).compare("redim_type_s3")==0)
|
||||
{
|
||||
current_address[current_segment] += 33; //1 byte for instruction and 8 bytes for 4 arguments
|
||||
}
|
||||
else if(s.substr(0,s.find_first_of(" ")).compare("dim_type3")==0 || s.substr(0,s.find_first_of(" ")).compare("preset_t3")==0)
|
||||
else if(s.substr(0,s.find_first_of(" ")).compare("dim_type3")==0 || s.substr(0,s.find_first_of(" ")).compare("preset_t3")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("redim_type3")==0)
|
||||
{
|
||||
current_address[current_segment] += 41; //1 byte for instruction and 8 bytes for 5 arguments
|
||||
}
|
||||
@@ -161,7 +168,7 @@ public:
|
||||
s.substr(0,s.find_first_of(" ")).compare("clear_stack$")==0 || s.substr(0,s.find_first_of(" ")).compare("do")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("pop_loop_stack")==0 || s.substr(0,s.find_first_of(" ")).compare("return")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("println")==0 || s.substr(0,s.find_first_of(" ")).compare("for_offset_0")==0 ||
|
||||
s.substr(0,s.find_first_of(" ")).compare("push_t_null")==0)
|
||||
s.substr(0,s.find_first_of(" ")).compare("push_t_null")==0 || s.substr(0,s.find_first_of(" ")).compare("redim_top")==0)
|
||||
{
|
||||
current_address[current_segment] += 1; //1 byte for instruction and no arguments
|
||||
}
|
||||
|
||||
@@ -1207,6 +1207,74 @@ namespace rc_cbc_assembler
|
||||
{
|
||||
writeSegment(191);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type")==0)
|
||||
{
|
||||
string arg_type = line_arg[1].substr(0,1);
|
||||
if(arg_type.compare("u")==0)
|
||||
writeSegment(192);
|
||||
else if(arg_type.compare("!")==0)
|
||||
writeSegment(204);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type1")==0)
|
||||
{
|
||||
string arg_type = line_arg[1].substr(0,1);
|
||||
if(arg_type.compare("u")==0)
|
||||
writeSegment(193);
|
||||
else if(arg_type.compare("!")==0)
|
||||
writeSegment(205);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type2")==0)
|
||||
{
|
||||
string arg_type = line_arg[1].substr(0,1);
|
||||
if(arg_type.compare("u")==0)
|
||||
writeSegment(194);
|
||||
else if(arg_type.compare("!")==0)
|
||||
writeSegment(206);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type3")==0)
|
||||
{
|
||||
string arg_type = line_arg[1].substr(0,1);
|
||||
if(arg_type.compare("u")==0)
|
||||
writeSegment(195);
|
||||
else if(arg_type.compare("!")==0)
|
||||
writeSegment(207);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type_n")==0)
|
||||
{
|
||||
writeSegment(196);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type_n1")==0)
|
||||
{
|
||||
writeSegment(197);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type_n2")==0)
|
||||
{
|
||||
writeSegment(198);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type_n3")==0)
|
||||
{
|
||||
writeSegment(199);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type_s")==0)
|
||||
{
|
||||
writeSegment(200);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type_s1")==0)
|
||||
{
|
||||
writeSegment(201);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type_s2")==0)
|
||||
{
|
||||
writeSegment(202);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_type_s3")==0)
|
||||
{
|
||||
writeSegment(203);
|
||||
}
|
||||
else if(line_arg[0].compare("redim_top")==0)
|
||||
{
|
||||
writeSegment(208);
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "unrecognized cmd: " << line_arg[0] << endl;
|
||||
|
||||
1428
rcbasic_build/rcbasic_dev.txt
Normal file
1428
rcbasic_build/rcbasic_dev.txt
Normal file
File diff suppressed because it is too large
Load Diff
1428
rcbasic_build/rcbasic_dev2.txt
Normal file
1428
rcbasic_build/rcbasic_dev2.txt
Normal file
File diff suppressed because it is too large
Load Diff
950
rcbasic_build/rcbasic_dev3.txt
Normal file
950
rcbasic_build/rcbasic_dev3.txt
Normal file
@@ -0,0 +1,950 @@
|
||||
case FN_FPrint: //Sub Procedure
|
||||
break;
|
||||
case FN_Input$: //String Function
|
||||
break;
|
||||
case FN_ArrayDim: //Number Function
|
||||
break;
|
||||
case FN_StringArrayDim: //Number Function
|
||||
break;
|
||||
case FN_NumberArrayDim: //Number Function
|
||||
break;
|
||||
case FN_ArraySize: //Number Function
|
||||
break;
|
||||
case FN_StringArraySize: //Number Function
|
||||
break;
|
||||
case FN_NumberArraySize: //Number Function
|
||||
break;
|
||||
case FN_Abs: //Number Function
|
||||
break;
|
||||
case FN_ACos: //Number Function
|
||||
break;
|
||||
case FN_AndBit: //Number Function
|
||||
break;
|
||||
case FN_ASin: //Number Function
|
||||
break;
|
||||
case FN_ATan: //Number Function
|
||||
break;
|
||||
case FN_Bin$: //String Function
|
||||
break;
|
||||
case FN_CInt32: //Number Function
|
||||
break;
|
||||
case FN_CInt64: //Number Function
|
||||
break;
|
||||
case FN_Cos: //Number Function
|
||||
break;
|
||||
case FN_Degrees: //Number Function
|
||||
break;
|
||||
case FN_Exp: //Number Function
|
||||
break;
|
||||
case FN_Frac: //Number Function
|
||||
break;
|
||||
case FN_Hex$: //String Function
|
||||
break;
|
||||
case FN_HexVal: //Number Function
|
||||
break;
|
||||
case FN_Int: //Number Function
|
||||
break;
|
||||
case FN_Log: //Number Function
|
||||
break;
|
||||
case FN_Max: //Number Function
|
||||
break;
|
||||
case FN_Min: //Number Function
|
||||
break;
|
||||
case FN_OrBit: //Number Function
|
||||
break;
|
||||
case FN_Radians: //Number Function
|
||||
break;
|
||||
case FN_Randomize: //Number Function
|
||||
break;
|
||||
case FN_Rand: //Number Function
|
||||
break;
|
||||
case FN_Round: //Number Function
|
||||
break;
|
||||
case FN_Sign: //Number Function
|
||||
break;
|
||||
case FN_Sin: //Number Function
|
||||
break;
|
||||
case FN_Sqrt: //Number Function
|
||||
break;
|
||||
case FN_Tan: //Number Function
|
||||
break;
|
||||
case FN_XOrBit: //Number Function
|
||||
break;
|
||||
case FN_Asc: //Number Function
|
||||
break;
|
||||
case FN_Chr$: //String Function
|
||||
break;
|
||||
case FN_Insert$: //String Function
|
||||
break;
|
||||
case FN_InStr: //Number Function
|
||||
break;
|
||||
case FN_LCase$: //String Function
|
||||
break;
|
||||
case FN_Left$: //String Function
|
||||
break;
|
||||
case FN_Length: //Number Function
|
||||
break;
|
||||
case FN_Len: //Number Function
|
||||
break;
|
||||
case FN_LTrim$: //String Function
|
||||
break;
|
||||
case FN_Mid$: //String Function
|
||||
break;
|
||||
case FN_ReplaceSubstr$: //String Function
|
||||
break;
|
||||
case FN_Replace$: //String Function
|
||||
break;
|
||||
case FN_Reverse$: //String Function
|
||||
break;
|
||||
case FN_Right$: //String Function
|
||||
break;
|
||||
case FN_RTrim$: //String Function
|
||||
break;
|
||||
case FN_StringFill$: //String Function
|
||||
break;
|
||||
case FN_Str$: //String Function
|
||||
break;
|
||||
case FN_Str_F$: //String Function
|
||||
break;
|
||||
case FN_Str_S$: //String Function
|
||||
break;
|
||||
case FN_Tally: //Number Function
|
||||
break;
|
||||
case FN_Trim$: //String Function
|
||||
break;
|
||||
case FN_UCase$: //String Function
|
||||
break;
|
||||
case FN_Val: //Number Function
|
||||
break;
|
||||
case FN_Stack_N: //Sub Procedure
|
||||
break;
|
||||
case FN_Stack_S: //Sub Procedure
|
||||
break;
|
||||
case FN_Push_N: //Sub Procedure
|
||||
break;
|
||||
case FN_Pop_N: //Number Function
|
||||
break;
|
||||
case FN_Push_S: //Sub Procedure
|
||||
break;
|
||||
case FN_Pop_S$: //String Function
|
||||
break;
|
||||
case FN_Stack_Size_N: //Number Function
|
||||
break;
|
||||
case FN_Stack_Size_S: //Number Function
|
||||
break;
|
||||
case FN_FileOpen: //Number Function
|
||||
break;
|
||||
case FN_FileClose: //Sub Procedure
|
||||
break;
|
||||
case FN_ReadByte: //Number Function
|
||||
break;
|
||||
case FN_WriteByte: //Sub Procedure
|
||||
break;
|
||||
case FN_ReadLine$: //String Function
|
||||
break;
|
||||
case FN_Write: //Sub Procedure
|
||||
break;
|
||||
case FN_WriteLine: //Sub Procedure
|
||||
break;
|
||||
case FN_CopyFile: //Sub Procedure
|
||||
break;
|
||||
case FN_RemoveFile: //Number Function
|
||||
break;
|
||||
case FN_FileExists: //Number Function
|
||||
break;
|
||||
case FN_MoveFile: //Number Function
|
||||
break;
|
||||
case FN_RenameFile: //Number Function
|
||||
break;
|
||||
case FN_FileLength: //Number Function
|
||||
break;
|
||||
case FN_Tell: //Number Function
|
||||
break;
|
||||
case FN_Seek: //Number Function
|
||||
break;
|
||||
case FN_EOF: //Number Function
|
||||
break;
|
||||
case FN_FreeFile: //Number Function
|
||||
break;
|
||||
case FN_ChangeDir: //Sub Procedure
|
||||
break;
|
||||
case FN_DirExists: //Number Function
|
||||
break;
|
||||
case FN_DirFirst$: //String Function
|
||||
break;
|
||||
case FN_Dir$: //String Function
|
||||
break;
|
||||
case FN_DirNext$: //String Function
|
||||
break;
|
||||
case FN_MakeDir: //Number Function
|
||||
break;
|
||||
case FN_RemoveDir: //Number Function
|
||||
break;
|
||||
case FN_Date$: //String Function
|
||||
break;
|
||||
case FN_Easter$: //String Function
|
||||
break;
|
||||
case FN_Ticks: //Number Function
|
||||
break;
|
||||
case FN_Time$: //String Function
|
||||
break;
|
||||
case FN_Timer: //Number Function
|
||||
break;
|
||||
case FN_Wait: //Sub Procedure
|
||||
break;
|
||||
case FN_WindowOpen: //Sub Procedure
|
||||
break;
|
||||
case FN_WindowClose: //Sub Procedure
|
||||
break;
|
||||
case FN_RaiseWindow: //Sub Procedure
|
||||
break;
|
||||
case FN_Window: //Sub Procedure
|
||||
break;
|
||||
case FN_Update: //Sub Procedure
|
||||
break;
|
||||
case FN_Cls: //Sub Procedure
|
||||
break;
|
||||
case FN_SetClearColor: //Sub Procedure
|
||||
break;
|
||||
case FN_ShowWindow: //Sub Procedure
|
||||
break;
|
||||
case FN_HideWindow: //Sub Procedure
|
||||
break;
|
||||
case FN_SetWindowTitle: //Sub Procedure
|
||||
break;
|
||||
case FN_WindowTitle$: //String Function
|
||||
break;
|
||||
case FN_SetWindowPosition: //Sub Procedure
|
||||
break;
|
||||
case FN_GetWindowPosition: //Sub Procedure
|
||||
break;
|
||||
case FN_SetWindowSize: //Sub Procedure
|
||||
break;
|
||||
case FN_GetWindowSize: //Sub Procedure
|
||||
break;
|
||||
case FN_SetWindowMinSize: //Sub Procedure
|
||||
break;
|
||||
case FN_GetWindowMinSize: //Sub Procedure
|
||||
break;
|
||||
case FN_SetWindowMaxSize: //Sub Procedure
|
||||
break;
|
||||
case FN_GetWindowMaxSize: //Sub Procedure
|
||||
break;
|
||||
case FN_WindowIsFullscreen: //Number Function
|
||||
break;
|
||||
case FN_WindowIsVisible: //Number Function
|
||||
break;
|
||||
case FN_WindowIsBordered: //Number Function
|
||||
break;
|
||||
case FN_WindowIsResizable: //Number Function
|
||||
break;
|
||||
case FN_WindowIsMinimized: //Number Function
|
||||
break;
|
||||
case FN_WindowIsMaximized: //Number Function
|
||||
break;
|
||||
case FN_WindowHasInputFocus: //Number Function
|
||||
break;
|
||||
case FN_WindowHasMouseFocus: //Number Function
|
||||
break;
|
||||
case FN_SetWindowFullscreen: //Sub Procedure
|
||||
break;
|
||||
case FN_MaximizeWindow: //Sub Procedure
|
||||
break;
|
||||
case FN_MinimizeWindow: //Sub Procedure
|
||||
break;
|
||||
case FN_SetWindowBorder: //Sub Procedure
|
||||
break;
|
||||
case FN_WindowClip: //Sub Procedure
|
||||
break;
|
||||
case FN_WindowExists: //Number Function
|
||||
break;
|
||||
case FN_NumWindows: //Number Function
|
||||
break;
|
||||
case FN_WindowEvent_Close: //Number Function
|
||||
break;
|
||||
case FN_WindowEvent_Maximize: //Number Function
|
||||
break;
|
||||
case FN_WindowEvent_Minimize: //Number Function
|
||||
break;
|
||||
case FN_ActiveWindow: //Number Function
|
||||
break;
|
||||
case FN_FPS: //Number Function
|
||||
break;
|
||||
case FN_SetWindowIcon: //Sub Procedure
|
||||
break;
|
||||
case FN_CanvasOpen: //Sub Procedure
|
||||
break;
|
||||
case FN_CanvasClose: //Sub Procedure
|
||||
break;
|
||||
case FN_SetCanvasVisible: //Sub Procedure
|
||||
break;
|
||||
case FN_CanvasIsVisible: //Number Function
|
||||
break;
|
||||
case FN_SetCanvasViewport: //Sub Procedure
|
||||
break;
|
||||
case FN_GetCanvasViewport: //Sub Procedure
|
||||
break;
|
||||
case FN_Canvas: //Sub Procedure
|
||||
break;
|
||||
case FN_SetCanvasOffset: //Sub Procedure
|
||||
break;
|
||||
case FN_GetCanvasOffset: //Sub Procedure
|
||||
break;
|
||||
case FN_GetCanvasSize: //Sub Procedure
|
||||
break;
|
||||
case FN_ClearCanvas: //Sub Procedure
|
||||
break;
|
||||
case FN_SetCanvasAlpha: //Sub Procedure
|
||||
break;
|
||||
case FN_CanvasAlpha: //Number Function
|
||||
break;
|
||||
case FN_SetCanvasBlendMode: //Number Function
|
||||
break;
|
||||
case FN_CanvasBlendMode: //Number Function
|
||||
break;
|
||||
case FN_SetCanvasColorMod: //Number Function
|
||||
break;
|
||||
case FN_CanvasColorMod: //Number Function
|
||||
break;
|
||||
case FN_CopyCanvas: //Sub Procedure
|
||||
break;
|
||||
case FN_CloneCanvas: //Sub Procedure
|
||||
break;
|
||||
case FN_SetCanvasZ: //Sub Procedure
|
||||
break;
|
||||
case FN_CanvasZ: //Number Function
|
||||
break;
|
||||
case FN_CanvasClip: //Sub Procedure
|
||||
break;
|
||||
case FN_ActiveCanvas: //Number Function
|
||||
break;
|
||||
case FN_Box: //Sub Procedure
|
||||
break;
|
||||
case FN_BoxFill: //Sub Procedure
|
||||
break;
|
||||
case FN_Circle: //Sub Procedure
|
||||
break;
|
||||
case FN_CircleFill: //Sub Procedure
|
||||
break;
|
||||
case FN_Ellipse: //Sub Procedure
|
||||
break;
|
||||
case FN_EllipseFill: //Sub Procedure
|
||||
break;
|
||||
case FN_FloodFill: //Sub Procedure
|
||||
break;
|
||||
case FN_GetPixel: //Number Function
|
||||
break;
|
||||
case FN_SetColor: //Sub Procedure
|
||||
break;
|
||||
case FN_Line: //Sub Procedure
|
||||
break;
|
||||
case FN_Poly: //Sub Procedure
|
||||
break;
|
||||
case FN_PolyFill: //Sub Procedure
|
||||
break;
|
||||
case FN_Rect: //Sub Procedure
|
||||
break;
|
||||
case FN_RectFill: //Sub Procedure
|
||||
break;
|
||||
case FN_RoundRect: //Sub Procedure
|
||||
break;
|
||||
case FN_RoundRectFill: //Sub Procedure
|
||||
break;
|
||||
case FN_RGB: //Number Function
|
||||
break;
|
||||
case FN_RGBA: //Number Function
|
||||
break;
|
||||
case FN_PSet: //Sub Procedure
|
||||
break;
|
||||
case FN_LoadImage: //Sub Procedure
|
||||
break;
|
||||
case FN_LoadImage_Ex: //Sub Procedure
|
||||
break;
|
||||
case FN_ImageFromBuffer: //Sub Procedure
|
||||
break;
|
||||
case FN_ImageFromBuffer_Ex: //Sub Procedure
|
||||
break;
|
||||
case FN_BufferFromImage: //Sub Procedure
|
||||
break;
|
||||
case FN_ImageExists: //Number Function
|
||||
break;
|
||||
case FN_ColorKey: //Sub Procedure
|
||||
break;
|
||||
case FN_CopyImage: //Sub Procedure
|
||||
break;
|
||||
case FN_DeleteImage: //Sub Procedure
|
||||
break;
|
||||
case FN_SetImageAlpha: //Sub Procedure
|
||||
break;
|
||||
case FN_ImageAlpha: //Number Function
|
||||
break;
|
||||
case FN_GetImageSize: //Sub Procedure
|
||||
break;
|
||||
case FN_SetImageBlendMode: //Number Function
|
||||
break;
|
||||
case FN_ImageBlendMode: //Number Function
|
||||
break;
|
||||
case FN_SetImageColorMod: //Number Function
|
||||
break;
|
||||
case FN_ImageColorMod: //Number Function
|
||||
break;
|
||||
case FN_DrawImage: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Blit: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Blit_Ex: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Rotate: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Rotate_Ex: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Zoom: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Zoom_Ex: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Rotozoom: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Rotozoom_Ex: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Flip: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Flip_Ex: //Sub Procedure
|
||||
break;
|
||||
case FN_InKey: //Number Function
|
||||
break;
|
||||
case FN_Key: //Number Function
|
||||
break;
|
||||
case FN_WaitKey: //Number Function
|
||||
break;
|
||||
case FN_HideMouse: //Sub Procedure
|
||||
break;
|
||||
case FN_ShowMouse: //Sub Procedure
|
||||
break;
|
||||
case FN_MouseIsVisible: //Number Function
|
||||
break;
|
||||
case FN_GetMouse: //Sub Procedure
|
||||
break;
|
||||
case FN_MouseX: //Number Function
|
||||
break;
|
||||
case FN_MouseY: //Number Function
|
||||
break;
|
||||
case FN_MouseButton: //Number Function
|
||||
break;
|
||||
case FN_GetMouseWheel: //Sub Procedure
|
||||
break;
|
||||
case FN_MouseWheelX: //Number Function
|
||||
break;
|
||||
case FN_MouseWheelY: //Number Function
|
||||
break;
|
||||
case FN_SoundFromBuffer: //Sub Procedure
|
||||
break;
|
||||
case FN_LoadSound: //Sub Procedure
|
||||
break;
|
||||
case FN_LoadMusic: //Sub Procedure
|
||||
break;
|
||||
case FN_PlaySound: //Sub Procedure
|
||||
break;
|
||||
case FN_PlaySoundTimed: //Sub Procedure
|
||||
break;
|
||||
case FN_PlayMusic: //Sub Procedure
|
||||
break;
|
||||
case FN_PauseSound: //Sub Procedure
|
||||
break;
|
||||
case FN_ResumeSound: //Sub Procedure
|
||||
break;
|
||||
case FN_PauseMusic: //Sub Procedure
|
||||
break;
|
||||
case FN_ResumeMusic: //Sub Procedure
|
||||
break;
|
||||
case FN_DeleteSound: //Sub Procedure
|
||||
break;
|
||||
case FN_DeleteMusic: //Sub Procedure
|
||||
break;
|
||||
case FN_FadeMusicIn: //Sub Procedure
|
||||
break;
|
||||
case FN_FadeMusicOut: //Sub Procedure
|
||||
break;
|
||||
case FN_MusicExists: //Number Function
|
||||
break;
|
||||
case FN_SetMusicVolume: //Sub Procedure
|
||||
break;
|
||||
case FN_MusicVolume: //Number Function
|
||||
break;
|
||||
case FN_SetMusicPosition: //Sub Procedure
|
||||
break;
|
||||
case FN_MusicPosition: //Number Function
|
||||
break;
|
||||
case FN_RewindMusic: //Sub Procedure
|
||||
break;
|
||||
case FN_SetSoundChannels: //Sub Procedure
|
||||
break;
|
||||
case FN_NumSoundChannels: //Number Function
|
||||
break;
|
||||
case FN_SoundIsEnabled: //Number Function
|
||||
break;
|
||||
case FN_SoundExists: //Number Function
|
||||
break;
|
||||
case FN_SetChannelVolume: //Sub Procedure
|
||||
break;
|
||||
case FN_ChannelVolume: //Number Function
|
||||
break;
|
||||
case FN_SetSoundVolume: //Sub Procedure
|
||||
break;
|
||||
case FN_SoundVolume: //Number Function
|
||||
break;
|
||||
case FN_StopMusic: //Sub Procedure
|
||||
break;
|
||||
case FN_StopSound: //Sub Procedure
|
||||
break;
|
||||
case FN_SetChannelPanning: //Number Function
|
||||
break;
|
||||
case FN_SetChannelDistance: //Number Function
|
||||
break;
|
||||
case FN_ChannelIsPlaying: //Number Function
|
||||
break;
|
||||
case FN_ChannelIsPaused: //Number Function
|
||||
break;
|
||||
case FN_NumJoysticks: //Number Function
|
||||
break;
|
||||
case FN_NumJoyAxes: //Number Function
|
||||
break;
|
||||
case FN_NumJoyButtons: //Number Function
|
||||
break;
|
||||
case FN_NumJoyHats: //Number Function
|
||||
break;
|
||||
case FN_NumJoyTrackBalls: //Number Function
|
||||
break;
|
||||
case FN_JoyAxis: //Number Function
|
||||
break;
|
||||
case FN_JoyButton: //Number Function
|
||||
break;
|
||||
case FN_JoyHat: //Number Function
|
||||
break;
|
||||
case FN_GetJoyTrackBall: //Sub Procedure
|
||||
break;
|
||||
case FN_JoyName$: //String Function
|
||||
break;
|
||||
case FN_JoystickIsConnected: //Number Function
|
||||
break;
|
||||
case FN_GetCursor: //Sub Procedure
|
||||
break;
|
||||
case FN_PrintS: //Sub Procedure
|
||||
break;
|
||||
case FN_InputS$: //String Function
|
||||
break;
|
||||
case FN_ZoneInputS$: //String Function
|
||||
break;
|
||||
case FN_Locate: //Sub Procedure
|
||||
break;
|
||||
case FN_ReadInput_Start: //Sub Procedure
|
||||
break;
|
||||
case FN_ReadInput_Stop: //Sub Procedure
|
||||
break;
|
||||
case FN_ReadInput_Text$: //String Function
|
||||
break;
|
||||
case FN_ReadInput_SetText: //Sub Procedure
|
||||
break;
|
||||
case FN_ReadInput_ToggleBackspace: //Sub Procedure
|
||||
break;
|
||||
case FN_LoadFont: //Sub Procedure
|
||||
break;
|
||||
case FN_DeleteFont: //Sub Procedure
|
||||
break;
|
||||
case FN_FontIsLoaded: //Number Function
|
||||
break;
|
||||
case FN_Font: //Sub Procedure
|
||||
break;
|
||||
case FN_SetFontStyle: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawText: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawText_Shaded: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawText_Blended: //Sub Procedure
|
||||
break;
|
||||
case FN_RenderText: //Sub Procedure
|
||||
break;
|
||||
case FN_GetTextSize: //Sub Procedure
|
||||
break;
|
||||
case FN_TouchPressure: //Number Function
|
||||
break;
|
||||
case FN_GetTouch: //Sub Procedure
|
||||
break;
|
||||
case FN_GetMultiTouch: //Sub Procedure
|
||||
break;
|
||||
case FN_GetTouchFinger: //Sub Procedure
|
||||
break;
|
||||
case FN_NumFingers: //Number Function
|
||||
break;
|
||||
case FN_CheckSockets: //Number Function
|
||||
break;
|
||||
case FN_TCP_SocketReady: //Number Function
|
||||
break;
|
||||
case FN_UDP_SocketReady: //Number Function
|
||||
break;
|
||||
case FN_TCP_SocketOpen: //Number Function
|
||||
break;
|
||||
case FN_TCP_SocketClose: //Sub Procedure
|
||||
break;
|
||||
case FN_TCP_RemoteHost: //Number Function
|
||||
break;
|
||||
case FN_TCP_RemotePort: //Number Function
|
||||
break;
|
||||
case FN_TCP_GetData: //Number Function
|
||||
break;
|
||||
case FN_TCP_SendData: //Sub Procedure
|
||||
break;
|
||||
case FN_TCP_AcceptSocket: //Number Function
|
||||
break;
|
||||
case FN_UDP_SocketOpen: //Number Function
|
||||
break;
|
||||
case FN_UDP_SocketClose: //Number Function
|
||||
break;
|
||||
case FN_UDP_GetData: //Number Function
|
||||
break;
|
||||
case FN_UDP_Length: //Number Function
|
||||
break;
|
||||
case FN_UDP_MaxLength: //Number Function
|
||||
break;
|
||||
case FN_UDP_RemoteHost$: //String Function
|
||||
break;
|
||||
case FN_UDP_RemotePort: //Number Function
|
||||
break;
|
||||
case FN_UDP_SendData: //Sub Procedure
|
||||
break;
|
||||
case FN_LoadVideo: //Sub Procedure
|
||||
break;
|
||||
case FN_PlayVideo: //Sub Procedure
|
||||
break;
|
||||
case FN_PauseVideo: //Sub Procedure
|
||||
break;
|
||||
case FN_StopVideo: //Sub Procedure
|
||||
break;
|
||||
case FN_SetVideoPosition: //Sub Procedure
|
||||
break;
|
||||
case FN_ResumeVideo: //Sub Procedure
|
||||
break;
|
||||
case FN_VideoPosition: //Number Function
|
||||
break;
|
||||
case FN_DeleteVideo: //Sub Procedure
|
||||
break;
|
||||
case FN_VideoIsPlaying: //Number Function
|
||||
break;
|
||||
case FN_VideoEnd: //Number Function
|
||||
break;
|
||||
case FN_GetVideoStats: //Sub Procedure
|
||||
break;
|
||||
case FN_SetVideoDrawRect: //Sub Procedure
|
||||
break;
|
||||
case FN_GetVideoDrawRect: //Sub Procedure
|
||||
break;
|
||||
case FN_GetVideoSize: //Sub Procedure
|
||||
break;
|
||||
case FN_VideoExists: //Number Function
|
||||
break;
|
||||
case FN_SetVideoAlpha: //Sub Procedure
|
||||
break;
|
||||
case FN_System: //Number Function
|
||||
break;
|
||||
case FN_OS$: //String Function
|
||||
break;
|
||||
case FN_Command$: //String Function
|
||||
break;
|
||||
case FN_NumCommands: //Number Function
|
||||
break;
|
||||
case FN_Env$: //String Function
|
||||
break;
|
||||
case FN_SetEnv: //Sub Procedure
|
||||
break;
|
||||
case FN_PrefPath$: //String Function
|
||||
break;
|
||||
case FN_Android_GetExternalStoragePath$: //String Function
|
||||
break;
|
||||
case FN_Android_GetExternalStorageState: //Number Function
|
||||
break;
|
||||
case FN_Android_GetInternalStoragePath$: //String Function
|
||||
break;
|
||||
case FN_Android_JNI_Message$: //String Function
|
||||
break;
|
||||
case FN_Runtime_Utility_Message$: //String Function
|
||||
break;
|
||||
case FN_ClipboardText$: //String Function
|
||||
break;
|
||||
case FN_SetClipboardText: //Sub Procedure
|
||||
break;
|
||||
case FN_HasClipboardText: //Number Function
|
||||
break;
|
||||
case FN_GetDesktopDisplayMode: //Sub Procedure
|
||||
break;
|
||||
case FN_DrawImage_Transform: //Sub Procedure
|
||||
break;
|
||||
case FN_GetPowerInfo: //Sub Procedure
|
||||
break;
|
||||
case FN_SystemRam: //Number Function
|
||||
break;
|
||||
case FN_SetRenderScaleQuality: //Number Function
|
||||
break;
|
||||
case FN_EvalJS$: //String Function
|
||||
break;
|
||||
case FN_GetRenderScaleQuality: //Number Function
|
||||
break;
|
||||
case FN_GetGlobalMouse: //Sub Procedure
|
||||
break;
|
||||
case FN_GlobalMouseX: //Number Function
|
||||
break;
|
||||
case FN_GlobalMouseY: //Number Function
|
||||
break;
|
||||
case FN_GetAccel: //Sub Procedure
|
||||
break;
|
||||
case FN_AccelName$: //String Function
|
||||
break;
|
||||
case FN_NumAccels: //Number Function
|
||||
break;
|
||||
case FN_GetGyro: //Sub Procedure
|
||||
break;
|
||||
case FN_GyroName$: //String Function
|
||||
break;
|
||||
case FN_NumGyros: //Number Function
|
||||
break;
|
||||
case FN_JoyRumblePlay: //Sub Procedure
|
||||
break;
|
||||
case FN_JoyRumbleStop: //Sub Procedure
|
||||
break;
|
||||
case FN_JoystickIsHaptic: //Number Function
|
||||
break;
|
||||
case FN_WriteByteBuffer: //Number Function
|
||||
break;
|
||||
case FN_ReadByteBuffer: //Number Function
|
||||
break;
|
||||
case FN_WindowEvent_Resize: //Number Function
|
||||
break;
|
||||
case FN_SetWindowAutoClose: //Sub Procedure
|
||||
break;
|
||||
case FN_SetWindowResizable: //Sub Procedure
|
||||
break;
|
||||
case FN_SystemReturnStdOut$: //String Function
|
||||
break;
|
||||
case FN_WindowMode: //Number Function
|
||||
break;
|
||||
case FN_WindowFlags: //Number Function
|
||||
break;
|
||||
case FN_RestoreWindow: //Sub Procedure
|
||||
break;
|
||||
case FN_UpdateAllWindows: //Sub Procedure
|
||||
break;
|
||||
case FN_QueryAudioSpec: //Number Function
|
||||
break;
|
||||
case FN_MusicIsPlaying: //Number Function
|
||||
break;
|
||||
case FN_DrawGeometry: //Number Function
|
||||
break;
|
||||
case FN_Size: //Number Function
|
||||
break;
|
||||
case FN_BufferFromString: //Number Function
|
||||
break;
|
||||
case FN_StringFromBuffer$: //String Function
|
||||
break;
|
||||
case FN_GrabInput: //Sub Procedure
|
||||
break;
|
||||
case FN_GrabbedWindow: //Number Function
|
||||
break;
|
||||
case FN_WarpMouse: //Sub Procedure
|
||||
break;
|
||||
case FN_WarpMouseGlobal: //Sub Procedure
|
||||
break;
|
||||
case FN_SetMouseZone: //Sub Procedure
|
||||
break;
|
||||
case FN_ClearMouseZone: //Sub Procedure
|
||||
break;
|
||||
case FN_SetWindowAlwaysOnTop: //Sub Procedure
|
||||
break;
|
||||
case FN_SetMouseRelative: //Sub Procedure
|
||||
break;
|
||||
case FN_SetWindowVSync: //Sub Procedure
|
||||
break;
|
||||
case FN_OpenURL: //Number Function
|
||||
break;
|
||||
case FN_APIVersion$: //String Function
|
||||
break;
|
||||
case FN_FlashWindow: //Number Function
|
||||
break;
|
||||
case FN_MessageBox: //Number Function
|
||||
break;
|
||||
case FN_NumberArrayCopy: //Sub Procedure
|
||||
break;
|
||||
case FN_StringArrayCopy: //Sub Procedure
|
||||
break;
|
||||
case FN_ArrayCopy: //Sub Procedure
|
||||
break;
|
||||
case FN_NumberArrayFill: //Sub Procedure
|
||||
break;
|
||||
case FN_StringArrayFill: //Sub Procedure
|
||||
break;
|
||||
case FN_ArrayFill: //Sub Procedure
|
||||
break;
|
||||
case FN_Runtime$: //String Function
|
||||
break;
|
||||
case FN_DimMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_AddMatrix: //Number Function
|
||||
break;
|
||||
case FN_AugmentMatrix: //Number Function
|
||||
break;
|
||||
case FN_CopyMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_InsertMatrixColumns: //Number Function
|
||||
break;
|
||||
case FN_InsertMatrixRows: //Number Function
|
||||
break;
|
||||
case FN_MultiplyMatrix: //Number Function
|
||||
break;
|
||||
case FN_CubeMatrix: //Number Function
|
||||
break;
|
||||
case FN_DeleteMatrixColumns: //Number Function
|
||||
break;
|
||||
case FN_DeleteMatrixRows: //Number Function
|
||||
break;
|
||||
case FN_ClearMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_ClearMatrixColumns: //Number Function
|
||||
break;
|
||||
case FN_ClearMatrixRows: //Number Function
|
||||
break;
|
||||
case FN_FillMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_FillMatrixColumns: //Number Function
|
||||
break;
|
||||
case FN_FillMatrixRows: //Number Function
|
||||
break;
|
||||
case FN_CopyMatrixColumns: //Number Function
|
||||
break;
|
||||
case FN_CopyMatrixRows: //Number Function
|
||||
break;
|
||||
case FN_IdentityMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_SolveMatrix: //Number Function
|
||||
break;
|
||||
case FN_IsEqualMatrix: //Number Function
|
||||
break;
|
||||
case FN_Determinant: //Number Function
|
||||
break;
|
||||
case FN_AdjointMatrix: //Number Function
|
||||
break;
|
||||
case FN_InvertMatrix: //Number Function
|
||||
break;
|
||||
case FN_MatrixFromBuffer: //Sub Procedure
|
||||
break;
|
||||
case FN_GetMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_RandomizeMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_MatrixValue: //Number Function
|
||||
break;
|
||||
case FN_SetMatrixValue: //Sub Procedure
|
||||
break;
|
||||
case FN_ScalarMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_ScalarMatrixColumns: //Number Function
|
||||
break;
|
||||
case FN_ScalarMatrixRows: //Number Function
|
||||
break;
|
||||
case FN_SquareMatrix: //Number Function
|
||||
break;
|
||||
case FN_SubMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_SubtractMatrix: //Number Function
|
||||
break;
|
||||
case FN_SwapMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_SwapMatrixColumn: //Number Function
|
||||
break;
|
||||
case FN_SwapMatrixRow: //Number Function
|
||||
break;
|
||||
case FN_TransposeMatrix: //Number Function
|
||||
break;
|
||||
case FN_UnAugmentMatrix: //Number Function
|
||||
break;
|
||||
case FN_ZeroMatrix: //Sub Procedure
|
||||
break;
|
||||
case FN_GetMatrixSize: //Sub Procedure
|
||||
break;
|
||||
case FN_SetMatrixProcess: //Number Function
|
||||
break;
|
||||
case FN_ProcessOpen: //Number Function
|
||||
break;
|
||||
case FN_SetProcessErrorMode: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessError: //Number Function
|
||||
break;
|
||||
case FN_ProcessWait: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessWaitAll: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessContinue: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessStop: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessClear: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessClose: //Number Function
|
||||
break;
|
||||
case FN_ProcessErrorMode: //Number Function
|
||||
break;
|
||||
case FN_ProcessSleep: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessExists: //Number Function
|
||||
break;
|
||||
case FN_ProcessStopAll: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessContinueAll: //Sub Procedure
|
||||
break;
|
||||
case FN_ProcessQueueSize: //Number Function
|
||||
break;
|
||||
case FN_NumCPUs: //Number Function
|
||||
break;
|
||||
case FN_GetProjectionGeometry: //Sub Procedure
|
||||
break;
|
||||
case FN_CalculateFaceZ: //Number Function
|
||||
break;
|
||||
case FN_SetChannelSpacePosition: //Number Function
|
||||
break;
|
||||
case FN_SaveBMP: //Number Function
|
||||
break;
|
||||
case FN_SavePNG: //Number Function
|
||||
break;
|
||||
case FN_SaveJPG: //Number Function
|
||||
break;
|
||||
case FN_GetLineIntersection: //Number Function
|
||||
break;
|
||||
case FN_Interpolate: //Number Function
|
||||
break;
|
||||
case FN_ATan2: //Number Function
|
||||
break;
|
||||
case FN_PointInQuad: //Number Function
|
||||
break;
|
||||
case FN_PointInTri: //Number Function
|
||||
break;
|
||||
case FN_Distance2D: //Number Function
|
||||
break;
|
||||
case FN_Distance3D: //Number Function
|
||||
break;
|
||||
case FN_GetCircleLineIntersection: //Number Function
|
||||
break;
|
||||
case FN_GetLinePlaneIntersection: //Number Function
|
||||
break;
|
||||
case FN_IncrementMatrixRows: //Sub Procedure
|
||||
break;
|
||||
case FN_IncrementMatrixColumns: //Sub Procedure
|
||||
break;
|
||||
case FN_JoinMatrixRows: //Sub Procedure
|
||||
break;
|
||||
case FN_JoinMatrixColumns: //Sub Procedure
|
||||
break;
|
||||
case FN_TypeArrayDim: //Number Function
|
||||
break;
|
||||
case FN_TypeArraySize: //Number Function
|
||||
break;
|
||||
case FN_TypeArrayCopy: //Sub Procedure
|
||||
break;
|
||||
case FN_TypeArrayFill: //Sub Procedure
|
||||
break;
|
||||
1
rcbasic_build/rcbasic_dev4.txt
Normal file
1
rcbasic_build/rcbasic_dev4.txt
Normal file
@@ -0,0 +1 @@
|
||||
create_type("empty");
|
||||
@@ -114,10 +114,10 @@ OBJ_CURRENT_TYPE
|
||||
|
||||
89 - clear_obj
|
||||
|
||||
90 - dim_type !id raw_number (user_type)
|
||||
91 - dim_type1 !id raw_number (user type) n# (dim1)
|
||||
92 - dim_type2 !id raw_number (user type) n# (dim1) n# (dim2)
|
||||
93 - dim_type3 !id raw_number (user type) n# (dim1) n# (dim2) n# (dim3)
|
||||
90 - dim_type !id !id (user_type)
|
||||
91 - dim_type1 !id !id (user type) n# (dim1)
|
||||
92 - dim_type2 !id !id (user type) n# (dim1) n# (dim2)
|
||||
93 - dim_type3 !id !id (user type) n# (dim1) n# (dim2) n# (dim3)
|
||||
|
||||
94 - dim_num1 !id n# (dim1)
|
||||
95 - dim_num2 !id n# (dim1) n# (dim2)
|
||||
@@ -258,12 +258,12 @@ OBJ_CURRENT_TYPE
|
||||
|
||||
173 - push_t_null
|
||||
|
||||
174 - delete_t !id
|
||||
174 - delete_t !id !id (0 - top level, 1 - member) !id (0 - num, 1 - str, 2 - type)
|
||||
|
||||
175 - dim_type u# raw_number (user_type)
|
||||
176 - dim_type1 u# raw_number (user type) n# (dim1)
|
||||
177 - dim_type2 u# raw_number (user type) n# (dim1) n# (dim2)
|
||||
178 - dim_type3 u# raw_number (user type) n# (dim1) n# (dim2) n# (dim3)
|
||||
175 - dim_type u# !id (user_type)
|
||||
176 - dim_type1 u# !id (user type) n# (dim1)
|
||||
177 - dim_type2 u# !id (user type) n# (dim1) n# (dim2)
|
||||
178 - dim_type3 u# !id (user type) n# (dim1) n# (dim2) n# (dim3)
|
||||
|
||||
179 - dim_tfield raw_number (user_type) raw_number (member_type) raw_number (member_index) raw_number (dimensions) n# (dim1) n# (dim2) n# (dim3)
|
||||
|
||||
@@ -283,3 +283,29 @@ OBJ_CURRENT_TYPE
|
||||
191 - preset_t3 !id raw_number (user_type) n# n# n#
|
||||
|
||||
|
||||
192 - redim_type u# !id (user_type)
|
||||
193 - redim_type1 u# !id (user type) n# (dim1)
|
||||
194 - redim_type2 u# !id (user type) n# (dim1) n# (dim2)
|
||||
195 - redim_type3 u# !id (user type) n# (dim1) n# (dim2) n# (dim3)
|
||||
|
||||
|
||||
196 - redim_type_n !id
|
||||
197 - redim_type_n1 !id n# (dim1)
|
||||
198 - redim_type_n2 !id n# (dim1) n# (dim2)
|
||||
199 - redim_type_n3 !id n# (dim1) n# (dim2) n# (dim3)
|
||||
|
||||
|
||||
200 - redim_type_s !id
|
||||
201 - redim_type_s1 !id n# (dim1)
|
||||
202 - redim_type_s2 !id n# (dim1) n# (dim2)
|
||||
203 - redim_type_s3 !id n# (dim1) n# (dim2) n# (dim3)
|
||||
|
||||
|
||||
204 - redim_type !id !id (user_type)
|
||||
205 - redim_type1 !id !id (user type) n# (dim1)
|
||||
206 - redim_type2 !id !id (user type) n# (dim1) n# (dim2)
|
||||
207 - redim_type3 !id !id (user type) n# (dim1) n# (dim2) n# (dim3)
|
||||
|
||||
208 - redim_top
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1415,3 +1415,14 @@
|
||||
#define JOINMATRIXCOLUMNS_MA num_var[0].nid_value.value[ num_var[0].byref_offset ]
|
||||
#define JOINMATRIXCOLUMNS_MB num_var[1].nid_value.value[ num_var[1].byref_offset ]
|
||||
#define JOINMATRIXCOLUMNS_MC num_var[2].nid_value.value[ num_var[2].byref_offset ]
|
||||
#define FN_TypeArrayDim 471
|
||||
#define TYPEARRAYDIM_ID usr_var[0].var_ref
|
||||
#define FN_TypeArraySize 472
|
||||
#define TYPEARRAYSIZE_ID usr_var[0].var_ref
|
||||
#define TYPEARRAYSIZE_ARRAY_DIM num_var[0].nid_value.value[ num_var[0].byref_offset ]
|
||||
#define FN_TypeArrayCopy 473
|
||||
#define TYPEARRAYCOPY_SRC usr_var[0].var_ref
|
||||
#define TYPEARRAYCOPY_DST usr_var[1].var_ref
|
||||
#define FN_TypeArrayFill 474
|
||||
#define TYPEARRAYFILL_SRC usr_var[0].var_ref
|
||||
#define TYPEARRAYFILL_FDATA usr_var[1].var_ref->uid_value[0]
|
||||
|
||||
Reference in New Issue
Block a user