MythTV  0.26-pre
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes
Scheduler Class Reference

#include <scheduler.h>

Inheritance diagram for Scheduler:
MThread MythScheduler

List of all members.

Public Member Functions

 Scheduler (bool runthread, QMap< int, EncoderLink * > *tvList, QString recordTbl="record", Scheduler *master_sched=NULL)
 ~Scheduler ()
void Stop (void)
void Wait (void)
void SetExpirer (AutoExpire *autoExpirer)
void Reschedule (const QStringList &request)
void RescheduleMatch (uint recordid, uint sourceid, uint mplexid, const QDateTime &maxstarttime, const QString &why)
void RescheduleCheck (const RecordingInfo &recinfo, const QString &why)
void ReschedulePlace (const QString &why)
void AddRecording (const RecordingInfo &)
void FillRecordListFromDB (uint recordid=0)
void FillRecordListFromMaster (void)
void UpdateRecStatus (RecordingInfo *pginfo)
void UpdateRecStatus (uint cardid, uint chanid, const QDateTime &startts, RecStatusType recstatus, const QDateTime &recendts)
bool GetAllPending (RecList &retList) const
virtual void GetAllPending (QStringList &strList) const
virtual QMap< QString,
ProgramInfo * > 
GetRecording (void) const
void getConflicting (RecordingInfo *pginfo, QStringList &strlist)
void getConflicting (RecordingInfo *pginfo, RecList *retlist)
void PrintList (bool onlyFutureRecordings=false)
void PrintList (RecList &list, bool onlyFutureRecordings=false)
void PrintRec (const RecordingInfo *p, const char *prefix=NULL)
void SetMainServer (MainServer *ms)
void SlaveConnected (RecordingList &slavelist)
void SlaveDisconnected (uint cardid)
void DisableScheduling (void)
void EnableScheduling (void)
void GetNextLiveTVDir (uint cardid)
void ResetIdleTime (void)
bool WasStartedAutomatically ()
RecStatusType GetRecStatus (const ProgramInfo &pginfo)
int GetError (void) const

Static Public Member Functions

static void GetAllScheduled (QStringList &strList)
 Returns all scheduled programs serialized into a QStringList.
static void GetAllScheduled (RecList &proglist)
 Returns all scheduled programs.

Protected Member Functions

virtual void run (void)
 Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.

Private Types

typedef pair< const
RecordingInfo *, const
RecordingInfo * > 
IsSameKey
typedef QMap< IsSameKey, boolIsSameCacheType

Private Member Functions

bool VerifyCards (void)
void CreateTempTables (void)
void DeleteTempTables (void)
void UpdateDuplicates (void)
bool FillRecordList (void)
void UpdateMatches (uint recordid, uint sourceid, uint mplexid, const QDateTime maxstarttime)
void UpdateManuals (uint recordid)
void BuildWorkList (void)
bool ClearWorkList (void)
void AddNewRecords (void)
void AddNotListed (void)
void BuildNewRecordsQueries (uint recordid, QStringList &from, QStringList &where, MSqlBindings &bindings)
void PruneOverlaps (void)
void BuildListMaps (void)
void ClearListMaps (void)
bool IsBusyRecording (const RecordingInfo *rcinfo)
bool IsSameProgram (const RecordingInfo *a, const RecordingInfo *b) const
bool FindNextConflict (const RecList &cardlist, const RecordingInfo *p, RecConstIter &iter, int openEnd=0) const
const RecordingInfoFindConflict (const RecordingInfo *p, int openEnd=0) const
void MarkOtherShowings (RecordingInfo *p)
void MarkShowingsList (RecList &showinglist, RecordingInfo *p)
void BackupRecStatus (void)
void RestoreRecStatus (void)
bool TryAnotherShowing (RecordingInfo *p, bool samePriority, bool preserveLive=false)
void SchedNewRecords (void)
void MoveHigherRecords (bool move_this=true)
void SchedPreserveLiveTV (void)
void PruneRedundants (void)
void UpdateNextRecord (void)
bool ChangeRecordingEnd (RecordingInfo *oldp, RecordingInfo *newp)
bool CheckShutdownServer (int prerollseconds, QDateTime &idleSince, bool &blockShutdown)
void ShutdownServer (int prerollseconds, QDateTime &idleSince)
void PutInactiveSlavesToSleep (void)
bool WakeUpSlave (QString slaveHostname, bool setWakingStatus=true)
void WakeUpSlaves (void)
int FillRecordingDir (const QString &title, const QString &hostname, const QString &storagegroup, const QDateTime &recstartts, const QDateTime &recendts, uint cardid, QString &recording_dir, const RecList &reclist)
void FillDirectoryInfoCache (bool force=false)
int CalcTimeToNextHandleRecordingEvent (const QDateTime &curtime, RecConstIter startIter, const RecList &reclist, int prerollseconds, int max_sleep)
void OldRecordedFixups (void)
void ResetDuplicates (uint recordid, uint findid, const QString &title, const QString &subtitle, const QString &descrip, const QString &programid)
bool HandleReschedule (void)
bool HandleRunSchedulerStartup (int prerollseconds, int idleWaitForRecordingTime)
void HandleWakeSlave (RecordingInfo &ri, int prerollseconds)
bool HandleRecording (RecordingInfo &ri, bool &statuschanged, int prerollseconds, int tuningTimeout)
void HandleTuning (RecordingInfo &ri, bool &statuschanged, int tuningTimeout)
void HandleRecordingStatusChange (RecordingInfo &ri, RecStatusTypes recStatus, const QString &details)
void HandleIdleShutdown (bool &blockShutdown, QDateTime &idleSince, int prerollseconds, int idleTimeoutSecs, int idleWaitForRecordingTime, bool &statuschanged)
void EnqueueMatch (uint recordid, uint sourceid, uint mplexid, const QDateTime maxstarttime, const QString &why)
void EnqueueCheck (const RecordingInfo &recinfo, const QString &why)
void EnqueuePlace (const QString &why)

Private Attributes

QString recordTable
QString priorityTable
MythDeque< QStringList > reschedQueue
QMutex schedLock
QMutex recordmatchLock
QWaitCondition reschedWait
RecList reclist
RecList worklist
RecList retrylist
RecList conflictlist
QMap< uint, RecListrecordidlistmap
QMap< QString, RecListtitlelistmap
InputGroupMap igrp
QDateTime schedTime
bool reclist_changed
bool specsched
bool schedMoveHigher
bool schedulingEnabled
QMap< int, boolschedAfterStartMap
QMap< int, EncoderLink * > * m_tvList
AutoExpirem_expirer
QMap< QString, boolrecPendingList
bool doRun
MainServerm_mainServer
QMutex resetIdleTime_lock
bool resetIdleTime
bool m_isShuttingDown
MSqlQueryInfo dbConn
QDateTime fsInfoCacheFillTime
QMap< QString, FileSystemInfofsInfoCache
int error
QSet< QString > sysEvents [4]
QDateTime livetvTime
int livetvpriority
int prefinputpri
QMap< QString, boolhasLaterList
IsSameCacheType cache_is_same_program

Detailed Description

Definition at line 33 of file scheduler.h.


Member Typedef Documentation

typedef pair<const RecordingInfo*,const RecordingInfo*> Scheduler::IsSameKey [private]

Definition at line 245 of file scheduler.h.

typedef QMap<IsSameKey,bool> Scheduler::IsSameCacheType [private]

Definition at line 246 of file scheduler.h.


Constructor & Destructor Documentation

Scheduler::Scheduler ( bool  runthread,
QMap< int, EncoderLink * > *  tvList,
QString  recordTbl = "record",
Scheduler master_sched = NULL 
)

Definition at line 54 of file scheduler.cpp.

Definition at line 111 of file scheduler.cpp.


Member Function Documentation

Definition at line 139 of file scheduler.cpp.

Referenced by MainServer::Stop().

void Scheduler::Wait ( void  ) [inline]

Definition at line 41 of file scheduler.h.

Referenced by MainServer::Stop().

void Scheduler::SetExpirer ( AutoExpire autoExpirer) [inline]

Definition at line 43 of file scheduler.h.

Referenced by run_backend().

void Scheduler::Reschedule ( const QStringList &  request)
void Scheduler::RescheduleMatch ( uint  recordid,
uint  sourceid,
uint  mplexid,
const QDateTime &  maxstarttime,
const QString &  why 
) [inline]

Definition at line 46 of file scheduler.h.

Referenced by MainServer::HandleGetPendingRecordings().

void Scheduler::RescheduleCheck ( const RecordingInfo recinfo,
const QString &  why 
) [inline]

Definition at line 50 of file scheduler.h.

Referenced by MainServer::DoHandleDeleteRecording().

void Scheduler::ReschedulePlace ( const QString &  why) [inline]

Definition at line 1639 of file scheduler.cpp.

Referenced by MainServer::customEvent().

Parameters:
recordidRecord ID of recording that has changed, or 0 if anything might have been changed.

Definition at line 408 of file scheduler.cpp.

Referenced by handle_command(), and MainServer::HandleGetPendingRecordings().

Definition at line 496 of file scheduler.cpp.

Referenced by handle_command().

Definition at line 570 of file scheduler.cpp.

Referenced by MainServer::customEvent(), and MainServer::DoHandleStopRecording().

void Scheduler::UpdateRecStatus ( uint  cardid,
uint  chanid,
const QDateTime &  startts,
RecStatusType  recstatus,
const QDateTime &  recendts 
)

Definition at line 628 of file scheduler.cpp.

bool Scheduler::GetAllPending ( RecList retList) const
void Scheduler::GetAllPending ( QStringList &  strList) const [virtual]

Implements MythScheduler.

Definition at line 1597 of file scheduler.cpp.

QMap< QString, ProgramInfo * > Scheduler::GetRecording ( void  ) const [virtual]

Implements MythScheduler.

Definition at line 1564 of file scheduler.cpp.

Referenced by MainServer::HandleQueryRecordings().

void Scheduler::GetAllScheduled ( QStringList &  strList) [static]

Returns all scheduled programs serialized into a QStringList.

Definition at line 1615 of file scheduler.cpp.

Referenced by Dvr::GetRecordScheduleList(), and MainServer::HandleGetScheduledRecordings().

void Scheduler::GetAllScheduled ( RecList proglist) [static]

Returns all scheduled programs.

Note:
Caller is responsible for deleting the RecordingInfo's returned.

Definition at line 4363 of file scheduler.cpp.

void Scheduler::getConflicting ( RecordingInfo pginfo,
QStringList &  strlist 
)

Definition at line 1519 of file scheduler.cpp.

Referenced by MainServer::HandleGetConflictingRecordings().

void Scheduler::getConflicting ( RecordingInfo pginfo,
RecList retlist 
)

Definition at line 1535 of file scheduler.cpp.

void Scheduler::PrintList ( bool  onlyFutureRecordings = false) [inline]

Definition at line 75 of file scheduler.h.

Referenced by handle_command(), HandleReschedule(), and PrintList().

void Scheduler::PrintList ( RecList list,
bool  onlyFutureRecordings = false 
)

Definition at line 509 of file scheduler.cpp.

void Scheduler::PrintRec ( const RecordingInfo p,
const char *  prefix = NULL 
)

Definition at line 537 of file scheduler.cpp.

Referenced by MoveHigherRecords(), PrintList(), SchedNewRecords(), and TryAnotherShowing().

Definition at line 146 of file scheduler.cpp.

Referenced by MainServer::MainServer(), and MainServer::Stop().

Definition at line 734 of file scheduler.cpp.

Referenced by MainServer::HandleAnnounce().

Definition at line 808 of file scheduler.cpp.

Referenced by MainServer::HandleSlaveDisconnectedEvent().

Definition at line 85 of file scheduler.h.

Referenced by run_backend().

Definition at line 86 of file scheduler.h.

Definition at line 4526 of file scheduler.cpp.

Referenced by MainServer::customEvent().

Definition at line 151 of file scheduler.cpp.

Referenced by MainServer::customEvent().

Definition at line 5127 of file scheduler.cpp.

Referenced by HandleRunSchedulerStartup().

Definition at line 1580 of file scheduler.cpp.

Referenced by MainServer::customEvent().

int Scheduler::GetError ( void  ) const [inline]

Definition at line 94 of file scheduler.h.

Referenced by run_backend().

void Scheduler::run ( void  ) [protected, virtual]

Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.

Note:
If you override this method you must call RunProlog before you do any work and RunEpilog before you exit the run method.

Reimplemented from MThread.

Definition at line 1762 of file scheduler.cpp.

bool Scheduler::VerifyCards ( void  ) [private]

Definition at line 158 of file scheduler.cpp.

Referenced by Scheduler().

Definition at line 3634 of file scheduler.cpp.

Referenced by FillRecordListFromDB(), and HandleReschedule().

Definition at line 3682 of file scheduler.cpp.

Referenced by FillRecordListFromDB(), and HandleReschedule().

Definition at line 3698 of file scheduler.cpp.

Referenced by FillRecordListFromDB(), and HandleReschedule().

Definition at line 358 of file scheduler.cpp.

Referenced by FillRecordListFromDB(), and HandleReschedule().

void Scheduler::UpdateMatches ( uint  recordid,
uint  sourceid,
uint  mplexid,
const QDateTime  maxstarttime 
) [private]

Definition at line 3449 of file scheduler.cpp.

Referenced by FillRecordListFromDB(), and HandleReschedule().

void Scheduler::UpdateManuals ( uint  recordid) [private]

Definition at line 3186 of file scheduler.cpp.

Referenced by BuildNewRecordsQueries().

Definition at line 831 of file scheduler.cpp.

Referenced by FillRecordList().

Definition at line 845 of file scheduler.cpp.

Referenced by FillRecordList().

Definition at line 3806 of file scheduler.cpp.

Referenced by FillRecordList().

Definition at line 4210 of file scheduler.cpp.

Referenced by FillRecordList().

void Scheduler::BuildNewRecordsQueries ( uint  recordid,
QStringList &  from,
QStringList &  where,
MSqlBindings bindings 
) [private]

Definition at line 3287 of file scheduler.cpp.

Referenced by UpdateMatches().

Definition at line 893 of file scheduler.cpp.

Referenced by FillRecordList().

Definition at line 917 of file scheduler.cpp.

Referenced by FillRecordList().

Definition at line 935 of file scheduler.cpp.

Referenced by FillRecordList().

bool Scheduler::IsBusyRecording ( const RecordingInfo rcinfo) [private]

Definition at line 1679 of file scheduler.cpp.

Referenced by HandleRecording().

bool Scheduler::IsSameProgram ( const RecordingInfo a,
const RecordingInfo b 
) const [private]

Definition at line 943 of file scheduler.cpp.

Referenced by MarkShowingsList(), and TryAnotherShowing().

bool Scheduler::FindNextConflict ( const RecList cardlist,
const RecordingInfo p,
RecConstIter iter,
int  openEnd = 0 
) const [private]

Definition at line 959 of file scheduler.cpp.

Referenced by FindConflict(), getConflicting(), MoveHigherRecords(), and TryAnotherShowing().

const RecordingInfo * Scheduler::FindConflict ( const RecordingInfo p,
int  openEnd = 0 
) const [private]

Definition at line 1041 of file scheduler.cpp.

Referenced by SchedNewRecords(), and TryAnotherShowing().

Definition at line 1052 of file scheduler.cpp.

Referenced by MoveHigherRecords(), SchedNewRecords(), and TryAnotherShowing().

void Scheduler::MarkShowingsList ( RecList showinglist,
RecordingInfo p 
) [private]

Definition at line 1073 of file scheduler.cpp.

Referenced by MarkOtherShowings().

Definition at line 1100 of file scheduler.cpp.

Referenced by MoveHigherRecords().

Definition at line 1110 of file scheduler.cpp.

Referenced by MoveHigherRecords().

bool Scheduler::TryAnotherShowing ( RecordingInfo p,
bool  samePriority,
bool  preserveLive = false 
) [private]

Definition at line 1120 of file scheduler.cpp.

Referenced by MoveHigherRecords().

Definition at line 1244 of file scheduler.cpp.

Referenced by FillRecordList().

void Scheduler::MoveHigherRecords ( bool  move_this = true) [private]

Definition at line 1315 of file scheduler.cpp.

Referenced by SchedNewRecords(), and SchedPreserveLiveTV().

Definition at line 5073 of file scheduler.cpp.

Referenced by FillRecordList().

Definition at line 1378 of file scheduler.cpp.

Referenced by FillRecordList().

Definition at line 1454 of file scheduler.cpp.

Referenced by HandleRecordingStatusChange(), and HandleReschedule().

bool Scheduler::ChangeRecordingEnd ( RecordingInfo oldp,
RecordingInfo newp 
) [private]

Definition at line 678 of file scheduler.cpp.

Referenced by AddNewRecords().

bool Scheduler::CheckShutdownServer ( int  prerollseconds,
QDateTime &  idleSince,
bool blockShutdown 
) [private]

Definition at line 2806 of file scheduler.cpp.

Referenced by HandleIdleShutdown().

void Scheduler::ShutdownServer ( int  prerollseconds,
QDateTime &  idleSince 
) [private]

Definition at line 2862 of file scheduler.cpp.

Referenced by HandleIdleShutdown().

Definition at line 2954 of file scheduler.cpp.

Referenced by run().

bool Scheduler::WakeUpSlave ( QString  slaveHostname,
bool  setWakingStatus = true 
) [private]

Definition at line 3104 of file scheduler.cpp.

Referenced by HandleWakeSlave(), and WakeUpSlaves().

Definition at line 3155 of file scheduler.cpp.

Referenced by Scheduler().

int Scheduler::FillRecordingDir ( const QString &  title,
const QString &  hostname,
const QString &  storagegroup,
const QDateTime &  recstartts,
const QDateTime &  recendts,
uint  cardid,
QString &  recording_dir,
const RecList reclist 
) [private]

Definition at line 4552 of file scheduler.cpp.

Referenced by GetNextLiveTVDir(), and HandleRecording().

Definition at line 5045 of file scheduler.cpp.

Referenced by FillRecordingDir().

int Scheduler::CalcTimeToNextHandleRecordingEvent ( const QDateTime &  curtime,
RecConstIter  startIter,
const RecList reclist,
int  prerollseconds,
int  max_sleep 
) [private]

Definition at line 1940 of file scheduler.cpp.

Referenced by run().

Definition at line 1722 of file scheduler.cpp.

Referenced by run().

void Scheduler::ResetDuplicates ( uint  recordid,
uint  findid,
const QString &  title,
const QString &  subtitle,
const QString &  descrip,
const QString &  programid 
) [private]

Definition at line 2006 of file scheduler.cpp.

Referenced by HandleReschedule().

Definition at line 2081 of file scheduler.cpp.

Referenced by run().

bool Scheduler::HandleRunSchedulerStartup ( int  prerollseconds,
int  idleWaitForRecordingTime 
) [private]

Definition at line 2256 of file scheduler.cpp.

Referenced by run().

void Scheduler::HandleWakeSlave ( RecordingInfo ri,
int  prerollseconds 
) [private]

Definition at line 2306 of file scheduler.cpp.

Referenced by run().

bool Scheduler::HandleRecording ( RecordingInfo ri,
bool statuschanged,
int  prerollseconds,
int  tuningTimeout 
) [private]

Definition at line 2410 of file scheduler.cpp.

Referenced by run().

void Scheduler::HandleTuning ( RecordingInfo ri,
bool statuschanged,
int  tuningTimeout 
) [private]

Definition at line 2629 of file scheduler.cpp.

Referenced by HandleRecording().

void Scheduler::HandleRecordingStatusChange ( RecordingInfo ri,
RecStatusTypes  recStatus,
const QString &  details 
) [private]

Definition at line 2589 of file scheduler.cpp.

Referenced by HandleRecording(), and HandleTuning().

void Scheduler::HandleIdleShutdown ( bool blockShutdown,
QDateTime &  idleSince,
int  prerollseconds,
int  idleTimeoutSecs,
int  idleWaitForRecordingTime,
bool statuschanged 
) [private]

Definition at line 2676 of file scheduler.cpp.

Referenced by run().

void Scheduler::EnqueueMatch ( uint  recordid,
uint  sourceid,
uint  mplexid,
const QDateTime  maxstarttime,
const QString &  why 
) [inline, private]

Definition at line 186 of file scheduler.h.

Referenced by AddRecording(), and run().

void Scheduler::EnqueueCheck ( const RecordingInfo recinfo,
const QString &  why 
) [inline, private]

Definition at line 190 of file scheduler.h.

Referenced by UpdateRecStatus().

void Scheduler::EnqueuePlace ( const QString &  why) [inline, private]

Definition at line 193 of file scheduler.h.

Referenced by HandleRecording(), HandleReschedule(), and HandleWakeSlave().


Member Data Documentation

QString Scheduler::recordTable [private]
QString Scheduler::priorityTable [private]

Definition at line 101 of file scheduler.h.

Referenced by AddNewRecords(), and Scheduler().

MythDeque<QStringList> Scheduler::reschedQueue [private]

Definition at line 194 of file scheduler.h.

Referenced by HandleReschedule(), Reschedule(), and run().

QMutex Scheduler::schedLock [mutable, private]
QMutex Scheduler::recordmatchLock [private]

Definition at line 198 of file scheduler.h.

Referenced by FillRecordListFromDB(), and HandleReschedule().

QWaitCondition Scheduler::reschedWait [private]

Definition at line 199 of file scheduler.h.

Referenced by AddRecording(), Reschedule(), run(), Scheduler(), Stop(), UpdateRecStatus(), and ~Scheduler().

Definition at line 203 of file scheduler.h.

Referenced by BuildListMaps(), ClearListMaps(), FindConflict(), and MoveHigherRecords().

Definition at line 204 of file scheduler.h.

Referenced by BuildListMaps(), ClearListMaps(), MarkOtherShowings(), and TryAnotherShowing().

QMap<QString, RecList> Scheduler::titlelistmap [private]

Definition at line 205 of file scheduler.h.

Referenced by BuildListMaps(), ClearListMaps(), and MarkOtherShowings().

Definition at line 206 of file scheduler.h.

Referenced by FindNextConflict(), IsBusyRecording(), and TryAnotherShowing().

QDateTime Scheduler::schedTime [private]

Definition at line 211 of file scheduler.h.

Referenced by AddNewRecords(), ChangeRecordingEnd(), and UpdateNextRecord().

Definition at line 212 of file scheduler.h.

Referenced by FillRecordList(), and MoveHigherRecords().

Definition at line 213 of file scheduler.h.

Referenced by HandleRecording().

Definition at line 214 of file scheduler.h.

Referenced by AddNewRecords(), and HandleRecordingStatusChange().

QMap<int, EncoderLink *>* Scheduler::m_tvList [private]

Definition at line 217 of file scheduler.h.

Referenced by FillRecordingDir(), GetNextLiveTVDir(), and HandleRecording().

QMap<QString, bool> Scheduler::recPendingList [private]

Definition at line 221 of file scheduler.h.

Referenced by AddNewRecords(), run(), Scheduler(), Stop(), and ~Scheduler().

Definition at line 225 of file scheduler.h.

Referenced by HandleIdleShutdown(), and ResetIdleTime().

Definition at line 226 of file scheduler.h.

Referenced by HandleIdleShutdown(), and ResetIdleTime().

Definition at line 228 of file scheduler.h.

Referenced by HandleIdleShutdown(), and ShutdownServer().

QDateTime Scheduler::fsInfoCacheFillTime [private]

Definition at line 231 of file scheduler.h.

Referenced by FillDirectoryInfoCache(), HandleReschedule(), and Scheduler().

QMap<QString, FileSystemInfo> Scheduler::fsInfoCache [private]

Definition at line 232 of file scheduler.h.

Referenced by FillDirectoryInfoCache(), and FillRecordingDir().

int Scheduler::error [private]

Definition at line 234 of file scheduler.h.

Referenced by Scheduler(), and VerifyCards().

QSet<QString> Scheduler::sysEvents[4] [private]

Definition at line 236 of file scheduler.h.

Referenced by HandleWakeSlave().

QDateTime Scheduler::livetvTime [private]

Definition at line 239 of file scheduler.h.

Referenced by HandleRecording(), SchedNewRecords(), and SchedPreserveLiveTV().

Definition at line 240 of file scheduler.h.

Referenced by SchedPreserveLiveTV(), and TryAnotherShowing().

Definition at line 241 of file scheduler.h.

Referenced by AddNewRecords(), and TryAnotherShowing().

QMap<QString, bool> Scheduler::hasLaterList [private]

Definition at line 242 of file scheduler.h.

Referenced by HandleRecording(), and TryAnotherShowing().

Definition at line 247 of file scheduler.h.

Referenced by ClearListMaps(), and IsSameProgram().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends