| 106 | |
| 107 | |
| 108 | void CompatOptionManager::EnableFlag |
| 109 | ( |
| 110 | CompatOptionFlags flag, |
| 111 | uint32_t defaultval |
| 112 | ) |
| 113 | { |
| 114 | for (uint32_t i = 0; i < m_availableFlagsCount; i++) { |
| 115 | if (m_availableFlags[i].flag == flag) { |
| 116 | m_enabledCompatFlags[m_availableFlags[i].name] = flag; |
| 117 | m_CompatVals[flag].type = m_availableFlags[i].type; |
| 118 | m_CompatVals[flag].changed = false; |
| 119 | switch (m_availableFlags[i].type) |
| 120 | { |
| 121 | case COMPAT_FLAG_TYPE_BOOL: |
| 122 | if (defaultval > 2) { |
| 123 | Log::Write(LogLevel_Warning, m_owner->GetNodeId(), "EnableFlag: Default Value for %s is not a Bool", m_availableFlags[i].name.c_str()); |
| 124 | defaultval = 0; |
| 125 | } |
| 126 | m_CompatVals[flag].valBool = defaultval == 0 ? false : true; |
| 127 | break; |
| 128 | case COMPAT_FLAG_TYPE_BYTE: |
| 129 | if (defaultval > UINT8_MAX) { |
| 130 | Log::Write(LogLevel_Warning, m_owner->GetNodeId(), "EnableFlag: Default Value for %s is larger than a byte", m_availableFlags[i].name.c_str()); |
| 131 | defaultval = 0; |
| 132 | } |
| 133 | m_CompatVals[flag].valByte = defaultval; |
| 134 | break; |
| 135 | case COMPAT_FLAG_TYPE_SHORT: |
| 136 | if (defaultval > UINT16_MAX) { |
| 137 | Log::Write(LogLevel_Warning, m_owner->GetNodeId(), "EnableFlag: Default Value for %s is larger than a short", m_availableFlags[i].name.c_str()); |
| 138 | defaultval = 0; |
| 139 | } |
| 140 | m_CompatVals[flag].valShort = defaultval; |
| 141 | break; |
| 142 | case COMPAT_FLAG_TYPE_INT: |
| 143 | if (defaultval > UINT32_MAX) { |
| 144 | Log::Write(LogLevel_Warning, m_owner->GetNodeId(), "EnableFlag: Default Value for %s is larger than a int", m_availableFlags[i].name.c_str()); |
| 145 | defaultval = 0; |
| 146 | } |
| 147 | m_CompatVals[flag].valInt = defaultval; |
| 148 | break; |
| 149 | } |
| 150 | } |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | void CompatOptionManager::ReadXML |
| 155 | ( |
no test coverage detected