diff options
Diffstat (limited to 'autodoc/source/inc')
-rw-r--r-- | autodoc/source/inc/adc_cl.hxx | 193 | ||||
-rw-r--r-- | autodoc/source/inc/adc_msg.hxx | 141 | ||||
-rw-r--r-- | autodoc/source/inc/docu_node_ids.hxx | 64 | ||||
-rw-r--r-- | autodoc/source/inc/estack.hxx | 94 | ||||
-rw-r--r-- | autodoc/source/inc/luxenum.hxx | 103 | ||||
-rw-r--r-- | autodoc/source/inc/manip.hxx | 61 | ||||
-rw-r--r-- | autodoc/source/inc/precomp.h | 66 | ||||
-rw-r--r-- | autodoc/source/inc/prprpr.hxx | 58 | ||||
-rw-r--r-- | autodoc/source/inc/tools/filecoll.hxx | 69 | ||||
-rw-r--r-- | autodoc/source/inc/tools/tkpchars.hxx | 170 |
10 files changed, 1019 insertions, 0 deletions
diff --git a/autodoc/source/inc/adc_cl.hxx b/autodoc/source/inc/adc_cl.hxx new file mode 100644 index 000000000000..8bcec7df50ce --- /dev/null +++ b/autodoc/source/inc/adc_cl.hxx @@ -0,0 +1,193 @@ +/************************************************************************* + * + * 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_ADC_CL_HXX +#define ADC_ADC_CL_HXX + + + +// USED SERVICES + // BASE CLASSES +#include <cosv/comdline.hxx> + // COMPONENTS + // PARAMETERS + +namespace ary +{ + class Repository; +} + +namespace autodoc +{ +namespace command +{ + class Command; + class CreateHtml; + class SinceTagTransformationData; +} + + +/** Reads and runs an Autodoc command line. +*/ +class CommandLine : public csv::CommandLine_Ifc +{ + public: + // LIFECYCLE + CommandLine(); + ~CommandLine(); + // OPERATIONS + int Run() const; + + // INQUIRY + // debugging + bool DebugStyle_ShowText() const; + bool DebugStyle_ShowStoredObjects() const; + bool DebugStyle_ShowTokens() const; + + // @since tags + bool DoesTransform_SinceTag() const; + +// /// @see command::SinceTagTransformationData::StripSinceTagValue() +// bool Strip_SinceTagText( +// String & io_sSinceTagValue ) const; + + /// @see command::SinceTagTransformationData::DisplayOf() + const String & DisplayOf_SinceTagValue( + const String & i_sVersionNumber ) const; + + // extern IDL links + const String & ExternRoot() const { return sExternRoot; } + const String & ExternNamespace() const { return sExternNamespace; } + + bool CppUsed() const { return bCpp; } + bool IdlUsed() const { return bIdl; } + + // ACCESS + static CommandLine & + Get_(); + void Set_ExternRoot( + const String & i_s ) + { sExternRoot = i_s; } + void Set_ExternNamespace( + const String & i_s ) + { sExternNamespace = i_s; } + ary::Repository & TheRepository() const { csv_assert(pReposy != 0); + return *pReposy; } + void Set_CppUsed() { bCpp = true; } + void Set_IdlUsed() { bIdl = true; } + + private: + // Interface cosv::CommandLine_Ifc: + virtual void do_Init( + int argc, + char * argv[] ); + virtual void do_PrintUse() const; + virtual bool inq_CheckParameters() const; + + // Locals + typedef StringVector::const_iterator opt_iter; + typedef std::vector< DYN command::Command* > CommandList; + + void load_IncludedCommands( + StringVector & out, + const char * i_filePath ); + + void do_clVerbose( + opt_iter & it, + opt_iter itEnd ); + void do_clParse( + opt_iter & it, + opt_iter itEnd ); + void do_clCreateHtml( + opt_iter & it, + opt_iter itEnd ); + void do_clSinceFile( + opt_iter & it, + opt_iter itEnd ); + +// void do_clCreateXml( +// opt_iter & it, +// opt_iter itEnd ); +// void do_clLoad( +// opt_iter & it, +// opt_iter itEnd ); +// void do_clSave( +// opt_iter & it, +// opt_iter itEnd ); + + void sort_Commands(); + + // DATA + uintt nDebugStyle; + Dyn<command::SinceTagTransformationData> + pSinceTransformator; + + CommandList aCommands; + bool bInitOk; + command::CreateHtml * + pCommand_CreateHtml; + + String sExternRoot; + String sExternNamespace; + + mutable Dyn<ary::Repository> + pReposy; + bool bCpp; + bool bIdl; + + static CommandLine * + pTheInstance_; +}; + + + +// IMPLEMENTATION +inline bool +CommandLine::DebugStyle_ShowText() const + { return (nDebugStyle & 2) != 0; } +inline bool +CommandLine::DebugStyle_ShowStoredObjects() const + { return (nDebugStyle & 4) != 0; } +inline bool +CommandLine::DebugStyle_ShowTokens() const + { return (nDebugStyle & 1) != 0; } + +} // namespace autodoc + + +inline bool +DEBUG_ShowText() + { return autodoc::CommandLine::Get_().DebugStyle_ShowText(); } +inline bool +DEBUG_ShowStoring() + { return autodoc::CommandLine::Get_().DebugStyle_ShowStoredObjects(); } +inline bool +DEBUG_ShowTokens() + { return autodoc::CommandLine::Get_().DebugStyle_ShowTokens(); } + +#endif + diff --git a/autodoc/source/inc/adc_msg.hxx b/autodoc/source/inc/adc_msg.hxx new file mode 100644 index 000000000000..320b8bd96ebc --- /dev/null +++ b/autodoc/source/inc/adc_msg.hxx @@ -0,0 +1,141 @@ +/************************************************************************* + * + * 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_ADC_MSG_HXX +#define ADC_ADC_MSG_HXX + + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS + // PARAMETERS +namespace csv +{ + class File; +} + + +namespace autodoc +{ + + +/** Gathers, sorts and displays (mainly diagnostic) messages to the + user of Autodoc. +*/ +class Messages +{ + public: + // LIFECYCLE + Messages(); + ~Messages(); + // OPERATIONS + void WriteFile( + const String & i_sOutputFilePath); + // INQUIRY + + // ACCESS + void Out_MissingDoc( + const String & i_sEntity, + const String & i_sFile, + uintt i_nLine); + void Out_ParseError( + const String & i_sFile, + uintt i_nLine); + void Out_InvalidConstSymbol( + const String & i_sText, + const String & i_sFile, + uintt i_nLine); + void Out_UnresolvedLink( + const String & i_sLinkText, + const String & i_sFile, + uintt i_nLine); + void Out_TypeVsMemberMisuse( + const String & i_sLinkText, + const String & i_sFile, + uintt i_nLine); + + static Messages & The_(); + + private: + struct Location + { + String sFile; + uintt nLine; + + Location( + const String & i_file, + uintt i_line) + : sFile(i_file), + nLine(i_line) {} + bool operator<( + const Location & i_other) const + { int cmp = csv::compare(sFile,i_other.sFile); + return cmp < 0 + ? true + : cmp > 0 + ? false + : nLine < i_other.nLine; + } + }; + + typedef std::map<Location,String> MessageMap; + + // Locals + void AddValue( + MessageMap & o_dest, + const String & i_sText, + const String & i_sFile, + uintt i_nLine ); + void WriteParagraph( + csv::File & o_out, + const MessageMap & i_source, + const String & i_title, + const String & i_firstIntermediateText ); + + // DATA + MessageMap aMissingDocs; + MessageMap aParseErrors; + MessageMap aInvalidConstSymbols; + MessageMap aUnresolvedLinks; + MessageMap aTypeVsMemberMisuses; +}; + + + +// IMPLEMENTATION + + +} // namespace autodoc + +inline autodoc::Messages & +TheMessages() +{ + return autodoc::Messages::The_(); +} + +#endif diff --git a/autodoc/source/inc/docu_node_ids.hxx b/autodoc/source/inc/docu_node_ids.hxx new file mode 100644 index 000000000000..b06997755c2b --- /dev/null +++ b/autodoc/source/inc/docu_node_ids.hxx @@ -0,0 +1,64 @@ +/************************************************************************* + * + * 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_DOCU_NODE_IDS_HXX +#define ADC_DOCU_NODE_IDS_HXX + + + +namespace ary +{ +namespace doc +{ +namespace nodetype +{ +enum E_Ids +{ + + nt_none, + nt_OldCppDocu, + nt_OldIdlDocu + + + + + + + + + +}; +} // namespace nodetype +} // namespace doc +} // namespace ary + +namespace docnt = ::ary::doc::nodetype; + + + + +#endif diff --git a/autodoc/source/inc/estack.hxx b/autodoc/source/inc/estack.hxx new file mode 100644 index 000000000000..a3972da9739b --- /dev/null +++ b/autodoc/source/inc/estack.hxx @@ -0,0 +1,94 @@ +/************************************************************************* + * + * 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 ARY_ESTACK_HXX +#define ARY_ESTACK_HXX + + + +// USED SERVICES + // BASE CLASSES +#include <slist> + // COMPONENTS + // PARAMETERS + + + +template <class ELEM> +class EStack : private std::slist<ELEM> +{ + private: + typedef std::slist<ELEM> base; + const base & Base() const { return *this; } + base & Base() { return *this; } + + public: + typedef ELEM value_type; + typedef typename std::slist<ELEM>::size_type size_type; + + // LIFECYCLE + EStack() {} + EStack( + const EStack & i_rStack ) + : base( (const base &)(i_rStack) ) {} + ~EStack() {} + // OPERATORS + EStack & operator=( + const EStack & i_rStack ) + { base::operator=( i_rStack.Base() ); + return *this; } + bool operator==( + const EStack<ELEM> & + i_r2 ) const + { return std::operator==( Base(), this->i_rStack.Base() ); } + bool operator<( + const EStack<ELEM> & + i_r2 ) const + { return std::operator<( Base(), this->i_rStack.Base() ); } + // OPERATIONS + void push( + const value_type & i_rElem ) + { base::push_front(i_rElem); } + void pop() { base::pop_front(); } + void erase_all() { while (NOT empty()) pop(); } + + // INQUIRY + const value_type & top() const { return base::front(); } + size_type size() const { return base::size(); } + bool empty() const { return base::empty(); } + + // ACCESS + value_type & top() { return base::front(); } +}; + + + +// IMPLEMENTATION + + +#endif + diff --git a/autodoc/source/inc/luxenum.hxx b/autodoc/source/inc/luxenum.hxx new file mode 100644 index 000000000000..42eb2953dabe --- /dev/null +++ b/autodoc/source/inc/luxenum.hxx @@ -0,0 +1,103 @@ +/************************************************************************* + * + * 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 UDM_LUXENUM_HXX +#define UDM_LUXENUM_HXX + + + +// USED SERVICES + // BASE CLASSES + // COMPONENTS + // PARAMETERS +#include <map> +#include <algorithm> + + +namespace lux +{ + +typedef std::map< intt, String > EnumValueMap; + + +template <class DIFF> +class Enum // : public Template_Base +{ + public: + // TYPES + typedef Enum< DIFF > self; + + // LIFECYCLE + Enum( + DIFF i_nValue, + const char * i_sText ) + : nValue(i_nValue) { Values_()[nValue] = i_sText; + // Sequence_().insert( + // std::lower_bound( Sequence_().begin(), Sequence_().end(), i_nValue ), + // i_nValue ); + } + Enum( + DIFF i_nValue ) + : nValue(i_nValue) { ; } + Enum( + intt i_nValue = 0 ) + : nValue(i_nValue) { if ( NOT CheckIntt(i_nValue) ) { csv_assert(false); } } + Enum( + const self & i_rEnum ) + : nValue(i_rEnum.nValue) {;} + + self & operator=( + DIFF i_nValue ) + { nValue = i_nValue; return *this; } + self & operator=( + intt i_nValue ) + { if ( CheckIntt(i_nValue) ) {nValue = DIFF(i_nValue);} + else {csv_assert(false);} return *this; } + self & operator=( + const self & i_rEnum ) + { nValue = i_rEnum.nValue; return *this; } + operator DIFF() const { return DIFF(nValue); } + + DIFF operator()() const { return nValue; } + const String & Text() const { return Values_()[nValue]; } + + private: + static EnumValueMap & + Values_(); + bool CheckIntt( + intt i_nNumber ) + { return Values_().find(i_nNumber) != Values_().end(); } + // DATA + intt nValue; +}; + + + + +} // namespace lux +#endif + diff --git a/autodoc/source/inc/manip.hxx b/autodoc/source/inc/manip.hxx new file mode 100644 index 000000000000..9b7ae9fc07c6 --- /dev/null +++ b/autodoc/source/inc/manip.hxx @@ -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. + * + ************************************************************************/ + +#ifndef ARY_MANIP_HXX +#define ARY_MANIP_HXX + +template <class XY > +class Manipulator +{ + public: + virtual ~Manipulator() {} + + void operator()( + XY & io_r ) const + { op_fcall(io_r); } + private: + virtual void op_fcall( + XY & io_r ) const = 0; +}; + +template <class XY > +class Const_Manipulator +{ + public: + virtual ~Const_Manipulator() {} + + void operator()( + const XY & io_r ) const + { op_fcall(io_r); } + private: + virtual void op_fcall( + const XY & io_r ) const = 0; +}; + + +#endif + diff --git a/autodoc/source/inc/precomp.h b/autodoc/source/inc/precomp.h new file mode 100644 index 000000000000..8ff526108f60 --- /dev/null +++ b/autodoc/source/inc/precomp.h @@ -0,0 +1,66 @@ +/************************************************************************* + * + * 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_PRECOMP_H_06071998 +#define ADC_PRECOMP_H_06071998 + + +// For en/disabling csv_assertions: +#ifndef DEBUG +#define CSV_NO_ASSERTIONS +#endif + +#include <cosv/csv_precomp.h> + +#include <vector> +#include <map> +#include <set> + + + +// Shortcuts to access csv::-types: +using csv::String; +using csv::StringVector; +using csv::StreamStr; +using csv::c_str; +typedef csv::StreamStrLock StreamLock; + + + +inline std::ostream & +Cout() { return std::cout; } +inline std::ostream & +Cerr() { return std::cerr; } + +inline csv::F_FLUSHING_FUNC +Endl() { return csv::Endl; } +inline csv::F_FLUSHING_FUNC +Flush() { return csv::Flush; } + + + + +#endif diff --git a/autodoc/source/inc/prprpr.hxx b/autodoc/source/inc/prprpr.hxx new file mode 100644 index 000000000000..842900bb5950 --- /dev/null +++ b/autodoc/source/inc/prprpr.hxx @@ -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. + * + ************************************************************************/ + + +#ifndef ARY_CPP_PRPRPR_HXX // PRePRocessorPRocessing +#define ARY_CPP_PRPRPR_HXX + + + +// Implemented in autodoc/source/parser/cpp/defdescr.cxx . + +bool CheckForOperator( + bool & o_bStringify, + bool & o_bConcatenate, + const String & i_sTextItem ); +void Do_bConcatenate( + csv::StreamStr & o_rText, + bool & io_bConcatenate ); +void Do_bStringify_begin( + csv::StreamStr & o_rText, + bool i_bStringify ); +void Do_bStringify_end( + csv::StreamStr & o_rText, + bool & io_bStringify ); +bool HandleOperatorsBeforeTextItem( /// @return true, if text item is done here + csv::StreamStr & o_rText, + bool & io_bStringify, + bool & io_bConcatenate, + const String & i_sTextItem ); + + + + +#endif diff --git a/autodoc/source/inc/tools/filecoll.hxx b/autodoc/source/inc/tools/filecoll.hxx new file mode 100644 index 000000000000..75818d1b40eb --- /dev/null +++ b/autodoc/source/inc/tools/filecoll.hxx @@ -0,0 +1,69 @@ +/************************************************************************* + * + * 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_FILECOLL_HXX +#define ADC_FILECOLL_HXX + +// USED SERVICES + // BASE CLASSES +#include <autodoc/filecoli.hxx> + // COMPONENTS + // PARAMETERS + + + +class FileCollector : public autodoc::FileCollector_Ifc +{ + public: + // LIFECYCLE + FileCollector( + uintt i_nRoughNrOfFiles = 0 ); + + // OPERATIONS + virtual uintt AddFilesFrom( + const char * i_sRootDir, + const char * i_sFilter, + E_SearchMode i_eSearchMode ); + virtual uintt AddFile( + const char * i_sFilePath ); + virtual void EraseAll(); + + // INQUIRY + virtual const_iterator + Begin() const; + virtual const_iterator + End() const; + virtual uintt Size() const; + + private: + // DATA + StringVector aFoundFiles; +}; + + +#endif + diff --git a/autodoc/source/inc/tools/tkpchars.hxx b/autodoc/source/inc/tools/tkpchars.hxx new file mode 100644 index 000000000000..2ebe0d000e84 --- /dev/null +++ b/autodoc/source/inc/tools/tkpchars.hxx @@ -0,0 +1,170 @@ +/************************************************************************* + * + * 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_TKPCHARS_HXX +#define ADC_TKPCHARS_HXX + +// USED SERVICES + // BASE CLASSES + // COMPONENTS + // PARAMETRS +#include <adc_cl.hxx> +#include <stack> + + + +/** @descr + + dpSource: + + 1||||||||||||||||||||||a||||||||||||b|||c||||||||||||||||||||... + + + 1 := first character of Sourcecode. + a := nLastTokenStart, there starts the last cut token. + b := nLastCut, there is a '\0'-char which marks the end of + the last cut token. The original character at b is stored + in cCharAtLastCut and will replace the '\0'-char, when the + next token is cut. + c := The current cursor position. + + + @needs cosv.lib + + @use This class can be used by any parser to get the chars of a + text one by one and separate them to tokens. +**/ + +class CharacterSource +{ + public: + // LIFECYCLE + CharacterSource(); + ~CharacterSource(); + + // OPERATIONS + /** Loads the complete contents of in_rSource into the classes private memory. + If in_rSource is a file, it has to be open of course. + After loading the text, the CurChar() is set on the begin of the text. + **/ + void LoadText( + csv::bstream & io_rSource); + + void InsertTextAtCurPos( + const char * i_sText2Insert ); + + /// @return CurChar() after moving forward one char. + char MoveOn(); + /** @return + The token which starts at the char which was CurChar(), when + CutToken() was called the last time - or at the beginning of the text. + The token ends by the CurChar() being replaced by a '\0'. + + Value is valid until the next call of CutToken() or ~CharacterSource(). + **/ + const char * CutToken(); + + // INQUIRY + char CurChar() const; + /// @return The result of the last CutToken(). Or NULL, if there was none yet. + const char * CurToken() const; + + // INQUIRY + /// @return true, if + bool IsFinished() const; + + private: + struct S_SourceState + { + DYN char * dpSource; + intt nSourceSize; + + intt nCurPos; + intt nLastCut; + intt nLastTokenStart; + char cCharAtLastCut; + + S_SourceState( + DYN char * dpSource, + intt nSourceSize, + intt nCurPos, + intt nLastCut, + intt nLastTokenStart, + char cCharAtLastCut ); + }; + + void BeginSource(); + intt CurPos() const; + char MoveOn_OverStack(); + + // DATA + std::stack< S_SourceState > + aSourcesStack; + + DYN char * dpSource; + intt nSourceSize; + + intt nCurPos; + intt nLastCut; + intt nLastTokenStart; + char cCharAtLastCut; +}; + + +inline char +CharacterSource::MoveOn() + { +if (DEBUG_ShowText()) +{ + Cerr() << char(dpSource[nCurPos+1]) << Flush(); +} + if ( nCurPos < nSourceSize-1 ) + return dpSource[++nCurPos]; + else if ( aSourcesStack.size() > 0 ) + return MoveOn_OverStack(); + else + return dpSource[nCurPos = nSourceSize]; + } +inline char +CharacterSource::CurChar() const + { return nCurPos != nLastCut ? dpSource[nCurPos] : cCharAtLastCut; } +inline const char * +CharacterSource::CurToken() const + { return &dpSource[nLastTokenStart]; } +inline bool +CharacterSource::IsFinished() const + { return nCurPos >= nSourceSize; } +inline intt +CharacterSource::CurPos() const + { return nCurPos; } + + + + +#endif + + |