--------------------------------------------------------------------
| 120 | |
| 121 | // -------------------------------------------------------------------- |
| 122 | G4int G4UIcommand::DoIt(const G4String& parameterList) |
| 123 | { |
| 124 | G4String correctParameters; |
| 125 | std::size_t n_parameterEntry = parameter.size(); |
| 126 | if (n_parameterEntry != 0) { |
| 127 | G4String aToken; |
| 128 | G4String correctToken; |
| 129 | G4Tokenizer parameterToken(parameterList); |
| 130 | for (std::size_t i_thParameter = 0; i_thParameter < n_parameterEntry; ++i_thParameter) { |
| 131 | if (i_thParameter > 0) { |
| 132 | correctParameters.append(" "); |
| 133 | } |
| 134 | aToken = parameterToken(); |
| 135 | if (aToken.length() > 0 && aToken[0] == '"') { |
| 136 | while (aToken.back() != '"' || (aToken.length() == 1 && aToken[0] == '"')) { |
| 137 | G4String additionalToken = parameterToken(); |
| 138 | if (additionalToken.empty()) { |
| 139 | return G4int(fParameterUnreadable + i_thParameter); |
| 140 | } |
| 141 | aToken += " "; |
| 142 | aToken += additionalToken; |
| 143 | } |
| 144 | } |
| 145 | else if (i_thParameter == n_parameterEntry - 1 |
| 146 | && parameter[i_thParameter]->GetParameterType() == 's') |
| 147 | { |
| 148 | G4String anotherToken; |
| 149 | while (!((anotherToken = parameterToken()).empty())) { |
| 150 | std::size_t idxs = anotherToken.find('#'); |
| 151 | if (idxs == std::string::npos) { |
| 152 | aToken += " "; |
| 153 | aToken += anotherToken; |
| 154 | } |
| 155 | else if (idxs > 0) { |
| 156 | aToken += " "; |
| 157 | aToken += anotherToken.substr(0, idxs); |
| 158 | break; |
| 159 | } |
| 160 | else { |
| 161 | break; |
| 162 | } |
| 163 | } |
| 164 | } |
| 165 | |
| 166 | if (aToken.empty() || aToken == "!") { |
| 167 | if (parameter[i_thParameter]->IsOmittable()) { |
| 168 | if (parameter[i_thParameter]->GetCurrentAsDefault()) { |
| 169 | G4Tokenizer cvSt(messenger->GetCurrentValue(this)); |
| 170 | G4String parVal; |
| 171 | for (std::size_t ii = 0; ii < i_thParameter; ++ii) { |
| 172 | parVal = cvSt(); |
| 173 | if (parVal[0] == '"') { |
| 174 | while (parVal.back() != '"') { |
| 175 | G4String additionalToken = cvSt(); |
| 176 | if (additionalToken.empty()) { |
| 177 | return G4int(fParameterUnreadable + i_thParameter); |
| 178 | } |
| 179 | parVal += " "; |
no test coverage detected