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

ModeManager.cpp

00001 // 00002 // Copyright 2004 P&P Software GmbH - All Rights Reserved 00003 // 00004 // ModeManager.cpp 00005 // 00006 // Version 1.0 00007 // Date 13.04.03 (Version 1.0) 00008 // Author A. Pasetti (P&P Software) 00009 // 00010 // Change Record: 00011 00012 #include "../GeneralInclude/CompilerSwitches.h" 00013 #include "../GeneralInclude/DebugSupport.h" 00014 #include "../GeneralInclude/Constants.h" 00015 #include "../Base/CC_RootObject.h" 00016 #include "ModeManager.h" 00017 00018 ModeManager::ModeManager(void) { 00019 enabledStatus = pNULL; 00020 transitionsEnabled = ENABLED; 00021 numberOfModes = 0; 00022 currentMode = -1; 00023 defaultMode = -1; 00024 } 00025 00026 void ModeManager::setMode(TD_Mode newMode) { 00027 assert( (newMode >= 0) && (newMode < numberOfModes) ); 00028 assert(isObjectConfigured()); 00029 00030 if (newMode==currentMode) 00031 return; 00032 00033 if (isTransitionEnabled() && isTransitionEnabled(newMode)) { 00034 currentMode=newMode; 00035 CC_RootObject::getEventRepository()->create(this,EVT_MOD_TRANS_PERFORMED); 00036 } 00037 else 00038 CC_RootObject::getEventRepository()->create(this,EVT_MOD_TRANS_INHIBITED); 00039 } 00040 00041 void ModeManager::setNumberOfModes(TD_Mode nOfModes) { 00042 assert(numberOfModes == 0); // should be called only once 00043 assert(nOfModes > 0); 00044 00045 numberOfModes = nOfModes; 00046 enabledStatus = new bool[numberOfModes]; 00047 for (TD_Mode i=0; i<numberOfModes; i++) 00048 enabledStatus[i] = ENABLED; 00049 allocateMemory(numberOfModes); 00050 } 00051 00052 void ModeManager::setDefaultMode(TD_Mode defMode) { 00053 assert( (defMode >= 0) && (defMode < numberOfModes) ); 00054 if ( (defMode >= 0) && (defMode < numberOfModes) ) 00055 defaultMode = defMode; 00056 else 00057 CC_RootObject::getEventRepository()->create(this,EVT_ILLEGAL_MM); 00058 } 00059 00060 void ModeManager::reset(void) { 00061 assert( isObjectConfigured() ); 00062 currentMode = defaultMode; 00063 for (int i=0; i<numberOfModes; i++) 00064 enabledStatus[i] = ENABLED; 00065 transitionsEnabled = ENABLED; 00066 } 00067 00068 void ModeManager::setTransitionEnableStatus(bool enabled) { 00069 assert( isObjectConfigured() ); 00070 transitionsEnabled = enabled; 00071 } 00072 00073 void ModeManager::setTransitionEnableStatus(TD_Mode toMode, bool enabled) { 00074 assert( isObjectConfigured() ); 00075 assert( (toMode >= 0) && (toMode < numberOfModes) ); 00076 if ( (toMode >= 0) && (toMode < numberOfModes) ) 00077 enabledStatus[toMode] = enabled; 00078 else 00079 CC_RootObject::getEventRepository()->create(this,EVT_ILLEGAL_MM); 00080 } 00081 00082 bool ModeManager::isObjectConfigured(void) { 00083 return (CC_RootObject::isObjectConfigured() && 00084 numberOfModes>0 && defaultMode>=0); 00085 }
Copyright 2003 P&P Software GmbH - All Rights Reserved