| acceleratorconfigurationreader.cxx (30acf5e8) | acceleratorconfigurationreader.cxx (46d9d397) |
|---|---|
| 1/************************************************************** | 1/************************************************************** |
| 2 * | 2 * |
| 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at | 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at |
| 10 * | 10 * |
| 11 * http://www.apache.org/licenses/LICENSE-2.0 | 11 * http://www.apache.org/licenses/LICENSE-2.0 |
| 12 * | 12 * |
| 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. | 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. |
| 19 * | 19 * |
| 20 *************************************************************/ 21 22 23 24// MARKER(update_precomp.py): autogen include statement, do not remove 25#include "precompiled_framework.hxx" 26#include <xml/acceleratorconfigurationreader.hxx> 27 --- 20 unchanged lines hidden (view full) --- 48//_______________________________________________ 49// namespace 50 51namespace framework{ 52 53//----------------------------------------------- 54/* Throws a SaxException in case a wrong formatted XML 55 structure was detected. | 20 *************************************************************/ 21 22 23 24// MARKER(update_precomp.py): autogen include statement, do not remove 25#include "precompiled_framework.hxx" 26#include <xml/acceleratorconfigurationreader.hxx> 27 --- 20 unchanged lines hidden (view full) --- 48//_______________________________________________ 49// namespace 50 51namespace framework{ 52 53//----------------------------------------------- 54/* Throws a SaxException in case a wrong formatted XML 55 structure was detected. |
| 56 | 56 |
| 57 This macro combined the given comment with a generic 58 way to find out the XML line (where the error occurred) 59 to format a suitable message. | 57 This macro combined the given comment with a generic 58 way to find out the XML line (where the error occurred) 59 to format a suitable message. |
| 60 | 60 |
| 61 @param COMMENT | 61 @param COMMENT |
| 62 an ascii string, which describe the problem. | 62 an ascii string, which describes the problem. |
| 63 */ 64#define THROW_PARSEEXCEPTION(COMMENT) \ 65 { \ 66 ::rtl::OUStringBuffer sMessage(256); \ 67 sMessage.append (implts_getErrorLineString()); \ 68 sMessage.appendAscii(COMMENT ); \ 69 \ 70 throw css::xml::sax::SAXException( \ 71 sMessage.makeStringAndClear(), \ 72 static_cast< css::xml::sax::XDocumentHandler* >(this), \ 73 css::uno::Any()); \ 74 } 75 | 63 */ 64#define THROW_PARSEEXCEPTION(COMMENT) \ 65 { \ 66 ::rtl::OUStringBuffer sMessage(256); \ 67 sMessage.append (implts_getErrorLineString()); \ 68 sMessage.appendAscii(COMMENT ); \ 69 \ 70 throw css::xml::sax::SAXException( \ 71 sMessage.makeStringAndClear(), \ 72 static_cast< css::xml::sax::XDocumentHandler* >(this), \ 73 css::uno::Any()); \ 74 } 75 |
| 76//----------------------------------------------- | 76//----------------------------------------------- |
| 77// XInterface 78DEFINE_XINTERFACE_1(AcceleratorConfigurationReader , 79 OWeakObject , 80 DIRECT_INTERFACE(css::xml::sax::XDocumentHandler)) | 77// XInterface 78DEFINE_XINTERFACE_1(AcceleratorConfigurationReader , 79 OWeakObject , 80 DIRECT_INTERFACE(css::xml::sax::XDocumentHandler)) |
| 81 | 81 |
| 82//----------------------------------------------- 83AcceleratorConfigurationReader::AcceleratorConfigurationReader(AcceleratorCache& rContainer) 84 : ThreadHelpBase (&Application::GetSolarMutex()) 85 , OWeakObject ( ) 86 , m_rContainer (rContainer ) 87 , m_bInsideAcceleratorList(sal_False ) 88 , m_bInsideAcceleratorItem(sal_False ) 89{ 90} | 82//----------------------------------------------- 83AcceleratorConfigurationReader::AcceleratorConfigurationReader(AcceleratorCache& rContainer) 84 : ThreadHelpBase (&Application::GetSolarMutex()) 85 , OWeakObject ( ) 86 , m_rContainer (rContainer ) 87 , m_bInsideAcceleratorList(sal_False ) 88 , m_bInsideAcceleratorItem(sal_False ) 89{ 90} |
| 91 | 91 |
| 92//----------------------------------------------- 93AcceleratorConfigurationReader::~AcceleratorConfigurationReader() 94{ 95} | 92//----------------------------------------------- 93AcceleratorConfigurationReader::~AcceleratorConfigurationReader() 94{ 95} |
| 96 | 96 |
| 97//----------------------------------------------- 98void SAL_CALL AcceleratorConfigurationReader::startDocument() 99 throw(css::xml::sax::SAXException, 100 css::uno::RuntimeException ) 101{ 102} 103 104//----------------------------------------------- 105void SAL_CALL AcceleratorConfigurationReader::endDocument() 106 throw(css::xml::sax::SAXException, 107 css::uno::RuntimeException ) 108{ 109 // The xml file seems to be corrupted. | 97//----------------------------------------------- 98void SAL_CALL AcceleratorConfigurationReader::startDocument() 99 throw(css::xml::sax::SAXException, 100 css::uno::RuntimeException ) 101{ 102} 103 104//----------------------------------------------- 105void SAL_CALL AcceleratorConfigurationReader::endDocument() 106 throw(css::xml::sax::SAXException, 107 css::uno::RuntimeException ) 108{ 109 // The xml file seems to be corrupted. |
| 110 // Because we found no end-tags ... at least for | 110 // Because we found no end-tags... at least for |
| 111 // one list or item. 112 if ( 113 (m_bInsideAcceleratorList) || 114 (m_bInsideAcceleratorItem) 115 ) 116 { 117 THROW_PARSEEXCEPTION("No matching start or end element 'acceleratorlist' found!") 118 } 119} 120 121//----------------------------------------------- 122void SAL_CALL AcceleratorConfigurationReader::startElement(const ::rtl::OUString& sElement , 123 const css::uno::Reference< css::xml::sax::XAttributeList >& xAttributeList) 124 throw(css::xml::sax::SAXException, 125 css::uno::RuntimeException ) 126{ 127 EXMLElement eElement = AcceleratorConfigurationReader::implst_classifyElement(sElement); | 111 // one list or item. 112 if ( 113 (m_bInsideAcceleratorList) || 114 (m_bInsideAcceleratorItem) 115 ) 116 { 117 THROW_PARSEEXCEPTION("No matching start or end element 'acceleratorlist' found!") 118 } 119} 120 121//----------------------------------------------- 122void SAL_CALL AcceleratorConfigurationReader::startElement(const ::rtl::OUString& sElement , 123 const css::uno::Reference< css::xml::sax::XAttributeList >& xAttributeList) 124 throw(css::xml::sax::SAXException, 125 css::uno::RuntimeException ) 126{ 127 EXMLElement eElement = AcceleratorConfigurationReader::implst_classifyElement(sElement); |
| 128 | 128 |
| 129 // Note: We handle "accel:item" before "accel:acceleratorlist" to perform this operation. | 129 // Note: We handle "accel:item" before "accel:acceleratorlist" to perform this operation. |
| 130 // Because an item occurs very often ... a list should occur one times only! | 130 // Because an item occurs very often... a list should occur one time only! |
| 131 if (eElement == E_ELEMENT_ITEM) 132 { 133 if (!m_bInsideAcceleratorList) 134 THROW_PARSEEXCEPTION("An element \"accel:item\" must be embedded into 'accel:acceleratorlist'.") 135 if (m_bInsideAcceleratorItem) 136 THROW_PARSEEXCEPTION("An element \"accel:item\" is not a container.") 137 m_bInsideAcceleratorItem = sal_True; | 131 if (eElement == E_ELEMENT_ITEM) 132 { 133 if (!m_bInsideAcceleratorList) 134 THROW_PARSEEXCEPTION("An element \"accel:item\" must be embedded into 'accel:acceleratorlist'.") 135 if (m_bInsideAcceleratorItem) 136 THROW_PARSEEXCEPTION("An element \"accel:item\" is not a container.") 137 m_bInsideAcceleratorItem = sal_True; |
| 138 139 ::rtl::OUString sCommand; 140 css::awt::KeyEvent aEvent ; 141 | 138 139 ::rtl::OUString sCommand; 140 css::awt::KeyEvent aEvent ; 141 |
| 142 sal_Int16 c = xAttributeList->getLength(); 143 sal_Int16 i = 0; 144 for (i=0; i<c; ++i) 145 { 146 ::rtl::OUString sAttribute = xAttributeList->getNameByIndex(i); 147 ::rtl::OUString sValue = xAttributeList->getValueByIndex(i); 148 EXMLAttribute eAttribute = AcceleratorConfigurationReader::implst_classifyAttribute(sAttribute); 149 switch(eAttribute) 150 { 151 case E_ATTRIBUTE_URL : 152 sCommand = sValue.intern(); 153 break; | 142 sal_Int16 c = xAttributeList->getLength(); 143 sal_Int16 i = 0; 144 for (i=0; i<c; ++i) 145 { 146 ::rtl::OUString sAttribute = xAttributeList->getNameByIndex(i); 147 ::rtl::OUString sValue = xAttributeList->getValueByIndex(i); 148 EXMLAttribute eAttribute = AcceleratorConfigurationReader::implst_classifyAttribute(sAttribute); 149 switch(eAttribute) 150 { 151 case E_ATTRIBUTE_URL : 152 sCommand = sValue.intern(); 153 break; |
| 154 | 154 |
| 155 case E_ATTRIBUTE_KEYCODE : 156 aEvent.KeyCode = m_rKeyMapping->mapIdentifierToCode(sValue); 157 break; | 155 case E_ATTRIBUTE_KEYCODE : 156 aEvent.KeyCode = m_rKeyMapping->mapIdentifierToCode(sValue); 157 break; |
| 158 | 158 |
| 159 case E_ATTRIBUTE_MOD_SHIFT : 160 aEvent.Modifiers |= css::awt::KeyModifier::SHIFT; 161 break; | 159 case E_ATTRIBUTE_MOD_SHIFT : 160 aEvent.Modifiers |= css::awt::KeyModifier::SHIFT; 161 break; |
| 162 163 case E_ATTRIBUTE_MOD_MOD1 : | 162 163 case E_ATTRIBUTE_MOD_MOD1 : |
| 164 aEvent.Modifiers |= css::awt::KeyModifier::MOD1; 165 break; | 164 aEvent.Modifiers |= css::awt::KeyModifier::MOD1; 165 break; |
| 166 167 case E_ATTRIBUTE_MOD_MOD2 : | 166 167 case E_ATTRIBUTE_MOD_MOD2 : |
| 168 aEvent.Modifiers |= css::awt::KeyModifier::MOD2; 169 break; 170 | 168 aEvent.Modifiers |= css::awt::KeyModifier::MOD2; 169 break; 170 |
| 171 case E_ATTRIBUTE_MOD_MOD3 : | 171 case E_ATTRIBUTE_MOD_MOD3 : |
| 172 aEvent.Modifiers |= css::awt::KeyModifier::MOD3; 173 } 174 } | 172 aEvent.Modifiers |= css::awt::KeyModifier::MOD3; 173 } 174 } |
| 175 | 175 |
| 176 // validate command and key event. 177 if ( 178 (!sCommand.getLength()) || 179 (aEvent.KeyCode == 0 ) 180 ) 181 { 182 THROW_PARSEEXCEPTION("XML element does not describe a valid accelerator nor a valid command.") 183 } | 176 // validate command and key event. 177 if ( 178 (!sCommand.getLength()) || 179 (aEvent.KeyCode == 0 ) 180 ) 181 { 182 THROW_PARSEEXCEPTION("XML element does not describe a valid accelerator nor a valid command.") 183 } |
| 184 185 // register key event + command inside cache ... | 184 185 // register key event + command inside cache... |
| 186 // Check for already existing items there. 187 if (!m_rContainer.hasKey(aEvent)) 188 m_rContainer.setKeyCommandPair(aEvent, sCommand); 189 #ifdef ENABLE_WARNINGS 190 else 191 { | 186 // Check for already existing items there. 187 if (!m_rContainer.hasKey(aEvent)) 188 m_rContainer.setKeyCommandPair(aEvent, sCommand); 189 #ifdef ENABLE_WARNINGS 190 else 191 { |
| 192 // Attention: Its not really a reason to throw an exception and kill the office, if the configuration contains 193 // multiple registrations for the same key :-) Show a warning ... and ignore the second item. 194 // THROW_PARSEEXCEPTION("Command is registered for the same key more then once.") | 192 // Attention: It's not really a reason to throw an exception and kill the office, if the configuration contains 193 // multiple registrations for the same key :-) Show a warning... and ignore the second item. 194 // THROW_PARSEEXCEPTION("Command is registered for the same key more than once.") |
| 195 ::rtl::OUStringBuffer sMsg(256); 196 sMsg.appendAscii("Double registration detected.\nCommand = \""); 197 sMsg.append (sCommand ); 198 sMsg.appendAscii("\"\nKeyCode = " ); 199 sMsg.append ((sal_Int32)aEvent.KeyCode ); 200 sMsg.appendAscii("\nModifiers = " ); 201 sMsg.append ((sal_Int32)aEvent.Modifiers ); 202 sMsg.appendAscii("\nIgnore this item!" ); 203 LOG_WARNING("AcceleratorConfigurationReader::startElement()", U2B(sMsg.makeStringAndClear())) 204 } 205 #endif // ENABLE_WARNINGS | 195 ::rtl::OUStringBuffer sMsg(256); 196 sMsg.appendAscii("Double registration detected.\nCommand = \""); 197 sMsg.append (sCommand ); 198 sMsg.appendAscii("\"\nKeyCode = " ); 199 sMsg.append ((sal_Int32)aEvent.KeyCode ); 200 sMsg.appendAscii("\nModifiers = " ); 201 sMsg.append ((sal_Int32)aEvent.Modifiers ); 202 sMsg.appendAscii("\nIgnore this item!" ); 203 LOG_WARNING("AcceleratorConfigurationReader::startElement()", U2B(sMsg.makeStringAndClear())) 204 } 205 #endif // ENABLE_WARNINGS |
| 206 } | 206 } |
| 207 208 if (eElement == E_ELEMENT_ACCELERATORLIST) 209 { 210 if (m_bInsideAcceleratorList) 211 THROW_PARSEEXCEPTION("An element \"accel:acceleratorlist\" cannot be used recursive.") 212 m_bInsideAcceleratorList = sal_True; 213 return; 214 } 215} 216 217//----------------------------------------------- 218void SAL_CALL AcceleratorConfigurationReader::endElement(const ::rtl::OUString& sElement) 219 throw(css::xml::sax::SAXException, 220 css::uno::RuntimeException ) 221{ 222 EXMLElement eElement = AcceleratorConfigurationReader::implst_classifyElement(sElement); | 207 208 if (eElement == E_ELEMENT_ACCELERATORLIST) 209 { 210 if (m_bInsideAcceleratorList) 211 THROW_PARSEEXCEPTION("An element \"accel:acceleratorlist\" cannot be used recursive.") 212 m_bInsideAcceleratorList = sal_True; 213 return; 214 } 215} 216 217//----------------------------------------------- 218void SAL_CALL AcceleratorConfigurationReader::endElement(const ::rtl::OUString& sElement) 219 throw(css::xml::sax::SAXException, 220 css::uno::RuntimeException ) 221{ 222 EXMLElement eElement = AcceleratorConfigurationReader::implst_classifyElement(sElement); |
| 223 | 223 |
| 224 // Note: We handle "accel:item" before "accel:acceleratorlist" to perform this operation. | 224 // Note: We handle "accel:item" before "accel:acceleratorlist" to perform this operation. |
| 225 // Because an item occurs very often ... a list should occur one times only! | 225 // Because an item occurs very often... a list should occur one time only! |
| 226 if (eElement == E_ELEMENT_ITEM) 227 { 228 if (!m_bInsideAcceleratorItem) 229 THROW_PARSEEXCEPTION("Found end element 'accel:item', but no start element.") 230 m_bInsideAcceleratorItem = sal_False; 231 } | 226 if (eElement == E_ELEMENT_ITEM) 227 { 228 if (!m_bInsideAcceleratorItem) 229 THROW_PARSEEXCEPTION("Found end element 'accel:item', but no start element.") 230 m_bInsideAcceleratorItem = sal_False; 231 } |
| 232 | 232 |
| 233 if (eElement == E_ELEMENT_ACCELERATORLIST) 234 { 235 if (!m_bInsideAcceleratorList) 236 THROW_PARSEEXCEPTION("Found end element 'accel:acceleratorlist', but no start element.") 237 m_bInsideAcceleratorList = sal_False; 238 } 239} 240 --- 8 unchanged lines hidden (view full) --- 249void SAL_CALL AcceleratorConfigurationReader::ignorableWhitespace(const ::rtl::OUString&) 250 throw(css::xml::sax::SAXException, 251 css::uno::RuntimeException ) 252{ 253} 254 255//----------------------------------------------- 256void SAL_CALL AcceleratorConfigurationReader::processingInstruction(const ::rtl::OUString& /*sTarget*/, | 233 if (eElement == E_ELEMENT_ACCELERATORLIST) 234 { 235 if (!m_bInsideAcceleratorList) 236 THROW_PARSEEXCEPTION("Found end element 'accel:acceleratorlist', but no start element.") 237 m_bInsideAcceleratorList = sal_False; 238 } 239} 240 --- 8 unchanged lines hidden (view full) --- 249void SAL_CALL AcceleratorConfigurationReader::ignorableWhitespace(const ::rtl::OUString&) 250 throw(css::xml::sax::SAXException, 251 css::uno::RuntimeException ) 252{ 253} 254 255//----------------------------------------------- 256void SAL_CALL AcceleratorConfigurationReader::processingInstruction(const ::rtl::OUString& /*sTarget*/, |
| 257 const ::rtl::OUString& /*sData*/ ) | 257 const ::rtl::OUString& /*sData*/ ) |
| 258 throw(css::xml::sax::SAXException, 259 css::uno::RuntimeException ) 260{ 261} 262 263//----------------------------------------------- 264void SAL_CALL AcceleratorConfigurationReader::setDocumentLocator(const css::uno::Reference< css::xml::sax::XLocator >& xLocator) 265 throw(css::xml::sax::SAXException, 266 css::uno::RuntimeException ) 267{ 268 m_xLocator = xLocator; 269} 270 271//----------------------------------------------- 272AcceleratorConfigurationReader::EXMLElement AcceleratorConfigurationReader::implst_classifyElement(const ::rtl::OUString& sElement) 273{ 274 AcceleratorConfigurationReader::EXMLElement eElement; | 258 throw(css::xml::sax::SAXException, 259 css::uno::RuntimeException ) 260{ 261} 262 263//----------------------------------------------- 264void SAL_CALL AcceleratorConfigurationReader::setDocumentLocator(const css::uno::Reference< css::xml::sax::XLocator >& xLocator) 265 throw(css::xml::sax::SAXException, 266 css::uno::RuntimeException ) 267{ 268 m_xLocator = xLocator; 269} 270 271//----------------------------------------------- 272AcceleratorConfigurationReader::EXMLElement AcceleratorConfigurationReader::implst_classifyElement(const ::rtl::OUString& sElement) 273{ 274 AcceleratorConfigurationReader::EXMLElement eElement; |
| 275 | 275 |
| 276 if (sElement.equals(NS_ELEMENT_ACCELERATORLIST)) 277 eElement = E_ELEMENT_ACCELERATORLIST; 278 else 279 if (sElement.equals(NS_ELEMENT_ITEM)) 280 eElement = E_ELEMENT_ITEM; 281 else 282 throw css::uno::RuntimeException( 283 DECLARE_ASCII("Unknown XML element detected!"), 284 css::uno::Reference< css::xml::sax::XDocumentHandler >()); | 276 if (sElement.equals(NS_ELEMENT_ACCELERATORLIST)) 277 eElement = E_ELEMENT_ACCELERATORLIST; 278 else 279 if (sElement.equals(NS_ELEMENT_ITEM)) 280 eElement = E_ELEMENT_ITEM; 281 else 282 throw css::uno::RuntimeException( 283 DECLARE_ASCII("Unknown XML element detected!"), 284 css::uno::Reference< css::xml::sax::XDocumentHandler >()); |
| 285 286 return eElement; | 285 286 return eElement; |
| 287} 288 289//----------------------------------------------- 290AcceleratorConfigurationReader::EXMLAttribute AcceleratorConfigurationReader::implst_classifyAttribute(const ::rtl::OUString& sAttribute) 291{ 292 AcceleratorConfigurationReader::EXMLAttribute eAttribute; | 287} 288 289//----------------------------------------------- 290AcceleratorConfigurationReader::EXMLAttribute AcceleratorConfigurationReader::implst_classifyAttribute(const ::rtl::OUString& sAttribute) 291{ 292 AcceleratorConfigurationReader::EXMLAttribute eAttribute; |
| 293 | 293 |
| 294 if (sAttribute.equals(NS_ATTRIBUTE_KEYCODE)) 295 eAttribute = E_ATTRIBUTE_KEYCODE; 296 else 297 if (sAttribute.equals(NS_ATTRIBUTE_MOD_SHIFT)) 298 eAttribute = E_ATTRIBUTE_MOD_SHIFT; 299 else 300 if (sAttribute.equals(NS_ATTRIBUTE_MOD_MOD1)) 301 eAttribute = E_ATTRIBUTE_MOD_MOD1; --- 5 unchanged lines hidden (view full) --- 307 eAttribute = E_ATTRIBUTE_MOD_MOD3; 308 else 309 if (sAttribute.equals(NS_ATTRIBUTE_URL)) 310 eAttribute = E_ATTRIBUTE_URL; 311 else 312 throw css::uno::RuntimeException( 313 DECLARE_ASCII("Unknown XML attribute detected!"), 314 css::uno::Reference< css::xml::sax::XDocumentHandler >()); | 294 if (sAttribute.equals(NS_ATTRIBUTE_KEYCODE)) 295 eAttribute = E_ATTRIBUTE_KEYCODE; 296 else 297 if (sAttribute.equals(NS_ATTRIBUTE_MOD_SHIFT)) 298 eAttribute = E_ATTRIBUTE_MOD_SHIFT; 299 else 300 if (sAttribute.equals(NS_ATTRIBUTE_MOD_MOD1)) 301 eAttribute = E_ATTRIBUTE_MOD_MOD1; --- 5 unchanged lines hidden (view full) --- 307 eAttribute = E_ATTRIBUTE_MOD_MOD3; 308 else 309 if (sAttribute.equals(NS_ATTRIBUTE_URL)) 310 eAttribute = E_ATTRIBUTE_URL; 311 else 312 throw css::uno::RuntimeException( 313 DECLARE_ASCII("Unknown XML attribute detected!"), 314 css::uno::Reference< css::xml::sax::XDocumentHandler >()); |
| 315 316 return eAttribute; | 315 316 return eAttribute; |
| 317} 318 319//----------------------------------------------- 320::rtl::OUString AcceleratorConfigurationReader::implts_getErrorLineString() 321{ 322 if (!m_xLocator.is()) | 317} 318 319//----------------------------------------------- 320::rtl::OUString AcceleratorConfigurationReader::implts_getErrorLineString() 321{ 322 if (!m_xLocator.is()) |
| 323 return DECLARE_ASCII("Error during parsing XML. (No further info available ...)"); 324 | 323 return DECLARE_ASCII("Error during parsing XML. (No further info available...)"); 324 |
| 325 ::rtl::OUStringBuffer sMsg(256); 326 sMsg.appendAscii("Error during parsing XML in\nline = "); 327 sMsg.append (m_xLocator->getLineNumber() ); 328 sMsg.appendAscii("\ncolumn = " ); 329 sMsg.append (m_xLocator->getColumnNumber() ); 330 sMsg.appendAscii("." ); 331 return sMsg.makeStringAndClear(); 332} 333 334} // namespace framework | 325 ::rtl::OUStringBuffer sMsg(256); 326 sMsg.appendAscii("Error during parsing XML in\nline = "); 327 sMsg.append (m_xLocator->getLineNumber() ); 328 sMsg.appendAscii("\ncolumn = " ); 329 sMsg.append (m_xLocator->getColumnNumber() ); 330 sMsg.appendAscii("." ); 331 return sMsg.makeStringAndClear(); 332} 333 334} // namespace framework |
| 335 |
|