1 /************************************************************** 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 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 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. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef ADC_ADC_MSG_HXX 25 #define ADC_ADC_MSG_HXX 26 27 28 29 // USED SERVICES 30 // BASE CLASSES 31 // COMPONENTS 32 // PARAMETERS 33 namespace csv 34 { 35 class File; 36 } 37 38 39 namespace autodoc 40 { 41 42 43 /** Gathers, sorts and displays (mainly diagnostic) messages to the 44 user of Autodoc. 45 */ 46 class Messages 47 { 48 public: 49 // LIFECYCLE 50 Messages(); 51 ~Messages(); 52 // OPERATIONS 53 void WriteFile( 54 const String & i_sOutputFilePath); 55 // INQUIRY 56 57 // ACCESS 58 void Out_MissingDoc( 59 const String & i_sEntity, 60 const String & i_sFile, 61 uintt i_nLine); 62 void Out_ParseError( 63 const String & i_sFile, 64 uintt i_nLine); 65 void Out_InvalidConstSymbol( 66 const String & i_sText, 67 const String & i_sFile, 68 uintt i_nLine); 69 void Out_UnresolvedLink( 70 const String & i_sLinkText, 71 const String & i_sFile, 72 uintt i_nLine); 73 void Out_TypeVsMemberMisuse( 74 const String & i_sLinkText, 75 const String & i_sFile, 76 uintt i_nLine); 77 78 static Messages & The_(); 79 80 private: 81 struct Location 82 { 83 String sFile; 84 uintt nLine; 85 86 Location( 87 const String & i_file, 88 uintt i_line) 89 : sFile(i_file), 90 nLine(i_line) {} 91 bool operator<( 92 const Location & i_other) const 93 { int cmp = csv::compare(sFile,i_other.sFile); 94 return cmp < 0 95 ? true 96 : cmp > 0 97 ? false 98 : nLine < i_other.nLine; 99 } 100 }; 101 102 typedef std::map<Location,String> MessageMap; 103 104 // Locals 105 void AddValue( 106 MessageMap & o_dest, 107 const String & i_sText, 108 const String & i_sFile, 109 uintt i_nLine ); 110 void WriteParagraph( 111 csv::File & o_out, 112 const MessageMap & i_source, 113 const String & i_title, 114 const String & i_firstIntermediateText ); 115 116 // DATA 117 MessageMap aMissingDocs; 118 MessageMap aParseErrors; 119 MessageMap aInvalidConstSymbols; 120 MessageMap aUnresolvedLinks; 121 MessageMap aTypeVsMemberMisuses; 122 }; 123 124 125 126 // IMPLEMENTATION 127 128 129 } // namespace autodoc 130 131 inline autodoc::Messages & 132 TheMessages() 133 { 134 return autodoc::Messages::The_(); 135 } 136 137 #endif 138