ArrayDim now works with type members

This commit is contained in:
n00b87
2024-04-22 17:26:52 -05:00
parent a84cceb938
commit 53c3ce4483
7 changed files with 3883 additions and 168 deletions

View File

@@ -514,3 +514,10 @@ 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
function TypeArrayDim(Byref id$)
function TypeArraySize(Byref id, array_dim)
sub TypeArrayCopy(ByRef src, ByRef dst)
sub TypeArrayFill(ByRef src, fdata)

View File

@@ -599,11 +599,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]);
@@ -998,7 +998,7 @@ int main(int argc, char * argv[])
{
string line = "";
//rcbasic_dev("embedded_functions.bas"); return 0;
rcbasic_dev("embedded_functions.bas"); return 0;
string rc_filename = "";// = "tst.bas";

View File

@@ -1961,155 +1961,7 @@ bool pre_parse(int start_token = 0, int end_token = -1, int pp_flags, bool eval_
int resolve_id2 = -1;
int arg_index = -1;
if(StringToLower(id[expr_id].name).compare("arraydim")==0)
{
//cout << "HERES JOHNNY" << endl;
resolve_index = getResolveReg(args[0]);
if(resolve_index < 0)
{
rc_setError("Expected Identifier in ArrayDim argument: " + args[0]);
return false;
}
switch(resolveID_id_type[resolve_index])
{
case ID_TYPE_ARR_NUM:
case ID_TYPE_BYREF_NUM:
case ID_TYPE_NUM:
expr_id = getIDInScope_ByIndex("NumberArrayDim");
break;
case ID_TYPE_ARR_STR:
case ID_TYPE_BYREF_STR:
case ID_TYPE_STR:
expr_id = getIDInScope_ByIndex("StringArrayDim");
break;
}
if(expr_id < 0)
{
rc_setError("ArrayDim Syntax Error");
return false;
}
}
else if(StringToLower(id[expr_id].name).compare("arraysize")==0)
{
//cout << "HERES JOHNNY" << endl;
resolve_index = getResolveReg(args[0]);
if(resolve_index < 0)
{
rc_setError("Expected Identifier in ArraySize argument: " +args[0]);
return false;
}
switch(resolveID_id_type[resolve_index])
{
case ID_TYPE_ARR_NUM:
case ID_TYPE_BYREF_NUM:
case ID_TYPE_NUM:
expr_id = getIDInScope_ByIndex("NumberArraySize");
break;
case ID_TYPE_ARR_STR:
case ID_TYPE_BYREF_STR:
case ID_TYPE_STR:
expr_id = getIDInScope_ByIndex("StringArraySize");
break;
}
if(expr_id < 0)
{
rc_setError("ArraySize Syntax Error");
return false;
}
}
else if(StringToLower(id[expr_id].name).compare("arraycopy")==0)
{
//cout << "HERES JOHNNY" << endl;
if(num_args != 2)
{
rc_setError("ArrayCopy expects 2 arguments");
return false;
}
resolve_index = getResolveReg(args[0]);
resolve_index2 = getResolveReg(args[1]);
if(resolve_index < 0 || resolve_index2 < 0)
{
rc_setError("Expected Identifier in ArrayCopy argument: " +args[0]);
return false;
}
resolve_id = resolveID_id_vec_pos[resolve_index];
resolve_id2 = resolveID_id_vec_pos[resolve_index2];
switch(resolveID_id_type[resolve_index])
{
case ID_TYPE_ARR_NUM:
case ID_TYPE_BYREF_NUM:
case ID_TYPE_NUM:
expr_id = getIDInScope_ByIndex("NumberArrayCopy");
if(resolveID_id_type[resolve_index2] != ID_TYPE_ARR_NUM &&
resolveID_id_type[resolve_index2] != ID_TYPE_BYREF_NUM &&
resolveID_id_type[resolve_index2] != ID_TYPE_NUM)
{
rc_setError("ArrayCopy argument types don't match");
return false;
}
if(id[resolve_id].num_args != id[resolve_id2].num_args)
{
rc_setError("ArrayCopy dimensions don't match");
return false;
}
break;
case ID_TYPE_ARR_STR:
case ID_TYPE_BYREF_STR:
case ID_TYPE_STR:
expr_id = getIDInScope_ByIndex("StringArrayCopy");
if(resolveID_id_type[resolve_index2] != ID_TYPE_ARR_STR &&
resolveID_id_type[resolve_index2] != ID_TYPE_BYREF_STR &&
resolveID_id_type[resolve_index2] != ID_TYPE_STR)
{
rc_setError("ArrayCopy argument types don't match");
return false;
}
if(id[resolve_id].num_args != id[resolve_id2].num_args)
{
rc_setError("ArrayCopy dimensions don't match");
return false;
}
break;
}
if(expr_id < 0)
{
rc_setError("ArrayCopy Syntax Error");
return false;
}
}
else if(StringToLower(id[expr_id].name).compare("arrayfill")==0)
{
//cout << "HERES JOHNNY" << endl;
resolve_index = getResolveReg(args[0]);
if(resolve_index < 0)
{
rc_setError("Expected Identifier in ArrayFill argument: " + args[0]);
return false;
}
switch(resolveID_id_type[resolve_index])
{
case ID_TYPE_ARR_NUM:
case ID_TYPE_BYREF_NUM:
case ID_TYPE_NUM:
expr_id = getIDInScope_ByIndex("NumberArrayFill");
break;
case ID_TYPE_ARR_STR:
case ID_TYPE_BYREF_STR:
case ID_TYPE_STR:
expr_id = getIDInScope_ByIndex("StringArrayFill");
break;
}
if(expr_id < 0)
{
rc_setError("ArrayFill Syntax Error");
return false;
}
}
bool local_state_is_pushed = false; //this variable checks will be set to true if the following function call is recursive
if(block_state.size() > 0)
@@ -2232,13 +2084,48 @@ bool pre_parse(int start_token = 0, int end_token = -1, int pp_flags, bool eval_
return false;
}*/
//Array Functions
string tmp_fn_name = StringToLower(id[expr_id].name);
if(tmp_fn_name.compare("arraydim")==0)
{
int tmp_id_type = -1;
if(args[n].substr(0,4).compare("<id>")==0)
{
int tmp_id = getIDInScope_ByIndex(args[n].substr(4));
if(tmp_id >= 0)
tmp_id_type = id[tmp_id].type;
}
if(args[n].substr(0,1).compare("n")==0 || tmp_id_type == ID_TYPE_NUM || tmp_id_type == ID_TYPE_ARR_NUM || tmp_id_type == ID_TYPE_BYREF_NUM)
expr_id = getIDInScope_ByIndex("numberarraydim");
else if(args[n].substr(0,1).compare("s")==0 || tmp_id_type == ID_TYPE_STR || tmp_id_type == ID_TYPE_ARR_STR || tmp_id_type == ID_TYPE_BYREF_STR)
expr_id = getIDInScope_ByIndex("stringarraydim");
else if(args[n].substr(0,1).compare("u")==0)
expr_id = getIDInScope_ByIndex("typearraydim");
else
{
rc_setError("Expected valid array identifier: " + args[n]);
expr_id = -1;
}
if(expr_id < 0)
{
rc_setError("ArrayDim macro function does not exists for variable type");
return false;
}
}
//--------------------------------
if(type_exception_found)
switch(id[expr_id].fn_arg_type[n])
{
case ID_TYPE_BYREF_NUM:
if(args[n].substr(0,1).compare("n")!=0)
{
rc_setError("Expected number identifier for argument");
rc_setError("Expected number identifier for argument in " + id[expr_id].name);
return false;
}
vm_asm.push_back("ptr !" + rc_intToString(id[expr_id].fn_arg_vec[n]) + " " + args[n]);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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;