jdkmidi class library documentation

Copyright © 2004 J.D. Koftinoff Software, Ltd.

Released under the GNU General Public License (GPL)




Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

jdkmidi::MIDIMultiTrackIteratorState Class Reference

#include <multitrack.h>

List of all members.

Public Member Functions

 MIDIMultiTrackIteratorState (int num_tracks_=64)
 MIDIMultiTrackIteratorState (const MIDIMultiTrackIteratorState &m)
virtual ~MIDIMultiTrackIteratorState ()
const MIDIMultiTrackIteratorStateoperator= (const MIDIMultiTrackIteratorState &m)
int GetNumTracks ()
int GetCurEventTrack ()
MIDIClockTime GetCurrentTime ()
void Reset ()
int FindTrackOfFirstEvent ()

Public Attributes

MIDIClockTime cur_time
int cur_event_track
int num_tracks
int * next_event_number
MIDIClockTimenext_event_time


Constructor & Destructor Documentation

jdkmidi::MIDIMultiTrackIteratorState::MIDIMultiTrackIteratorState int  num_tracks_ = 64  ) 
 

Definition at line 119 of file jdkmidi_multitrack.cpp.

References cur_event_track, jdkmidi::MIDIClockTime, next_event_number, next_event_time, num_tracks, and Reset().

00120   {
00121     num_tracks = num_tracks_;   
00122     
00123     cur_event_track=0;
00124     
00125     next_event_number = new int [num_tracks];
00126     next_event_time = new MIDIClockTime [num_tracks];
00127     
00128     Reset();
00129     
00130   } 

jdkmidi::MIDIMultiTrackIteratorState::MIDIMultiTrackIteratorState const MIDIMultiTrackIteratorState m  ) 
 

Definition at line 132 of file jdkmidi_multitrack.cpp.

References cur_event_track, cur_time, jdkmidi::MIDIClockTime, next_event_number, next_event_time, and num_tracks.

00133   {
00134     num_tracks = m.num_tracks;
00135     cur_event_track = m.cur_event_track;
00136     next_event_number = new int [num_tracks];
00137     next_event_time = new MIDIClockTime [num_tracks];
00138     cur_time = m.cur_time;
00139     
00140     for( int i=0; i<num_tracks; ++i )
00141     {
00142       next_event_number[i] = m.next_event_number[i];    
00143       next_event_time[i] = m.next_event_time[i];
00144     }
00145     
00146   } 

jdkmidi::MIDIMultiTrackIteratorState::~MIDIMultiTrackIteratorState  )  [virtual]
 

Definition at line 148 of file jdkmidi_multitrack.cpp.

References next_event_number, and next_event_time.

00149   {
00150     delete [] next_event_number;
00151     delete [] next_event_time;
00152   } 


Member Function Documentation

int jdkmidi::MIDIMultiTrackIteratorState::FindTrackOfFirstEvent  ) 
 

Definition at line 189 of file jdkmidi_multitrack.cpp.

References cur_event_track, cur_time, jdkmidi::MIDIClockTime, next_event_number, next_event_time, and num_tracks.

00190   {
00191     MIDIClockTime minimum_time=0xffffffff;
00192     int minimum_time_track=-1;
00193     
00194     
00195     // go through all tracks and find the track with the smallest
00196     // event time. 
00197     
00198     for( int j=0; j<num_tracks; ++j )
00199     {
00200       int i=(j+cur_event_track+1) % num_tracks;
00201       
00202       // skip any tracks that have a current event number less than 0 - these are
00203       // finished already
00204       
00205       
00206       if( next_event_number[i]>=0 && next_event_time[i]<minimum_time )
00207       {
00208         minimum_time = next_event_time[i];
00209         minimum_time_track = i;
00210       }   
00211     } 
00212     
00213     // set cur_event_track to -1 if there are no more events left
00214     cur_event_track = minimum_time_track;
00215     cur_time = minimum_time;
00216     
00217     return cur_event_track;
00218   } 

int jdkmidi::MIDIMultiTrackIteratorState::GetCurEventTrack  )  [inline]
 

Definition at line 94 of file multitrack.h.

References cur_event_track.

00094 { return cur_event_track; }

MIDIClockTime jdkmidi::MIDIMultiTrackIteratorState::GetCurrentTime  )  [inline]
 

Definition at line 95 of file multitrack.h.

References cur_time, and jdkmidi::MIDIClockTime.

00095 { return cur_time;      }

int jdkmidi::MIDIMultiTrackIteratorState::GetNumTracks  )  [inline]
 

Definition at line 93 of file multitrack.h.

References num_tracks.

00093 { return num_tracks;    }

const MIDIMultiTrackIteratorState & jdkmidi::MIDIMultiTrackIteratorState::operator= const MIDIMultiTrackIteratorState m  ) 
 

Definition at line 154 of file jdkmidi_multitrack.cpp.

References cur_event_track, cur_time, jdkmidi::MIDIClockTime, next_event_number, next_event_time, and num_tracks.

00155   {
00156     if( num_tracks != m.num_tracks )
00157     {
00158       delete [] next_event_number;
00159       delete [] next_event_time;
00160       
00161       num_tracks = m.num_tracks;
00162       next_event_number = new int [num_tracks];
00163       next_event_time = new MIDIClockTime [num_tracks];
00164     }
00165     
00166     cur_time = m.cur_time;
00167     cur_event_track = m.cur_event_track;
00168     
00169     for( int i=0; i<num_tracks; ++i )
00170     {
00171       next_event_number[i] = m.next_event_number[i];
00172       next_event_time[i] = m.next_event_time[i];
00173     }   
00174     
00175     return *this;
00176   } 

void jdkmidi::MIDIMultiTrackIteratorState::Reset  ) 
 

Definition at line 178 of file jdkmidi_multitrack.cpp.

References cur_event_track, cur_time, next_event_number, next_event_time, and num_tracks.

00179   {
00180     cur_time = 0;
00181     cur_event_track = 0;
00182     for( int i=0; i<num_tracks; ++i )
00183     {
00184       next_event_number[i] = 0;
00185       next_event_time[i] = 0xffffffff;
00186     }     
00187   } 


Member Data Documentation

int jdkmidi::MIDIMultiTrackIteratorState::cur_event_track
 

Definition at line 101 of file multitrack.h.

MIDIClockTime jdkmidi::MIDIMultiTrackIteratorState::cur_time
 

Definition at line 100 of file multitrack.h.

int* jdkmidi::MIDIMultiTrackIteratorState::next_event_number
 

Definition at line 103 of file multitrack.h.

MIDIClockTime* jdkmidi::MIDIMultiTrackIteratorState::next_event_time
 

Definition at line 104 of file multitrack.h.

int jdkmidi::MIDIMultiTrackIteratorState::num_tracks
 

Definition at line 102 of file multitrack.h.


The documentation for this class was generated from the following files: