diff options
Diffstat (limited to 'autodoc/source/exes/adc_uni/adc_msg.cxx')
-rw-r--r-- | autodoc/source/exes/adc_uni/adc_msg.cxx | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/autodoc/source/exes/adc_uni/adc_msg.cxx b/autodoc/source/exes/adc_uni/adc_msg.cxx new file mode 100644 index 000000000000..5beaac48b936 --- /dev/null +++ b/autodoc/source/exes/adc_uni/adc_msg.cxx @@ -0,0 +1,211 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: adc_msg.cxx,v $ + * $Revision: 1.8 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include <precomp.h> +#include <adc_msg.hxx> + + +// NOT FULLY DEFINED SERVICES +#include <cosv/file.hxx> +#include <cosv/tpl/tpltools.hxx> + + +namespace autodoc +{ + + +Messages::Messages() + : aMissingDocs(), + aParseErrors(), + aInvalidConstSymbols(), + aUnresolvedLinks(), + aTypeVsMemberMisuses() +{ +} + +Messages::~Messages() +{ +} + +void +Messages::WriteFile(const String & i_sOutputFilePath) +{ + csv::File + aOut(i_sOutputFilePath, csv::CFM_CREATE); + aOut.open(); + + // KORR_FUTURE Enable this when appropriate: + WriteParagraph( aOut, + aParseErrors, + "Incompletely Parsed Files", + "Stopped parsing at " ); + + WriteParagraph( aOut, + aMissingDocs, + "Entities Without Documentation", + " in " ); + + WriteParagraph( aOut, + aInvalidConstSymbols, + "Incorrectly Written Const Symbols", + " in " ); + + WriteParagraph( aOut, + aUnresolvedLinks, + "Unresolved Links", + " in\n " ); + + WriteParagraph( aOut, + aTypeVsMemberMisuses, + "Confusion or Misuse of <Type> vs. <Member>", + " in " ); + aOut.close(); +} + +void +Messages::Out_MissingDoc( const String & i_sEntity, + const String & i_sFile, + uintt i_nLine) +{ + AddValue( aMissingDocs, + i_sEntity, + i_sFile, + i_nLine ); +} + +void +Messages::Out_ParseError( const String & i_sFile, + uintt i_nLine) +{ + aParseErrors[Location(i_sFile,i_nLine)] = String::Null_(); +} + +void +Messages::Out_InvalidConstSymbol( const String & i_sText, + const String & i_sFile, + uintt i_nLine) +{ + AddValue( aInvalidConstSymbols, + i_sText, + i_sFile, + i_nLine ); +} + +void +Messages::Out_UnresolvedLink( const String & i_sLinkText, + const String & i_sFile, + uintt i_nLine) +{ + AddValue( aUnresolvedLinks, + i_sLinkText, + i_sFile, + i_nLine ); +} + +void +Messages::Out_TypeVsMemberMisuse( const String & i_sLinkText, + const String & i_sFile, + uintt i_nLine) +{ + AddValue( aTypeVsMemberMisuses, + i_sLinkText, + i_sFile, + i_nLine ); +} + +Messages & +Messages::The_() +{ + static Messages TheMessages_; + return TheMessages_; +} + +void +Messages::AddValue( MessageMap & o_dest, + const String & i_sText, + const String & i_sFile, + uintt i_nLine ) +{ + String & + rDest = o_dest[Location(i_sFile,i_nLine)]; + StreamLock + slDest(2000); + if (NOT rDest.empty()) + slDest() << rDest; + slDest() << "\n " << i_sText; + rDest = slDest().c_str(); +} + +void +Messages::WriteParagraph( csv::File & o_out, + const MessageMap & i_source, + const String & i_title, + const String & ) +{ + StreamStr aLine(2000); + + // Write title of paragraph: + aLine << i_title + << "\n"; + o_out.write(aLine.c_str()); + + aLine.seekp(0); + for (uintt i = i_title.size(); i > 0; --i) + { + aLine << '-'; + } + aLine << "\n\n"; + o_out.write(aLine.c_str()); + + // Write Content + MessageMap::const_iterator it = i_source.begin(); + MessageMap::const_iterator itEnd = i_source.end(); + for ( ; it != itEnd; ++it ) + { + aLine.seekp(0); + aLine << (*it).first.sFile; + // Nobody wants to see this, if we don't know the line: + if ((*it).first.nLine != 0) + { + aLine << ", line " + << (*it).first.nLine; + } + if (NOT (*it).second.empty()) + { + aLine << ':' + << (*it).second + << "\n"; + } + o_out.write(aLine.c_str()); + } + o_out.write("\n\n\n"); +} + +} // namespace autodoc |