00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __TScoreVisitor__
00024 #define __TScoreVisitor__
00025
00026 #include <vector>
00027 #include "smartclasses.h"
00028 #include "smartpointer.h"
00029
00030 using namespace std;
00031
00032 namespace MusicXML
00033 {
00046 class TScoreVisitor : public smartable {
00047
00048 public:
00049 TScoreVisitor() {}
00050 virtual ~TScoreVisitor() {}
00051
00052 virtual void visite ( SAccidental& elt ) {}
00053 virtual void visite ( SArticulationElement& elt ) {}
00054 virtual void visite ( SArticulations& elt ) {}
00055 virtual void visite ( SAttributes& elt ) {}
00056 virtual void visite ( SBackup& elt ) {}
00057 virtual void visite ( SBarline& elt ) {}
00058 virtual void visite ( SBeam& elt ) {}
00059 virtual void visite ( SBracket& elt ) {}
00060 virtual void visite ( SChord& elt ) {}
00061 virtual void visite ( SClef& elt ) {}
00062 virtual void visite ( SCoda& elt ) {}
00063 virtual void visite ( SCreator& elt ) {}
00064 virtual void visite ( SDashes& elt ) {}
00065 virtual void visite ( SDirection& elt ) {}
00066 virtual void visite ( SDirectionType& elt ) {}
00067 virtual void visite ( SDirective& elt ) {}
00068 virtual void visite ( SDynamic& elt ) {}
00069 virtual void visite ( SEncoding& elt ) {}
00070 virtual void visite ( SEnding& elt ) {}
00071 virtual void visite ( SExpression& elt ) {}
00072 virtual void visite ( SFermata& elt ) {}
00073 virtual void visite ( SForward& elt ) {}
00074 virtual void visite ( SGraceNote& elt ) {}
00075 virtual void visite ( SGraphNote& elt ) {}
00076 virtual void visite ( SIdentification& elt ) {}
00077 virtual void visite ( SKey& elt ) {}
00078 virtual void visite ( SMeasure& elt ) {}
00079 virtual void visite ( SMetronome& elt ) {}
00080 virtual void visite ( SMidiDevice& elt ) {}
00081 virtual void visite ( SMidiInstrument& elt ) {}
00082 virtual void visite ( SNotation& elt ) {}
00083 virtual void visite ( SNote& elt ) {}
00084 virtual void visite ( SNoteHead& elt ) {}
00085 virtual void visite ( SOctaveShift& elt ) {}
00086 virtual void visite ( SPWMeasure& elt ) {}
00087 virtual void visite ( SPWPart& elt ) {}
00088 virtual void visite ( SPart& elt ) {}
00089 virtual void visite ( SPartGroup& elt ) {}
00090 virtual void visite ( SPartList& elt ) {}
00091 virtual void visite ( SPitch& elt ) {}
00092 virtual void visite ( SRepeat& elt ) {}
00093 virtual void visite ( SRest& elt ) {}
00094 virtual void visite ( SRights& elt ) {}
00095 virtual void visite ( SScoreHeader& elt ) {}
00096 virtual void visite ( SScoreInstrument& elt ) {}
00097 virtual void visite ( SScorePart& elt ) {}
00098 virtual void visite ( SScorePartwise& elt ) {}
00099 virtual void visite ( SScoreTimewise& elt ) {}
00100 virtual void visite ( SSegno& elt ) {}
00101 virtual void visite ( SSlur& elt ) {}
00102 virtual void visite ( SSound& elt ) {}
00103 virtual void visite ( SStrongAccent& elt ) {}
00104 virtual void visite ( STWMeasure& elt ) {}
00105 virtual void visite ( STWPart& elt ) {}
00106 virtual void visite ( STie& elt ) {}
00107
00108 virtual void visite ( STimeModification& elt ) {}
00109 virtual void visite ( STimeSign& elt ) {}
00110 virtual void visite ( STranspose& elt ) {}
00111
00112 virtual void visite ( STuplet& elt ) {}
00113 virtual void visite ( STupletDesc& elt ) {}
00114 virtual void visite ( SUnpitched& elt ) {}
00115 virtual void visite ( SWavyLine& elt ) {}
00116 virtual void visite ( SWedge& elt ) {}
00117 virtual void visite ( SWords& elt ) {}
00118 virtual void visite ( SWork& elt ) {}
00119
00120 virtual void visite ( TOrientation* elt ) {}
00121 virtual void visite ( TPlacement* elt ) {}
00122 virtual void visite ( TPosition* elt ) {}
00123
00124 };
00125
00129 class visitable {
00130 public:
00131 virtual void accept(TScoreVisitor& visitor) = 0;
00132 };
00133 typedef SMARTP<visitable> Svisitable;
00134
00140 template <typename T>
00141 class vvector: public vector<T>, public visitable {
00142
00143 public:
00144 vvector() {}
00145 virtual~ vvector(){}
00146
00147 void accept(TScoreVisitor& visitor) {
00148 typename vector<T>::iterator iter;
00149 for (iter = begin(); iter != end(); iter++)
00150 (*iter)->accept(visitor);
00151 }
00152 };
00153
00157 }
00158
00159
00160 #endif