diff options
Diffstat (limited to 'autodoc/source/parser/kernel')
-rw-r--r-- | autodoc/source/parser/kernel/makefile.mk | 58 | ||||
-rw-r--r-- | autodoc/source/parser/kernel/parsefct.cxx | 81 | ||||
-rw-r--r-- | autodoc/source/parser/kernel/parsefct.hxx | 60 | ||||
-rw-r--r-- | autodoc/source/parser/kernel/x_docu.cxx | 61 | ||||
-rw-r--r-- | autodoc/source/parser/kernel/x_parse.cxx | 98 |
5 files changed, 358 insertions, 0 deletions
diff --git a/autodoc/source/parser/kernel/makefile.mk b/autodoc/source/parser/kernel/makefile.mk new file mode 100644 index 000000000000..9baf8ab1c6ef --- /dev/null +++ b/autodoc/source/parser/kernel/makefile.mk @@ -0,0 +1,58 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# 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. +# +#************************************************************************* + +PRJ=..$/..$/.. + +PRJNAME=autodoc +TARGET=parser_kernel +TARGETTYPE=CUI + + +# --- Settings ----------------------------------------------------- + +ENABLE_EXCEPTIONS=true +PRJINC=$(PRJ)$/source + +.INCLUDE : settings.mk +.INCLUDE : $(PRJ)$/source$/mkinc$/fullcpp.mk + + + +# --- Files -------------------------------------------------------- + +OBJFILES= \ + $(OBJ)$/parsefct.obj \ + $(OBJ)$/x_docu.obj \ + $(OBJ)$/x_parse.obj + + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk + + + diff --git a/autodoc/source/parser/kernel/parsefct.cxx b/autodoc/source/parser/kernel/parsefct.cxx new file mode 100644 index 000000000000..6f041ef8415e --- /dev/null +++ b/autodoc/source/parser/kernel/parsefct.cxx @@ -0,0 +1,81 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * 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 "parsefct.hxx" + + +// NOT FULLY DECLARED SERVICES +#include <cpp/prs_cpp.hxx> +#include <adoc/prs_adoc.hxx> +#include <tools/filecoll.hxx> + + +DYN ParseToolsFactory * ParseToolsFactory::dpTheInstance_ = 0; + + +namespace autodoc +{ + +ParseToolsFactory_Ifc & +ParseToolsFactory_Ifc::GetIt_() +{ + if ( ParseToolsFactory::dpTheInstance_ == 0 ) + ParseToolsFactory::dpTheInstance_ = new ParseToolsFactory; + return *ParseToolsFactory::dpTheInstance_; +} + +} // namespace autodoc + + +ParseToolsFactory::ParseToolsFactory() +{ +} + +ParseToolsFactory::~ParseToolsFactory() +{ +} + +DYN autodoc::CodeParser_Ifc * +ParseToolsFactory::Create_Parser_Cplusplus() const +{ + return new cpp::Cpluplus_Parser; +} + +DYN autodoc::DocumentationParser_Ifc * +ParseToolsFactory::Create_DocuParser_AutodocStyle() const +{ + return new adoc::DocuParser_AutodocStyle; +} + +DYN autodoc::FileCollector_Ifc * +ParseToolsFactory::Create_FileCollector( uintt i_nEstimatedNrOfFiles ) const +{ + return new FileCollector(i_nEstimatedNrOfFiles); +} + + diff --git a/autodoc/source/parser/kernel/parsefct.hxx b/autodoc/source/parser/kernel/parsefct.hxx new file mode 100644 index 000000000000..0710e48ac1dc --- /dev/null +++ b/autodoc/source/parser/kernel/parsefct.hxx @@ -0,0 +1,60 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * 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. + * + ************************************************************************/ + +#ifndef ADC_PARSER_PARSEFCT_HXX +#define ADC_PARSER_PARSEFCT_HXX + + +#include <autodoc/parsing.hxx> + + +/** Interface for parsing code of a programming language and + delivering the information into an Autodoc Repository. +**/ +class ParseToolsFactory : public autodoc::ParseToolsFactory_Ifc +{ + public: + ParseToolsFactory(); + virtual ~ParseToolsFactory(); + + virtual DYN autodoc::CodeParser_Ifc * + Create_Parser_Cplusplus() const; + virtual DYN autodoc::DocumentationParser_Ifc * + Create_DocuParser_AutodocStyle() const; + virtual DYN autodoc::FileCollector_Ifc * + Create_FileCollector( + uintt i_nEstimatedNrOfFiles ) const; + private: + static DYN ParseToolsFactory * + dpTheInstance_; + + friend class autodoc::ParseToolsFactory_Ifc; +}; + + +#endif + diff --git a/autodoc/source/parser/kernel/x_docu.cxx b/autodoc/source/parser/kernel/x_docu.cxx new file mode 100644 index 000000000000..a811c5dca2e4 --- /dev/null +++ b/autodoc/source/parser/kernel/x_docu.cxx @@ -0,0 +1,61 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * 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 <x_docu.hxx> + +// NOT FULLY DECLARED SERVICES + + + +X_Docu::X_Docu( const char * i_tag, + const char * i_explanation ) + : sTagName(i_tag), + sExplanation(i_explanation) +{ +} + +X_Docu::~X_Docu() +{ +} + +X_Docu::E_Event +X_Docu::GetEvent() const +{ + return x_Any; +} + +void +X_Docu::GetInfo( std::ostream & o_rOutputMedium ) const +{ + o_rOutputMedium + << "Error in tag '" + << sTagName + << "': " + << sExplanation + << Endl(); +} diff --git a/autodoc/source/parser/kernel/x_parse.cxx b/autodoc/source/parser/kernel/x_parse.cxx new file mode 100644 index 000000000000..74c3e520d0d0 --- /dev/null +++ b/autodoc/source/parser/kernel/x_parse.cxx @@ -0,0 +1,98 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * 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 <x_parse.hxx> + +// NOT FULLY DECLARED SERVICES + + + +X_Parser::X_Parser( E_Event i_eEvent, + const char * i_sObject, + const String & i_sCausingFile_FullPath, + uintt i_nCausingLineNr ) + : eEvent(i_eEvent), + sObject(i_sObject), + sCausingFile_FullPath(i_sCausingFile_FullPath), + nCausingLineNr(i_nCausingLineNr) +{ +} + +X_Parser::~X_Parser() +{ +} + +X_Parser::E_Event +X_Parser::GetEvent() const +{ + return eEvent; +} + +void +X_Parser::GetInfo( std::ostream & o_rOutputMedium ) const +{ + o_rOutputMedium << "Error in file " + << sCausingFile_FullPath + << " in line " + << nCausingLineNr + << ": "; + + + switch (eEvent) + { + case x_InvalidChar: + o_rOutputMedium << "Unknown character '" + << sObject + << "'"; + break; + case x_UnexpectedToken: + o_rOutputMedium << "Unexpected token \"" + << sObject + << "\""; + break; + case x_UnexpectedEOF: + o_rOutputMedium << "Unexpected end of file."; + break; + case x_UnspecifiedSyntaxError: + o_rOutputMedium << "Unspecified syntax problem in file."; + break; + case x_Any: + default: + o_rOutputMedium << "Unspecified parsing exception."; + } // end switch + o_rOutputMedium << Endl(); +} + + +std::ostream & +operator<<( std::ostream & o_rOut, + const autodoc::X_Parser_Ifc & i_rException ) +{ + i_rException.GetInfo(o_rOut); + return o_rOut; +} |