1*1c78a5d6SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*1c78a5d6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*1c78a5d6SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*1c78a5d6SAndrew Rist * distributed with this work for additional information 6*1c78a5d6SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*1c78a5d6SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*1c78a5d6SAndrew Rist * "License"); you may not use this file except in compliance 9*1c78a5d6SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*1c78a5d6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*1c78a5d6SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*1c78a5d6SAndrew Rist * software distributed under the License is distributed on an 15*1c78a5d6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*1c78a5d6SAndrew Rist * KIND, either express or implied. See the License for the 17*1c78a5d6SAndrew Rist * specific language governing permissions and limitations 18*1c78a5d6SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*1c78a5d6SAndrew Rist *************************************************************/ 21*1c78a5d6SAndrew Rist 22*1c78a5d6SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef ADC_ADC_MSG_HXX 25cdf0e10cSrcweir #define ADC_ADC_MSG_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir 28cdf0e10cSrcweir 29cdf0e10cSrcweir // USED SERVICES 30cdf0e10cSrcweir // BASE CLASSES 31cdf0e10cSrcweir // COMPONENTS 32cdf0e10cSrcweir // PARAMETERS 33cdf0e10cSrcweir namespace csv 34cdf0e10cSrcweir { 35cdf0e10cSrcweir class File; 36cdf0e10cSrcweir } 37cdf0e10cSrcweir 38cdf0e10cSrcweir 39cdf0e10cSrcweir namespace autodoc 40cdf0e10cSrcweir { 41cdf0e10cSrcweir 42cdf0e10cSrcweir 43cdf0e10cSrcweir /** Gathers, sorts and displays (mainly diagnostic) messages to the 44cdf0e10cSrcweir user of Autodoc. 45cdf0e10cSrcweir */ 46cdf0e10cSrcweir class Messages 47cdf0e10cSrcweir { 48cdf0e10cSrcweir public: 49cdf0e10cSrcweir // LIFECYCLE 50cdf0e10cSrcweir Messages(); 51cdf0e10cSrcweir ~Messages(); 52cdf0e10cSrcweir // OPERATIONS 53cdf0e10cSrcweir void WriteFile( 54cdf0e10cSrcweir const String & i_sOutputFilePath); 55cdf0e10cSrcweir // INQUIRY 56cdf0e10cSrcweir 57cdf0e10cSrcweir // ACCESS 58cdf0e10cSrcweir void Out_MissingDoc( 59cdf0e10cSrcweir const String & i_sEntity, 60cdf0e10cSrcweir const String & i_sFile, 61cdf0e10cSrcweir uintt i_nLine); 62cdf0e10cSrcweir void Out_ParseError( 63cdf0e10cSrcweir const String & i_sFile, 64cdf0e10cSrcweir uintt i_nLine); 65cdf0e10cSrcweir void Out_InvalidConstSymbol( 66cdf0e10cSrcweir const String & i_sText, 67cdf0e10cSrcweir const String & i_sFile, 68cdf0e10cSrcweir uintt i_nLine); 69cdf0e10cSrcweir void Out_UnresolvedLink( 70cdf0e10cSrcweir const String & i_sLinkText, 71cdf0e10cSrcweir const String & i_sFile, 72cdf0e10cSrcweir uintt i_nLine); 73cdf0e10cSrcweir void Out_TypeVsMemberMisuse( 74cdf0e10cSrcweir const String & i_sLinkText, 75cdf0e10cSrcweir const String & i_sFile, 76cdf0e10cSrcweir uintt i_nLine); 77cdf0e10cSrcweir 78cdf0e10cSrcweir static Messages & The_(); 79cdf0e10cSrcweir 80cdf0e10cSrcweir private: 81cdf0e10cSrcweir struct Location 82cdf0e10cSrcweir { 83cdf0e10cSrcweir String sFile; 84cdf0e10cSrcweir uintt nLine; 85cdf0e10cSrcweir 86cdf0e10cSrcweir Location( 87cdf0e10cSrcweir const String & i_file, 88cdf0e10cSrcweir uintt i_line) 89cdf0e10cSrcweir : sFile(i_file), 90cdf0e10cSrcweir nLine(i_line) {} 91cdf0e10cSrcweir bool operator<( 92cdf0e10cSrcweir const Location & i_other) const 93cdf0e10cSrcweir { int cmp = csv::compare(sFile,i_other.sFile); 94cdf0e10cSrcweir return cmp < 0 95cdf0e10cSrcweir ? true 96cdf0e10cSrcweir : cmp > 0 97cdf0e10cSrcweir ? false 98cdf0e10cSrcweir : nLine < i_other.nLine; 99cdf0e10cSrcweir } 100cdf0e10cSrcweir }; 101cdf0e10cSrcweir 102cdf0e10cSrcweir typedef std::map<Location,String> MessageMap; 103cdf0e10cSrcweir 104cdf0e10cSrcweir // Locals 105cdf0e10cSrcweir void AddValue( 106cdf0e10cSrcweir MessageMap & o_dest, 107cdf0e10cSrcweir const String & i_sText, 108cdf0e10cSrcweir const String & i_sFile, 109cdf0e10cSrcweir uintt i_nLine ); 110cdf0e10cSrcweir void WriteParagraph( 111cdf0e10cSrcweir csv::File & o_out, 112cdf0e10cSrcweir const MessageMap & i_source, 113cdf0e10cSrcweir const String & i_title, 114cdf0e10cSrcweir const String & i_firstIntermediateText ); 115cdf0e10cSrcweir 116cdf0e10cSrcweir // DATA 117cdf0e10cSrcweir MessageMap aMissingDocs; 118cdf0e10cSrcweir MessageMap aParseErrors; 119cdf0e10cSrcweir MessageMap aInvalidConstSymbols; 120cdf0e10cSrcweir MessageMap aUnresolvedLinks; 121cdf0e10cSrcweir MessageMap aTypeVsMemberMisuses; 122cdf0e10cSrcweir }; 123cdf0e10cSrcweir 124cdf0e10cSrcweir 125cdf0e10cSrcweir 126cdf0e10cSrcweir // IMPLEMENTATION 127cdf0e10cSrcweir 128cdf0e10cSrcweir 129cdf0e10cSrcweir } // namespace autodoc 130cdf0e10cSrcweir 131cdf0e10cSrcweir inline autodoc::Messages & 132cdf0e10cSrcweir TheMessages() 133cdf0e10cSrcweir { 134cdf0e10cSrcweir return autodoc::Messages::The_(); 135cdf0e10cSrcweir } 136cdf0e10cSrcweir 137cdf0e10cSrcweir #endif 138