/*---------------------------------------------------------------------------- ChucK Concurrent, On-the-fly Audio Programming Language Compiler and Virtual Machine Copyright (c) 2004 Ge Wang and Perry R. Cook. All rights reserved. http://chuck.stanford.edu/ http://chuck.cs.princeton.edu/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 U.S.A.-----------------------------------------------------------------------------*/ //-----------------------------------------------------------------------------// file: chuck_shell.h// desc: chuck shell implementation//// author: Spencer Salazar (spencer@ccrma.stanford.edu)// date: Autumn 2005//-----------------------------------------------------------------------------#ifndef __CHUCK_SHELL_H__#define __CHUCK_SHELL_H__ #include "chuck_def.h"#include "chuck_errmsg.h"#include "chuck_vm.h" #include <string>#include <map>#include <vector> using namespace std; // forward referencesclass Chuck_Shell_VM;class Chuck_Shell_UI; typedef string Chuck_Shell_Request;typedef string Chuck_Shell_Response; //-----------------------------------------------------------------------------// name: class Chuck_Shell// desc: controller class for facilitating interaction between a shell UI and a// shell mode.//-----------------------------------------------------------------------------class Chuck_Shell{public: Chuck_Shell(); virtual ~Chuck_Shell(); t_CKBOOL init( Chuck_VM * process_vm, Chuck_Shell_UI * ); void run(); t_CKBOOL execute( string &, string & ); void close(); void exit(); public: // HACK-GE: these were moved from protected for win32 vector < Chuck_Shell_VM * > vms; Chuck_VM * process_vm; Chuck_Shell_VM * current_vm; //forward declaration class Command; // alias, variable, and command maps map < string, string > aliases; map < string, string > variables; map < string, Command * > commands; vector < Command * > allocated_commands; map < string, string > saved_code; string code; // helper functions t_CKBOOL do_glob( const string &, string &, vector < string > & ); void do_code( string &, string &, string command = "+ " ); void do_code_context( string & ); protected: // helper functions void do_aliases(); void do_variables(); // code helper functions void start_code(); void continue_code( string & ); void string_hash( string &, string & ); Chuck_Shell_UI * ui; t_CKBOOL initialized; t_CKBOOL stop; string prompt; string in; // code entry variables t_CKBOOL code_entry_active; t_CKUINT scope; public: // HACK-GE: moved from protected for win32 //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command// desc: superclass to Chuck_Shell_Commands//----------------------------------------------------------------------------- class Command { public: // virtual destructor (gewang) virtual ~Command() { } public: virtual t_CKBOOL init( Chuck_Shell * ); virtual t_CKINT execute( vector< string > &, string & ) = 0; virtual string usage(); virtual string long_usage(); protected: Chuck_Shell * caller; }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_VM// desc: ...//----------------------------------------------------------------------------- class Command_VM : public Command { public: ~Command_VM(); t_CKBOOL init( Chuck_Shell * ); t_CKINT execute( vector< string > &, string & ); string usage(); protected: map < string, Command * > commands; vector < Command * > allocated_commands; }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_VM_Add// desc: ...//----------------------------------------------------------------------------- class Command_VMAdd : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_VM_Remove// desc: ...//----------------------------------------------------------------------------- class Command_VMRemove : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_VM_Attach// desc: ...//----------------------------------------------------------------------------- class Command_VMAttach : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_VM_List// desc: ...//----------------------------------------------------------------------------- class Command_VMList : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_VM_Swap// desc: ...//----------------------------------------------------------------------------- class Command_VMSwap : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_VM_AttachAdd// desc: ...//----------------------------------------------------------------------------- class Command_VMAttachAdd : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Add// desc: ...//----------------------------------------------------------------------------- class Command_Add : public Command { public: t_CKINT execute( vector < string > &, string & ); string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Remove// desc: ...//----------------------------------------------------------------------------- class Command_Remove : public Command { public: t_CKINT execute( vector < string > &, string & ); string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Status// desc: ...//----------------------------------------------------------------------------- class Command_Status : public Command { public: t_CKINT execute( vector < string > &, string & ); string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Removeall// desc: ...//----------------------------------------------------------------------------- class Command_Removeall : public Command { public: t_CKINT execute( vector< string > &, string & ); string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Removelast// desc: ...//----------------------------------------------------------------------------- class Command_Removelast : public Command { public: t_CKINT execute( vector< string > &, string & ); string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Replace// desc: ...//----------------------------------------------------------------------------- class Command_Replace : public Command { public: t_CKINT execute( vector< string > &, string & ); string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Kill// desc: ...//----------------------------------------------------------------------------- class Command_Kill : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Close// desc: ...//----------------------------------------------------------------------------- class Command_Close : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Exit// desc: ...//----------------------------------------------------------------------------- class Command_Exit : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Ls// desc: ...//----------------------------------------------------------------------------- class Command_Ls : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Cd// desc: ...//----------------------------------------------------------------------------- class Command_Cd : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Pwd// desc: ...//----------------------------------------------------------------------------- class Command_Pwd : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Alias// desc: ...//----------------------------------------------------------------------------- class Command_Alias : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Unalias// desc: ...//----------------------------------------------------------------------------- class Command_Unalias : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Source// desc: ...//----------------------------------------------------------------------------- class Command_Source : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Code// desc: ...//----------------------------------------------------------------------------- class Command_Code : public Command { public: ~Command_Code(); t_CKBOOL init( Chuck_Shell * ); t_CKINT execute( vector< string > &, string & ); string usage(); private: map < string, Command * > commands; vector < Command * > allocated_commands; }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_CodeContext// desc: ...//----------------------------------------------------------------------------- class Command_CodeContext : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_CodeSave// desc: ...//----------------------------------------------------------------------------- class Command_CodeSave : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_CodeDelete// desc: ...//----------------------------------------------------------------------------- class Command_CodeDelete : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_CodeAdd// desc: ...//----------------------------------------------------------------------------- class Command_CodeAdd : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_CodeList// desc: ...//----------------------------------------------------------------------------- class Command_CodeList : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_CodePrint// desc: ...//----------------------------------------------------------------------------- class Command_CodePrint : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_CodeWrite// desc: ...//----------------------------------------------------------------------------- class Command_CodeWrite : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_CodeRead// desc: ...//----------------------------------------------------------------------------- class Command_CodeRead : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //-----------------------------------------------------------------------------// name: class Chuck_Shell::Command_Help// desc: ...//----------------------------------------------------------------------------- class Command_Help : public Command { public: t_CKINT execute( vector< string > &, string & ); }; }; //-----------------------------------------------------------------------------// name: class Chuck_Shell_VM// desc: encapsulates local and network VMs into a single class//-----------------------------------------------------------------------------class Chuck_Shell_VM{public: virtual ~Chuck_Shell_VM() {} public: virtual Chuck_Shell_VM * copy()=0; virtual t_CKBOOL add_shred( const vector< string > &, string & )=0; virtual t_CKBOOL remove_shred( const vector< string > &, string & )=0; virtual t_CKBOOL remove_all( string & )=0; virtual t_CKBOOL remove_last( string & )=0; virtual t_CKBOOL replace_shred( const vector< string > &, string & )=0;Lines 1–500 of 578. Load more
/*---------------------------------------------------------------------------- ChucK Concurrent, On-the-fly Audio Programming Language Compiler and Virtual Machine Copyright (c) 2004 Ge Wang and Perry R. Cook. All rights reserved. http://chuck.stanford.edu/ http://chuck.cs.princeton.edu/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 U.S.A. -----------------------------------------------------------------------------*/ //----------------------------------------------------------------------------- // file: chuck_shell.h // desc: chuck shell implementation // // author: Spencer Salazar (spencer@ccrma.stanford.edu) // date: Autumn 2005 //----------------------------------------------------------------------------- #ifndef __CHUCK_SHELL_H__ #define __CHUCK_SHELL_H__ #include "chuck_def.h" #include "chuck_errmsg.h" #include "chuck_vm.h" #include <string> #include <map> #include <vector> using namespace std; // forward references class Chuck_Shell_VM; class Chuck_Shell_UI; typedef string Chuck_Shell_Request; typedef string Chuck_Shell_Response; //----------------------------------------------------------------------------- // name: class Chuck_Shell // desc: controller class for facilitating interaction between a shell UI and a // shell mode. //----------------------------------------------------------------------------- class Chuck_Shell { public: Chuck_Shell(); virtual ~Chuck_Shell(); t_CKBOOL init( Chuck_VM * process_vm, Chuck_Shell_UI * ); void run(); t_CKBOOL execute( string &, string & ); void close(); void exit(); public: // HACK-GE: these were moved from protected for win32 vector < Chuck_Shell_VM * > vms; Chuck_VM * process_vm; Chuck_Shell_VM * current_vm; //forward declaration class Command; // alias, variable, and command maps map < string, string > aliases; map < string, string > variables; map < string, Command * > commands; vector < Command * > allocated_commands; map < string, string > saved_code; string code; // helper functions t_CKBOOL do_glob( const string &, string &, vector < string > & ); void do_code( string &, string &, string command = "+ " ); void do_code_context( string & ); protected: // helper functions void do_aliases(); void do_variables(); // code helper functions void start_code(); void continue_code( string & ); void string_hash( string &, string & ); Chuck_Shell_UI * ui; t_CKBOOL initialized; t_CKBOOL stop; string prompt; string in; // code entry variables t_CKBOOL code_entry_active; t_CKUINT scope; public: // HACK-GE: moved from protected for win32 //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command // desc: superclass to Chuck_Shell_Commands //----------------------------------------------------------------------------- class Command { public: // virtual destructor (gewang) virtual ~Command() { } public: virtual t_CKBOOL init( Chuck_Shell * ); virtual t_CKINT execute( vector< string > &, string & ) = 0; virtual string usage(); virtual string long_usage(); protected: Chuck_Shell * caller; }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_VM // desc: ... //----------------------------------------------------------------------------- class Command_VM : public Command { public: ~Command_VM(); t_CKBOOL init( Chuck_Shell * ); t_CKINT execute( vector< string > &, string & ); string usage(); protected: map < string, Command * > commands; vector < Command * > allocated_commands; }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_VM_Add // desc: ... //----------------------------------------------------------------------------- class Command_VMAdd : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_VM_Remove // desc: ... //----------------------------------------------------------------------------- class Command_VMRemove : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_VM_Attach // desc: ... //----------------------------------------------------------------------------- class Command_VMAttach : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_VM_List // desc: ... //----------------------------------------------------------------------------- class Command_VMList : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_VM_Swap // desc: ... //----------------------------------------------------------------------------- class Command_VMSwap : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_VM_AttachAdd // desc: ... //----------------------------------------------------------------------------- class Command_VMAttachAdd : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Add // desc: ... //----------------------------------------------------------------------------- class Command_Add : public Command { public: t_CKINT execute( vector < string > &, string & ); string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Remove // desc: ... //----------------------------------------------------------------------------- class Command_Remove : public Command { public: t_CKINT execute( vector < string > &, string & ); string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Status // desc: ... //----------------------------------------------------------------------------- class Command_Status : public Command { public: t_CKINT execute( vector < string > &, string & ); string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Removeall // desc: ... //----------------------------------------------------------------------------- class Command_Removeall : public Command { public: t_CKINT execute( vector< string > &, string & ); string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Removelast // desc: ... //----------------------------------------------------------------------------- class Command_Removelast : public Command { public: t_CKINT execute( vector< string > &, string & ); string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Replace // desc: ... //----------------------------------------------------------------------------- class Command_Replace : public Command { public: t_CKINT execute( vector< string > &, string & ); string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Kill // desc: ... //----------------------------------------------------------------------------- class Command_Kill : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Close // desc: ... //----------------------------------------------------------------------------- class Command_Close : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Exit // desc: ... //----------------------------------------------------------------------------- class Command_Exit : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Ls // desc: ... //----------------------------------------------------------------------------- class Command_Ls : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Cd // desc: ... //----------------------------------------------------------------------------- class Command_Cd : public Command { public: t_CKINT execute( vector< string > &, string & ); //string usage(); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Pwd // desc: ... //----------------------------------------------------------------------------- class Command_Pwd : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Alias // desc: ... //----------------------------------------------------------------------------- class Command_Alias : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Unalias // desc: ... //----------------------------------------------------------------------------- class Command_Unalias : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Source // desc: ... //----------------------------------------------------------------------------- class Command_Source : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Code // desc: ... //----------------------------------------------------------------------------- class Command_Code : public Command { public: ~Command_Code(); t_CKBOOL init( Chuck_Shell * ); t_CKINT execute( vector< string > &, string & ); string usage(); private: map < string, Command * > commands; vector < Command * > allocated_commands; }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_CodeContext // desc: ... //----------------------------------------------------------------------------- class Command_CodeContext : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_CodeSave // desc: ... //----------------------------------------------------------------------------- class Command_CodeSave : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_CodeDelete // desc: ... //----------------------------------------------------------------------------- class Command_CodeDelete : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_CodeAdd // desc: ... //----------------------------------------------------------------------------- class Command_CodeAdd : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_CodeList // desc: ... //----------------------------------------------------------------------------- class Command_CodeList : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_CodePrint // desc: ... //----------------------------------------------------------------------------- class Command_CodePrint : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_CodeWrite // desc: ... //----------------------------------------------------------------------------- class Command_CodeWrite : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_CodeRead // desc: ... //----------------------------------------------------------------------------- class Command_CodeRead : public Command { public: t_CKINT execute( vector< string > &, string & ); }; //----------------------------------------------------------------------------- // name: class Chuck_Shell::Command_Help // desc: ... //----------------------------------------------------------------------------- class Command_Help : public Command { public: t_CKINT execute( vector< string > &, string & ); }; }; //----------------------------------------------------------------------------- // name: class Chuck_Shell_VM // desc: encapsulates local and network VMs into a single class //----------------------------------------------------------------------------- class Chuck_Shell_VM { public: virtual ~Chuck_Shell_VM() {} public: virtual Chuck_Shell_VM * copy()=0; virtual t_CKBOOL add_shred( const vector< string > &, string & )=0; virtual t_CKBOOL remove_shred( const vector< string > &, string & )=0; virtual t_CKBOOL remove_all( string & )=0; virtual t_CKBOOL remove_last( string & )=0; virtual t_CKBOOL replace_shred( const vector< string > &, string & )=0;