578 lines · 18.2 KB · C
RawDownload
/*----------------------------------------------------------------------------  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.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t