Thread: [Smipl-devel] SF.net SVN: smipl:[37] smipl-devel/src
Brought to you by:
the_student
From: <the...@us...> - 2009-08-10 14:52:58
|
Revision: 37 http://smipl.svn.sourceforge.net/smipl/?rev=37&view=rev Author: the_student Date: 2009-08-10 14:52:48 +0000 (Mon, 10 Aug 2009) Log Message: ----------- Removed non-standard stricmps Modified Paths: -------------- smipl-devel/src/Console.h smipl-devel/src/SMIPL-header.h smipl-devel/src/SMIPL.cpp smipl-devel/src/SVM.h Modified: smipl-devel/src/Console.h =================================================================== --- smipl-devel/src/Console.h 2009-08-10 11:55:00 UTC (rev 36) +++ smipl-devel/src/Console.h 2009-08-10 14:52:48 UTC (rev 37) @@ -1,4 +1,4 @@ -#define cmd_is(c) !stricmp(command.argv[0],c) +#define cmd_is(c) !strcasecmp(command.argv[0],c) bool using_script=false, using_library=false; IFileStream *library_file, *script_file; @@ -51,14 +51,12 @@ delete[]str2; str2=strdup(str, "_START"); MDS_Set(str2, Lib_start); - if(!stricmp(command.argv[1], "START")) { - for(int a=0;a<=10000;a++) { - cout<<a<<" "; - if(library_file->getline(Program[a], 80)==0) {strcpy(Program[a], "PROGRAM END");break;} - if(!stricmp(Program[a], "PROGRAM END")) break; - } - VM0.Run(&Lib_start); + for(int a=0;a<=10000;a++) { + cout<<a<<" "; + if(library_file->getline(Program[a], 80)==0) {strcpy(Program[a], "PROGRAM END");break;} + if(!stricmp(Program[a], "PROGRAM END")) break; } + VM0.Run(&Lib_start); delete[]str2; delete library_file; continue; @@ -97,8 +95,8 @@ } if(isdigit(command.argv[0][0])) { if(command.argc==1) { - lib_start=atof(command.argv[0]); - for(int a=lib_start;a<=10000;a++) { + Lib_start=(int)atof(command.argv[0]); + for(int a=Lib_start;a<=10000;a++) { cout<<a<<" "; getstr(Program[a], 80); if(!stricmp(Program[a], "PROGRAM END")) break; Modified: smipl-devel/src/SMIPL-header.h =================================================================== --- smipl-devel/src/SMIPL-header.h 2009-08-10 11:55:00 UTC (rev 36) +++ smipl-devel/src/SMIPL-header.h 2009-08-10 14:52:48 UTC (rev 37) @@ -1,8 +1,8 @@ //C libraries -#include <cstdio> -#include <cstdlib> -#include <cstring> -#include <cmath> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> //IO streams #include <iostream> #include <fstream> Modified: smipl-devel/src/SMIPL.cpp =================================================================== --- smipl-devel/src/SMIPL.cpp 2009-08-10 11:55:00 UTC (rev 36) +++ smipl-devel/src/SMIPL.cpp 2009-08-10 14:52:48 UTC (rev 37) @@ -2,7 +2,7 @@ int main(int argc, char **argv) { cout<<"Setting up version globals"<<endl; MDS_Create("/Global/smipl.version.major",3); - MDS_Create("/Global/smipl.version.minor",0); + MDS_Create("/Global/smipl.version.minor",50); MDS_Create("/Global/smipl.version.patch",0); cout<<"Running init"<<endl; if(!Init(argc, argv)) {cerr<<"Init error:"<<GetLastSysError()<<endl;for(;;);} Modified: smipl-devel/src/SVM.h =================================================================== --- smipl-devel/src/SVM.h 2009-08-10 11:55:00 UTC (rev 36) +++ smipl-devel/src/SVM.h 2009-08-10 14:52:48 UTC (rev 37) @@ -70,14 +70,14 @@ while(1) { strcpy(cmd.str,Program[Address]); cmd.Split(); - if(!stricmp(cmd.argv[0],"STOP")) break; - if(!stricmp(cmd.str,"PROGRAM END")) break; - if(!stricmp(cmd.argv[0],"GOTO")) if(cmd.argc>=2) {Atof(cmd.argv[1],&number);Address=number-1;} - if(!stricmp(cmd.argv[0],"SET")) for(int a=1;a<cmd.argc;a+=2) {Atof(cmd.argv[a+1],&number);MDS_Set(cmd.argv[a], number);} - if(!stricmp(cmd.argv[0],"ADD")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number+=number2;}MDS_Set(cmd.argv[1], number);} - if(!stricmp(cmd.argv[0],"SUBRACT")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number-=number2;}MDS_Set(cmd.argv[1], number);} - if(!stricmp(cmd.argv[0],"MULTIPLY")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number*=number2;}MDS_Set(cmd.argv[1], number);} - if(!stricmp(cmd.argv[0],"DIVIDE")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number/=number2;}MDS_Set(cmd.argv[1], number);} + if(!strcasecmp(cmd.argv[0],"STOP")) break; + if(!strcasecmp(cmd.str,"PROGRAM END")) break; + if(!strcasecmp(cmd.argv[0],"GOTO")) if(cmd.argc>=2) {Atof(cmd.argv[1],&number);Address=number-1;} + if(!strcasecmp(cmd.argv[0],"SET")) for(int a=1;a<cmd.argc;a+=2) {Atof(cmd.argv[a+1],&number);MDS_Set(cmd.argv[a], number);} + if(!strcasecmp(cmd.argv[0],"ADD")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number+=number2;}MDS_Set(cmd.argv[1], number);} + if(!strcasecmp(cmd.argv[0],"SUBRACT")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number-=number2;}MDS_Set(cmd.argv[1], number);} + if(!strcasecmp(cmd.argv[0],"MULTIPLY")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number*=number2;}MDS_Set(cmd.argv[1], number);} + if(!strcasecmp(cmd.argv[0],"DIVIDE")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number/=number2;}MDS_Set(cmd.argv[1], number);} Address++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2009-08-15 20:27:57
|
Revision: 40 http://smipl.svn.sourceforge.net/smipl/?rev=40&view=rev Author: the_student Date: 2009-08-15 20:27:45 +0000 (Sat, 15 Aug 2009) Log Message: ----------- * Fixed bug in strdup(char*,char*) * Fixed bug PrintFile * Fixed Console not Splashing Modified Paths: -------------- smipl-devel/src/Console.h smipl-devel/src/FS/FS.h smipl-devel/src/String.h Modified: smipl-devel/src/Console.h =================================================================== --- smipl-devel/src/Console.h 2009-08-15 19:37:23 UTC (rev 39) +++ smipl-devel/src/Console.h 2009-08-15 20:27:45 UTC (rev 40) @@ -9,6 +9,7 @@ SMIPL_String cmd; int Lib_start; char *str, *str2; + PrintFile("/Console/Splash"); for(;;) { for(int a=0;a<=10;a++) strcpy(cmd.argv[0], ""); cout<<"? "; Modified: smipl-devel/src/FS/FS.h =================================================================== --- smipl-devel/src/FS/FS.h 2009-08-15 19:37:23 UTC (rev 39) +++ smipl-devel/src/FS/FS.h 2009-08-15 20:27:45 UTC (rev 40) @@ -40,18 +40,11 @@ char* str; if(PHYSFS_exists(FileName)) { if(!PHYSFS_isDirectory(FileName)) { - IFileStream *thefile=new IFileStream(FileName); - str=new char[80]; - int c=0; - while(!thefile->eof()){ - thefile->getline(str, 80); - cout<<str; - c++; - if(c==24) {cin.get();sys_clearscreen();c=0;} - } - cout<<endl<<endl; - delete[]str; - delete thefile; + sys_clearscreen(); + PHYSFS_file *thefile=PHYSFS_openRead(FileName); + str=new char[PHYSFS_fileLength(thefile)/sizeof(char)]; + PHYSFS_read (thefile, str, 1, PHYSFS_fileLength(thefile)); + delete[]str; } } else cout<<"\""<<FileName<<"\": not found"<<endl; Modified: smipl-devel/src/String.h =================================================================== --- smipl-devel/src/String.h 2009-08-15 19:37:23 UTC (rev 39) +++ smipl-devel/src/String.h 2009-08-15 20:27:45 UTC (rev 40) @@ -3,7 +3,7 @@ char *strdup(char *a, char* b) { char* str=new char[strlen(a)+strlen(b)]; strcpy(str,a); - strcat(str,a); + strcat(str,b); return str; } bool isDelim(char a, bool disallow_spaces=true, bool disallow_comparison=true) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2009-08-22 11:31:12
|
Revision: 42 http://smipl.svn.sourceforge.net/smipl/?rev=42&view=rev Author: the_student Date: 2009-08-22 11:30:57 +0000 (Sat, 22 Aug 2009) Log Message: ----------- * Added Scheduler * Added ModuleSystem * Some bugs fixed Modified Paths: -------------- smipl-devel/src/Console.h smipl-devel/src/Init.h smipl-devel/src/MDS.h smipl-devel/src/SIA/SIA.h smipl-devel/src/SIA/SIASOUND.h smipl-devel/src/SMIPL-header.h smipl-devel/src/SVM.h Added Paths: ----------- smipl-devel/src/ModuleSystem/ smipl-devel/src/ModuleSystem/modload.cpp smipl-devel/src/Scheduler.h smipl-devel/src/log.h Modified: smipl-devel/src/Console.h =================================================================== --- smipl-devel/src/Console.h 2009-08-16 19:29:42 UTC (rev 41) +++ smipl-devel/src/Console.h 2009-08-22 11:30:57 UTC (rev 42) @@ -21,7 +21,7 @@ if(cmd_is("")) continue; if(cmd_is("QUIT")) break; if(cmd_is("EXIT")) break; - if(cmd_is("DUMP")) {DumpStack();cout<<endl;DumpMDS();continue;} + if(cmd_is("DUMP")) {DumpStack();cout<<endl;DumpMDS();cout<<endl;DumpSearchPath();cout<<endl;DumpRoot();continue;} if(cmd_is("CATALOG")) { if(cmd.argc==1) Catalog("/"); if(cmd.argc>=2) for(a=1;a<cmd.argc;a++) Catalog(cmd.argv[a]); @@ -32,7 +32,9 @@ for(a=0;a<=10000;a++) { cout<<a<<" "; getstr(Program[a], 80); - if(!stricmp(Program[a], "PROGRAM END")) break; + strcpy(cmd.str,Program[a]); + cmd.Split(); + if((!stricmp(cmd.argv[0],"PROGRAM"))&&(stricmp(cmd.argv[0], "END"))) break; } } continue; @@ -54,9 +56,10 @@ str2=strdup(str, "_START"); MDS_Set(str2, Lib_start); for(a=0;a<=10000;a++) { - cout<<a<<" "; if(library_file->getline(Program[a], 80)==0) {strcpy(Program[a], "PROGRAM END");break;} - if(!stricmp(Program[a], "PROGRAM END")) break; + strcpy(cmd.str,Program[a]); + cmd.Split(); + if((!stricmp(cmd.argv[0],"PROGRAM"))&&(stricmp(cmd.argv[0], "END"))) break; } VM0.Run(&Lib_start); delete[]str2; @@ -111,7 +114,10 @@ a=0; do{ *the_file<<Program[a]<<endl; - }while(strcasecmp(Program[a++], "PROGRAM END")); + strcpy(cmd.str,Program[a]); + cmd.Split(); + a++; + }while((strcasecmp(cmd.argv[0], "PROGRAM"))||(strcasecmp(cmd.argv[0], "END"))); cout<<"OK"<<endl; delete[]str; delete the_file; @@ -132,7 +138,10 @@ a=0; do{ the_file->getline(Program[a], 80); - }while(strcmp(Program[a++], "PROGRAM END")); + strcpy(cmd.str,Program[a]); + cmd.Split(); + a++; + }while((strcasecmp(cmd.argv[0], "PROGRAM"))||(strcasecmp(cmd.argv[0], "END"))); cout<<"OK"<<endl; } else cout<<"FAIL"<<endl; Modified: smipl-devel/src/Init.h =================================================================== --- smipl-devel/src/Init.h 2009-08-16 19:29:42 UTC (rev 41) +++ smipl-devel/src/Init.h 2009-08-22 11:30:57 UTC (rev 42) @@ -1,53 +1,54 @@ +void LateInit(void*) { + MDS_Set("/Global/com.smipl.version.major", 3); + MDS_Set("/Global/com.smipl.version.minor", 50); + MDS_Set("/Global/com.smipl.version.patchlevel", 0); + MDS_Set("/Global/com.smipl.mds.version.major", 2); + MDS_Set("/Global/com.smipl.mds.version.minor", 0); + MDS_Set("/Global/com.smipl.mds.version.patchlevel", 0); + MDS_Set("/Global/com.smipl.sia.version.major", 2); + MDS_Set("/Global/com.smipl.sia.version.minor", 0); + MDS_Set("/Global/com.smipl.sia.version.patchlevel", 0); + MDS_Set("/Global/com.smipl.siasound.version.major", 2); + MDS_Set("/Global/com.smipl.siasound.version.minor", 0); + MDS_Set("/Global/com.smipl.siasound.version.patchlevel", 0); + MDS_Set("/Global/com.smipl.fs.version.major", 2); + MDS_Set("/Global/com.smipl.fs.version.minor", 0); + MDS_Set("/Global/com.smipl.fs.version.patchlevel", 0); + MDS_Set("/Global/compiler.isGCC", false); + #ifdef __GNUC__ + MDS_Set("/Global/compiler.isGCC", true); + MDS_Set("/Global/compiler.version.major", __GNUC__); + MDS_Set("/Global/compiler.version.minor", __GNUC_MINOR__); + MDS_Set("/Global/compiler.version.patchlevel",__GNUC_PATCHLEVEL__); + #endif + MDS_Set("/Global/com.smipl.sia.sound.midi.enable",false); + MDS_Set("/Global/com.smipl.sia.sound.midi.inited",false); + #ifdef EnableMIDI + MDS_Set("/Global/com.smipl.sia.sound.midi.enable",true); + #endif + #ifdef AutoInitMIDI + MIDI_Init(); + #endif +} bool Init(int argc, char **argv) { try{ - SetLastSysError(""); - strcpy(Program[0],"PROGRAM END"); - VM0.isVM0=true; - VM0.JailAddress=strdup("/VM0/"); - cout<<"Initializing PhysicsFS"<<endl; - if(!PHYSFS_init(argv[0])) {SetLastSysError((char*)PHYSFS_getLastError());return false;} - cout<<"Initializing FileSystem Structure"<<endl; - if(!FS_init())return false; - - cout<<"Initializing version globals"<<endl; - MDS_Set("/Global/com.smipl.version.major", 3); - MDS_Set("/Global/com.smipl.version.minor", 50); - MDS_Set("/Global/com.smipl.version.patchlevel", 0); - MDS_Set("/Global/com.smipl.mds.version.major", 2); - MDS_Set("/Global/com.smipl.mds.version.minor", 0); - MDS_Set("/Global/com.smipl.mds.version.patchlevel", 0); - MDS_Set("/Global/com.smipl.sia.version.major", 2); - MDS_Set("/Global/com.smipl.sia.version.minor", 0); - MDS_Set("/Global/com.smipl.sia.version.patchlevel", 0); - MDS_Set("/Global/com.smipl.siasound.version.major", 2); - MDS_Set("/Global/com.smipl.siasound.version.minor", 0); - MDS_Set("/Global/com.smipl.siasound.version.patchlevel", 0); - MDS_Set("/Global/com.smipl.fs.version.major", 2); - MDS_Set("/Global/com.smipl.fs.version.minor", 0); - MDS_Set("/Global/com.smipl.fs.version.patchlevel", 0); - - cout<<"Initializing compile-time globals"<<endl; - MDS_Set("/Global/compiler.isGCC", false); - #ifdef __GNUC__ - MDS_Set("/Global/compiler.isGCC", true); - MDS_Set("/Global/compiler.version.major", __GNUC__); - MDS_Set("/Global/compiler.version.minor", __GNUC_MINOR__); - MDS_Set("/Global/compiler.version.patchlevel",__GNUC_PATCHLEVEL__); - #endif - - cout<<"Initing SIASOUND"<<endl; - MDS_Set("/Global/com.smipl.sia.sound.midi.enable",false); - MDS_Set("/Global/com.smipl.sia.sound.midi.inited",false); - #ifdef EnableMIDI - MDS_Set("/Global/com.smipl.sia.sound.midi.enable",true); - #endif - #ifdef AutoInitMIDI - MIDI_Init(); - #endif - } + SetLastSysError(""); + strcpy(Program[0],"PROGRAM END"); + VM0.isVM0=true; + VM0.JailAddress=strdup("/VM0/"); + cout<<"Initializing PhysicsFS"<<endl; + if(!PHYSFS_init(argv[0])) {SetLastSysError((char*)PHYSFS_getLastError());return false;} + cout<<"Initializing FileSystem Structure"<<endl; + if(!FS_init())return false; + #ifndef SMIPL_TaskScheduler + LateInit(NULL); + #else + AddTask(LateInit, NULL, 0); + pthread_create(&Scheduler_task, NULL, Scheduler, NULL); + #endif + } catch(...) {SetLastSysError("EXCEPTION");return false;} - - return true; + return true; } bool DeInit() { if(!PHYSFS_deinit()){SetLastSysError((char*)PHYSFS_getLastError());return false;} Modified: smipl-devel/src/MDS.h =================================================================== --- smipl-devel/src/MDS.h 2009-08-16 19:29:42 UTC (rev 41) +++ smipl-devel/src/MDS.h 2009-08-22 11:30:57 UTC (rev 42) @@ -57,7 +57,7 @@ cout<<"DUMPING MDS..."<<endl; MDS_Piece *current=MDS_0.Next; while(current!=NULL) { - cout<<"\""<<current->Name<<"\":"<<current->Value<<endl; + cout<<"\""<<current->Name<<"\" = "<<current->Value<<endl; current=current->Next; } pthread_mutex_unlock(&MDS); Added: smipl-devel/src/ModuleSystem/modload.cpp =================================================================== --- smipl-devel/src/ModuleSystem/modload.cpp (rev 0) +++ smipl-devel/src/ModuleSystem/modload.cpp 2009-08-22 11:30:57 UTC (rev 42) @@ -0,0 +1,24 @@ +#ifdef system_is_ms_windows +void GetAddress(void* Module, char* funcname, void *func) { + func=(void*)GetProcAddress((HMODULE)Module, (LPSTR)funcname); +} +void OpenModule(char *fn) { + char str[255], str2[255]; + sprintf(str, "/Library/%s/Address"); + sprintf(str2, "%s.dll",fn); + MDS_Set(str, *(value_t*)LoadLibrary(str2)); +} +#endif + +#ifdef system_is_posix +#include <dlfcn.h> +void GetAddress(void* Module, char* funcname, void *func) + *func=(void)*dlsym(handle, funcname); +} +void OpenModule(char*fn) { + char str[255], str2[255]; + sprintf(str, "/Library/%s/Address"); + sprintf(str2, "%s.so",fn); + MDS_Set(str, (double)*dlopen(fn, RTLD_LAZY)); +} +#endif Modified: smipl-devel/src/SIA/SIA.h =================================================================== --- smipl-devel/src/SIA/SIA.h 2009-08-16 19:29:42 UTC (rev 41) +++ smipl-devel/src/SIA/SIA.h 2009-08-22 11:30:57 UTC (rev 42) @@ -4,6 +4,7 @@ void sys_sleep(int time) {usleep(time);} void sys_clearscreen(){system("clear");} #endif + #ifdef system_is_ms_windows #include <windows.h> void sys_sleep(int time) {Sleep(time);} Modified: smipl-devel/src/SIA/SIASOUND.h =================================================================== --- smipl-devel/src/SIA/SIASOUND.h 2009-08-16 19:29:42 UTC (rev 41) +++ smipl-devel/src/SIA/SIASOUND.h 2009-08-22 11:30:57 UTC (rev 42) @@ -26,7 +26,7 @@ void MIDI_Init() { pthread_mutex_lock(&SIA_SOUND); if (midiOutOpen(&MIDI_Out, 0, 0, 0, CALLBACK_NULL) != MMSYSERR_NOERROR) { - printf("Error opening MIDI Output.\n"); + LogWrite("SIASOUND","Error opening MIDI Output"); goto end; } MIDI_OUT_INITED=true; @@ -38,7 +38,7 @@ pthread_mutex_lock(&SIA_SOUND); if(MIDI_OUT_INITED) { if(midiOutShortMsg(MIDI_Out, Melding.word) != MMSYSERR_NOERROR) { - cout<<"MIDI ERROR"<<endl; + LogWrite("SIASOUND", "MIDI ERROR"); } } pthread_mutex_unlock(&SIA_SOUND); Modified: smipl-devel/src/SMIPL-header.h =================================================================== --- smipl-devel/src/SMIPL-header.h 2009-08-16 19:29:42 UTC (rev 41) +++ smipl-devel/src/SMIPL-header.h 2009-08-22 11:30:57 UTC (rev 42) @@ -1,8 +1,8 @@ //C libraries -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> +#include <cstdio> +#include <cstdlib> +#include <cstring> +#include <cmath> //IO streams #include <iostream> #include <fstream> @@ -11,19 +11,29 @@ #include <pthread.h> #include <physfs.h> #include "FS/physfs_stream.cpp" -//SMIPL Core systems + +//SMIPL #define cmd_is(c) !strcasecmp(cmd.argv[0],c) bool Init(int,char**); bool DeInit(); + +//SMIPL Basic Services #include "Config.h" #include "String.h" +#include "Log.h" +#include "Scheduler.h" +#include "Error.h" +#include "FS/FS.h" #include "MDS.h" + +//SMIPL Extended Services #include "SIA/SIA.h" #include "SIA/SIASOUND.h" -#include "Error.h" -#include "FS/FS.h" //SMIPL UI #include "SVM.h" #include "Console.h" + +//SMIPL ModuleLoading +#include "ModuleSystem/modload.cpp" //SMIPL Init #include "Init.h" Modified: smipl-devel/src/SVM.h =================================================================== --- smipl-devel/src/SVM.h 2009-08-16 19:29:42 UTC (rev 41) +++ smipl-devel/src/SVM.h 2009-08-22 11:30:57 UTC (rev 42) @@ -88,7 +88,7 @@ if(cmd_is("NEWLINE")){cout<<endl;continue;} //MIDI if(cmd_is("MIDI")) { - if(!MIDI_OUT_INITED){MIDI_Init();if(!MIDI_OUT_INITED) cout<<"MIDI FAILURE\n";} + if(!MIDI_OUT_INITED){MIDI_Init();if(!MIDI_OUT_INITED) LogWrite("SVM","Unable to initialize MIDI");} MIDI_Melding.data[0] = 0x90; // MIDI note-on message (requires to data bytes) MIDI_Melding.data[1] = 60; // MIDI note-on message: Key number (60 = middle C) MIDI_Melding.data[2] = 100; // MIDI note-on message: Key velocity (100 = loud) @@ -108,6 +108,6 @@ continue; } cout<<"Unknown "<<cmd.argv[0]<<endl; - break; + break; } } Added: smipl-devel/src/Scheduler.h =================================================================== --- smipl-devel/src/Scheduler.h (rev 0) +++ smipl-devel/src/Scheduler.h 2009-08-22 11:30:57 UTC (rev 42) @@ -0,0 +1,50 @@ +pthread_t Scheduler_task; +struct Task{ + void (*func)(void*); + void*arg; + clock_t scheduled_at; + Task* Next; + Task() {scheduled_at=0;Next=NULL;arg=NULL;} + Task(void (func)(void*), void* arg, clock_t at) { + this->func=func; + scheduled_at=at; + this->arg=arg; + Next=NULL; + } +}Task_0; +Task *LastTask() { + Task *Current=&Task_0; + while(Current->Next!=NULL) Current=Current->Next; + return Current; +} +void AddTask(void (*func)(void*), void *args, clock_t scheduled_in) { + LastTask()->Next=new Task(func, args, scheduled_in+clock()); +} +void RemoveTask(Task* removethis) { + Task *Current=&Task_0, *Previous=&Task_0; + while(Current!=removethis) { + Previous=Current; + Current=Current->Next; + } + Previous->Next=Current->Next; + delete Current; +} +void* Scheduler(void*) { + clock_t current_clock; + for(;;) { + current_clock=clock(); + Task* Current=&Task_0; + while(1) { + Task*Next=Current->Next; + if(Current!=&Task_0) { + if(Current->scheduled_at<=current_clock) { + Current->func(Current->arg); + RemoveTask(Current); + } + + } + if(Next!=NULL) Current=Next; + else break; + } + } +} Added: smipl-devel/src/log.h =================================================================== --- smipl-devel/src/log.h (rev 0) +++ smipl-devel/src/log.h 2009-08-22 11:30:57 UTC (rev 42) @@ -0,0 +1 @@ +void LogWrite(char*,char*){ }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2009-08-22 14:20:24
|
Revision: 43 http://smipl.svn.sourceforge.net/smipl/?rev=43&view=rev Author: the_student Date: 2009-08-22 14:20:13 +0000 (Sat, 22 Aug 2009) Log Message: ----------- * Fixed linux builds Modified Paths: -------------- smipl-devel/src/Error.h smipl-devel/src/ModuleSystem/modload.cpp smipl-devel/src/SIA/SIASOUND.h smipl-devel/src/SMIPL-header.h smipl-devel/src/SMIPL.cpp smipl-devel/src/SVM.h Modified: smipl-devel/src/Error.h =================================================================== --- smipl-devel/src/Error.h 2009-08-22 11:30:57 UTC (rev 42) +++ smipl-devel/src/Error.h 2009-08-22 14:20:13 UTC (rev 43) @@ -1,7 +1,7 @@ -char* LastSysError; -char* GetLastSysError() { - return LastSysError; -} -void SetLastSysError(char* err) { - LastSysError=err; -} +char* LastSysError; +char* GetLastSysError() { + return LastSysError; +} +void SetLastSysError(char* err) { + LastSysError=err; +} Modified: smipl-devel/src/ModuleSystem/modload.cpp =================================================================== --- smipl-devel/src/ModuleSystem/modload.cpp 2009-08-22 11:30:57 UTC (rev 42) +++ smipl-devel/src/ModuleSystem/modload.cpp 2009-08-22 14:20:13 UTC (rev 43) @@ -12,13 +12,13 @@ #ifdef system_is_posix #include <dlfcn.h> -void GetAddress(void* Module, char* funcname, void *func) - *func=(void)*dlsym(handle, funcname); +void GetAddress(void* Module, char* funcname, void *func) { + func=dlsym(Module, funcname); } void OpenModule(char*fn) { char str[255], str2[255]; sprintf(str, "/Library/%s/Address"); sprintf(str2, "%s.so",fn); - MDS_Set(str, (double)*dlopen(fn, RTLD_LAZY)); + MDS_Set(str, *(value_t*)dlopen(fn, RTLD_LAZY)); } #endif Modified: smipl-devel/src/SIA/SIASOUND.h =================================================================== --- smipl-devel/src/SIA/SIASOUND.h 2009-08-22 11:30:57 UTC (rev 42) +++ smipl-devel/src/SIA/SIASOUND.h 2009-08-22 14:20:13 UTC (rev 43) @@ -15,7 +15,7 @@ void MIDI_Write(MIDI_Message Melding) { pthread_mutex_lock(&SIA_SOUND); if(MIDI_OUT_INITED) { - write(MIDI_Out, Melding.word, sizeof(Melding.word)); + write(MIDI_Out, Melding.data, sizeof(Melding.word)); } pthread_mutex_unlock(&SIA_SOUND); } Modified: smipl-devel/src/SMIPL-header.h =================================================================== --- smipl-devel/src/SMIPL-header.h 2009-08-22 11:30:57 UTC (rev 42) +++ smipl-devel/src/SMIPL-header.h 2009-08-22 14:20:13 UTC (rev 43) @@ -13,14 +13,15 @@ #include "FS/physfs_stream.cpp" //SMIPL -#define cmd_is(c) !strcasecmp(cmd.argv[0],c) +#define cmd_is(c) !strcasecmp(cmd.argv[0],c) +#define stricmp strcasecmp bool Init(int,char**); bool DeInit(); //SMIPL Basic Services -#include "Config.h" +#include "config.h" #include "String.h" -#include "Log.h" +#include "log.h" #include "Scheduler.h" #include "Error.h" #include "FS/FS.h" Modified: smipl-devel/src/SMIPL.cpp =================================================================== --- smipl-devel/src/SMIPL.cpp 2009-08-22 11:30:57 UTC (rev 42) +++ smipl-devel/src/SMIPL.cpp 2009-08-22 14:20:13 UTC (rev 43) @@ -1,11 +1,11 @@ -#include "SMIPL-header.h" -int main(int argc, char **argv) { - cout<<"Setting up version globals"<<endl; - MDS_Create("/Global/smipl.version.major",3); - MDS_Create("/Global/smipl.version.minor",50); - MDS_Create("/Global/smipl.version.patch",0); - cout<<"Running init"<<endl; - if(!Init(argc, argv)) {cerr<<"Init error:"<<GetLastSysError()<<endl;for(;;);} - else if(!Console(argc, argv)) {cerr<<"Console error"<<GetLastSysError()<<endl;for(;;);} - if(!DeInit()) {cerr<<"DeInit error:"<<GetLastSysError()<<endl;for(;;);} -} +#include "SMIPL-header.h" +int main(int argc, char **argv) { + cout<<"Setting up version globals"<<endl; + MDS_Create("/Global/smipl.version.major",3); + MDS_Create("/Global/smipl.version.minor",50); + MDS_Create("/Global/smipl.version.patch",0); + cout<<"Running init"<<endl; + if(!Init(argc, argv)) {cerr<<"Init error:"<<GetLastSysError()<<endl;for(;;);} + else if(!Console(argc, argv)) {cerr<<"Console error"<<GetLastSysError()<<endl;for(;;);} + if(!DeInit()) {cerr<<"DeInit error:"<<GetLastSysError()<<endl;for(;;);} +} Modified: smipl-devel/src/SVM.h =================================================================== --- smipl-devel/src/SVM.h 2009-08-22 11:30:57 UTC (rev 42) +++ smipl-devel/src/SVM.h 2009-08-22 14:20:13 UTC (rev 43) @@ -9,7 +9,7 @@ SMIPL_String cmd; value_t number,number2; MIDI_Message MIDI_Melding; - + void MDS_Get(char* Name, value_t* value) { pthread_mutex_lock(&Admin); if(JailAddress==NULL) {str1=new char[strlen(Name)+1];strcpy(str1,"/");} @@ -45,15 +45,15 @@ if(*b==0) *b=atof(a); pthread_mutex_unlock(&doatof); } - + void*Run(void*); SVM_Thread* Next; - SVM_Thread() { - Admin=PTHREAD_MUTEX_INITIALIZER; - AllowGetGlobal=isVM0=false; - JailAddress=NULL; - StartAddress=0; - Next=NULL; + SVM_Thread() { + pthread_mutex_unlock(&Admin); + AllowGetGlobal=isVM0=false; + JailAddress=NULL; + StartAddress=0; + Next=NULL; } }VM0; pthread_mutex_t doStartThread=PTHREAD_MUTEX_INITIALIZER; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2009-08-29 08:29:18
|
Revision: 45 http://smipl.svn.sourceforge.net/smipl/?rev=45&view=rev Author: the_student Date: 2009-08-29 08:29:05 +0000 (Sat, 29 Aug 2009) Log Message: ----------- Tried fixing bug Modified Paths: -------------- smipl-devel/src/Console.h smipl-devel/src/SVM.h Modified: smipl-devel/src/Console.h =================================================================== --- smipl-devel/src/Console.h 2009-08-28 20:26:40 UTC (rev 44) +++ smipl-devel/src/Console.h 2009-08-29 08:29:05 UTC (rev 45) @@ -4,10 +4,9 @@ if(!using_library)cin.getline(a,length); else {script_file->getline(a,length);if(script_file->eof()){using_script=false;delete script_file;}} } -int a=0; bool Console(int argc, char** argv) { SMIPL_String cmd; - int Lib_start; + int Lib_start,a; char *str, *str2; try{ sys_clearscreen(); @@ -18,6 +17,7 @@ cout<<"? "; getstr(cmd.str, 80); cmd.Split(); + for(a=0;a<cmd.argc;a++) cout<<a<<":"<<cmd.argv[a]<<endl; if(cmd_is("")) continue; if(cmd_is("QUIT")) break; if(cmd_is("EXIT")) break; Modified: smipl-devel/src/SVM.h =================================================================== --- smipl-devel/src/SVM.h 2009-08-28 20:26:40 UTC (rev 44) +++ smipl-devel/src/SVM.h 2009-08-29 08:29:05 UTC (rev 45) @@ -9,6 +9,7 @@ SMIPL_String cmd; value_t number,number2; MIDI_Message MIDI_Melding; + int a; void MDS_Get(char* Name, value_t* value) { pthread_mutex_lock(&Admin); @@ -77,14 +78,14 @@ //Flow control if(cmd_is("GOTO")) {if(cmd.argc>=2) {Atof(cmd.argv[1],&number);Address=number-1;}continue;} //Set - if(cmd_is("SET")) {for(int a=1;a<cmd.argc;a+=2) {Atof(cmd.argv[a+1],&number);MDS_Set(cmd.argv[a], number);}continue;} + if(cmd_is("SET")) {for(a=1;a<=cmd.argc;a+=2) {Atof(cmd.argv[a+1],&number);MDS_Set(cmd.argv[a], number);cout<<":";}continue;} //Basic Arithmetic - if(cmd_is("ADD")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number+=number2;}MDS_Set(cmd.argv[1], number);continue;} - if(cmd_is("SUBRACT")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number-=number2;}MDS_Set(cmd.argv[1], number);continue;} - if(cmd_is("MULTIPLY")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number*=number2;}MDS_Set(cmd.argv[1], number);continue;} - if(cmd_is("DIVIDE")) {Atof(cmd.argv[1],&number);for(int a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number/=number2;}MDS_Set(cmd.argv[1], number);continue;} + if(cmd_is("ADD")) {Atof(cmd.argv[1],&number);for(a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number+=number2;}MDS_Set(cmd.argv[1], number);continue;} + if(cmd_is("SUBRACT")) {Atof(cmd.argv[1],&number);for(a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number-=number2;}MDS_Set(cmd.argv[1], number);continue;} + if(cmd_is("MULTIPLY")) {Atof(cmd.argv[1],&number);for(a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number*=number2;}MDS_Set(cmd.argv[1], number);continue;} + if(cmd_is("DIVIDE")) {Atof(cmd.argv[1],&number);for(a=2;a<cmd.argc;a++){Atof(cmd.argv[a], &number2);number/=number2;}MDS_Set(cmd.argv[1], number);continue;} //IO - if(cmd_is("PRINT")) {for(int a=1;a<cmd.argc;a++) {Atof(cmd.argv[a], &number);cout<<cmd.argv[a]<<" = "<<number<<" ";}cout<<endl;continue;} + if(cmd_is("PRINT")) {for(a=1;a<cmd.argc;a++) {Atof(cmd.argv[a], &number);cout<<cmd.argv[a]<<" = "<<number<<" ";}cout<<endl;continue;} if(cmd_is("NEWLINE")){cout<<endl;continue;} //MIDI if(cmd_is("MIDI")) { @@ -102,7 +103,7 @@ Atof(cmd.argv[0],&number); if(number!=0) { Push(Address); - for(int a=1;a<cmd.argc;a++){Atof(cmd.argv[a],&number2);Push(number2);} + for(a=1;a<cmd.argc;a++){Atof(cmd.argv[a],&number2);Push(number2);} Push(cmd.argc-1); Address=(int)number-1; continue; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |