Main Page | Modules | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | Related Pages

TScorePart.h

00001 /*
00002 
00003   MusicXML Library
00004   Copyright (C) 2003  Grame
00005 
00006   This library is free software; you can redistribute it and/or
00007   modify it under the terms of the GNU Lesser General Public
00008   License as published by the Free Software Foundation; either
00009   version 2.1 of the License, or (at your option) any later version.
00010 
00011   This library is distributed in the hope that it will be useful,
00012   but WITHOUT ANY WARRANTY; without even the implied warranty of
00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014   Lesser General Public License for more details.
00015 
00016   You should have received a copy of the GNU Lesser General Public
00017   License along with this library; if not, write to the Free Software
00018   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020   Grame Research Laboratory, 9 rue du Garet, 69001 Lyon - France
00021   grame@grame.fr
00022 
00023 */
00024 
00025 #ifndef __TScorePart__
00026 #define __TScorePart__
00027 
00028 #include "exports.h"
00029 #include "common.h"
00030 #include "TIdentification.h"
00031 #include "TMidiDevice.h"
00032 #include "TMidiInstrument.h"
00033 #include "TScoreInstrument.h"
00034 #include "TScoreVisitor.h"
00035 
00036 namespace MusicXML 
00037 {
00038 
00060 class EXP TScorePart : public TPartListElement {
00061     
00062     public:
00063         EXP friend SMARTP<TScorePart> newScorePart(string id);
00064 
00065         virtual void accept(TScoreVisitor& visitor);
00066    
00067         const string&   getID() const               { return fID; }
00068         const string&   getPartName() const         { return fPartName; }
00069         const string&   getPartAbbrev() const       { return fPartAbbrev; }
00070         vvector<SScoreInstrument>&  scoreInstruments()  { return fScoreInstrumentList; }
00071         vvector<SMidiInstrument>&   midiInstruments()   { return fMidiInstrumentList; }
00072 
00073         void    setID(const string& id);
00074         void    setPartName(const string& name);
00075         void    setPartAbbrev(const string& abbrev);
00076 
00077         long    add(const SScoreInstrument& instr);
00078         long    add(const SMidiInstrument& instr);
00079         
00080         SIdentification& identification()   { return fIdentification; }
00081         SMidiDevice& mididevice()           { return fMidiDevice; }
00082     
00083     protected:
00084         TScorePart(string id) : fID(id) {}
00085         virtual ~TScorePart() {}
00086 
00087     private:
00088         string                  fID;
00089         SIdentification         fIdentification;
00090         string                  fPartName;
00091         string                  fPartAbbrev;
00092         vvector<SScoreInstrument> fScoreInstrumentList;
00093         SMidiDevice             fMidiDevice;
00094         vvector<SMidiInstrument> fMidiInstrumentList;
00095 };
00096 typedef SMARTP<TScorePart> SScorePart;
00097 
00098 } // namespace MusicXML
00099 
00100 
00101 #endif

Generated on Tue Mar 23 09:49:44 2004 for LibMusicXML by doxygen 1.3.3