[Smipl-devel] SF.net SVN: smipl:[31] smipl-devel
Brought to you by:
the_student
From: <the...@us...> - 2009-08-09 09:32:53
|
Revision: 31 http://smipl.svn.sourceforge.net/smipl/?rev=31&view=rev Author: the_student Date: 2009-08-09 09:32:38 +0000 (Sun, 09 Aug 2009) Log Message: ----------- Attempted to fix linux-MIDI_Write Added script and library Modified Paths: -------------- smipl-devel/Console.h smipl-devel/FS.zip smipl-devel/SIASOUND.h smipl-devel/physfs_stream.cpp smipl-devel/physfs_stream.hpp Modified: smipl-devel/Console.h =================================================================== --- smipl-devel/Console.h 2009-08-06 10:24:24 UTC (rev 30) +++ smipl-devel/Console.h 2009-08-09 09:32:38 UTC (rev 31) @@ -14,15 +14,19 @@ along with SMIPL. If not, see <http://www.gnu.org/licenses/>. */ bool Console(int argc, char** argv) { - char **rc, **i, *str; + char **rc, **i, *str, Name[256], Data[256]; bool EnterProgram=false; SMIPL_String command; - value_t number=0; + value_t number=0, number2; + IFileStream *inputfile, *library_file; + bool using_script=false, using_library=false; + if(PHYSFS_exists("/Console/Splash")){PrintFile("/Console/Splash");cin.get();} for(;;) { if(!EnterProgram) cout<<"? "; else cout<<number<<" "; - cin.getline(command.str, 256); + if(!using_script) cin.getline(command.str, 256); + else {if((*inputfile>>command.str)==0) {using_script=false;delete inputfile;break;}cout<<command.str<<endl;} if(!EnterProgram) cout<<endl; command.Split(); //cout<<"str="<<command.str<<": "; @@ -40,7 +44,60 @@ if(!stricmp(command.argv[0], "QUIT")) break; if(!stricmp(command.argv[0], "EXIT")) break; if(!stricmp(command.str, "PROGRAM START")) {EnterProgram=true;number=0;continue;} - + if(!stricmp(command.argv[0], "LIBRARY")) { + do{ + if(command.argc==2) { + cout<<"Name: "; + if(!using_script) cin.getline(Name, 256); + else { + if((*inputfile>>Name)==0) { + using_script=false; + delete inputfile;break; + } + cout<<Name<<endl; + } + } + str=strdup("/Library/", Name); + if(!PHYSFS_exists(str)) {cout<<"FILE NOT FOUND"<<endl;delete[]str;continue;} + else break; + }while(1); + using_script=true; + library_file=new IFileStream(str); + delete[]str; + if(command.argc<4){cout<<"Start: ";Atof(Data, &number);} + else + str=new char[strlen("/Global/") + strlen(Name) + strlen("_START")]; + sprintf(str, "/Global/%s_START", Name); + MDS_Set(str, number); + delete[]str; + for(;;) { + if((*library_file>>Program[(int)number])==0) {strcpy(Program[(int)number], "PROGRAM END");cout<<endl;break;} + number++; + if(number>100000) {cout<<endl;break;} + } + continue; + } + if(!stricmp(command.argv[0], "SCRIPT")) { + do{ + if(command.argc==2) { + cout<<"Name: "; + if(!using_script) cin.getline(Name, 256); + else { + if((*inputfile>>Name)==0) { + using_script=false; + delete inputfile;break; + } + cout<<Name<<endl; + } + } + str=strdup("/Script/", Name); + if(!PHYSFS_exists(str)) {cout<<"FILE NOT FOUND"<<endl;delete[]str;continue;} + else break; + }while(1); + using_script=true; + inputfile=new IFileStream(str); + continue; + } if(!stricmp(command.argv[0], "RUN")) { VM0.Run(NULL); continue; @@ -49,6 +106,7 @@ pthread_create(&VM0.ID,NULL,StartThread,&VM0); continue; } + if(!stricmp(command.argv[0], "LIST")) { int a=0; do{ @@ -79,7 +137,7 @@ } if(!stricmp(command.argv[0], "ABOUT")) { if(command.argc==1){ - if(PHYSFS_exists("/About/About")) PrintFile("About"); + if(PHYSFS_exists("/About/About")) PrintFile("/About/About"); else cout<<"About not found!"<<endl; } else { Modified: smipl-devel/FS.zip =================================================================== (Binary files differ) Modified: smipl-devel/SIASOUND.h =================================================================== --- smipl-devel/SIASOUND.h 2009-08-06 10:24:24 UTC (rev 30) +++ smipl-devel/SIASOUND.h 2009-08-09 09:32:38 UTC (rev 31) @@ -14,7 +14,7 @@ void MIDI_Write(MIDI_Message Melding) { pthread_mutex_lock(&SIA_SOUND); if(MIDI_OUT_INITED) { - write(MIDI_Out, Melding.data, sizeof(Melding)); + write(MIDI_Out, Melding.data, sizeof(Melding.data)); } pthread_mutex_unlock(&SIA_SOUND); } Modified: smipl-devel/physfs_stream.cpp =================================================================== --- smipl-devel/physfs_stream.cpp 2009-08-06 10:24:24 UTC (rev 30) +++ smipl-devel/physfs_stream.cpp 2009-08-09 09:32:38 UTC (rev 31) @@ -157,6 +157,10 @@ : std::istream(new IFileStreambuf(filename)) { } +IFileStream::IFileStream() + : std::istream() +{ +} IFileStream::~IFileStream() { @@ -169,6 +173,10 @@ : std::ostream(new OFileStreambuf(filename)) { } +OFileStream::OFileStream() + : std::ostream() +{ +} OFileStream::~OFileStream() { Modified: smipl-devel/physfs_stream.hpp =================================================================== --- smipl-devel/physfs_stream.hpp 2009-08-06 10:24:24 UTC (rev 30) +++ smipl-devel/physfs_stream.hpp 2009-08-09 09:32:38 UTC (rev 31) @@ -1,6 +1,7 @@ // $Id$ // // SuperTux +// Copyright (C) 2009 Martin Sundhaug <mar...@gm...> // Copyright (C) 2006 Matthias Braun <ma...@br...> // // This program is free software; you can redistribute it and/or @@ -31,6 +32,7 @@ public: IFileStreambuf(const std::string& filename); ~IFileStreambuf(); + PHYSFS_file* file; protected: virtual int underflow(); @@ -39,7 +41,6 @@ virtual pos_type seekpos(pos_type pos, std::ios_base::openmode); private: - PHYSFS_file* file; char buf[1024]; }; @@ -48,13 +49,13 @@ public: OFileStreambuf(const std::string& filename); ~OFileStreambuf(); + PHYSFS_file* file; protected: virtual int overflow(int c); virtual int sync(); private: - PHYSFS_file* file; char buf[1024]; }; @@ -62,12 +63,14 @@ { public: IFileStream(const std::string& filename); + IFileStream(); ~IFileStream(); }; class OFileStream : public std::ostream { public: + OFileStream(); OFileStream(const std::string& filename); ~OFileStream(); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |