diff options
Diffstat (limited to 'autodoc/source/parser_i/idoc/docu_pe2.cxx')
-rw-r--r-- | autodoc/source/parser_i/idoc/docu_pe2.cxx | 694 |
1 files changed, 0 insertions, 694 deletions
diff --git a/autodoc/source/parser_i/idoc/docu_pe2.cxx b/autodoc/source/parser_i/idoc/docu_pe2.cxx deleted file mode 100644 index 45adb295..00000000 --- a/autodoc/source/parser_i/idoc/docu_pe2.cxx +++ /dev/null @@ -1,694 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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 <s2_dsapi/docu_pe2.hxx> - - -// NOT FULLY DEFINED SERVICES -#include <cctype> -#include <ary/doc/d_oldidldocu.hxx> -#include <ary_i/d_token.hxx> -#include <parser/parserinfo.hxx> -#include <adc_cl.hxx> -#include <adc_msg.hxx> -#include <../parser/inc/x_docu.hxx> -#include <s2_dsapi/dsapitok.hxx> -#include <s2_dsapi/tk_atag2.hxx> -#include <s2_dsapi/tk_html.hxx> -#include <s2_dsapi/tk_docw2.hxx> -#include <s2_dsapi/tk_xml.hxx> - - -#ifdef UNX -#define strnicmp strncasecmp -#endif - - -namespace csi -{ -namespace dsapi -{ - - -const char * AtTagTitle( - const Tok_AtTag & i_rToken ); - - -SapiDocu_PE::SapiDocu_PE(ParserInfo & io_rPositionInfo) - : pDocu(0), - eState(e_none), - pPositionInfo(&io_rPositionInfo), - fCurTokenAddFunction(&SapiDocu_PE::AddDocuToken2Void), - pCurAtTag(0), - sCurDimAttribute(), - sCurAtSeeType_byXML(200) -{ -} - -SapiDocu_PE::~SapiDocu_PE() -{ -} - -void -SapiDocu_PE::ProcessToken( DYN csi::dsapi::Token & let_drToken ) -{ - if (IsComplete()) - { - pDocu = 0; - eState = e_none; - } - - if ( eState == e_none ) - { - pDocu = new ary::doc::OldIdlDocu; - eState = st_short; - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2Short; - } - - csv_assert(pDocu); - - let_drToken.Trigger(*this); - delete &let_drToken; -} - -void -SapiDocu_PE::Process_AtTag( const Tok_AtTag & i_rToken ) -{ - if (NOT pCurAtTag) - { - eState = st_attags; - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag; - } - else - { - csv_assert(eState == st_attags); - pDocu->AddAtTag(*pCurAtTag.Release()); - } - - if (i_rToken.Id() == Tok_AtTag::param) - { - pCurAtTag = new DT_ParameterAtTag; - fCurTokenAddFunction = &SapiDocu_PE::SetCurParameterAtTagName; - } - else if (i_rToken.Id() == Tok_AtTag::see) - { - pCurAtTag = new DT_SeeAlsoAtTag; - fCurTokenAddFunction = &SapiDocu_PE::SetCurSeeAlsoAtTagLinkText; - } - else if (i_rToken.Id() == Tok_AtTag::deprecated) - { - pDocu->SetDeprecated(); - pCurAtTag = new DT_StdAtTag(""); // Dummy that will not be used. - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2Deprecated; - } - else if (i_rToken.Id() == Tok_AtTag::since) - { - pCurAtTag = new DT_SinceAtTag; - fCurTokenAddFunction = &SapiDocu_PE::SetCurSinceAtTagVersion_OOo; - } - else - { - pCurAtTag = new DT_StdAtTag( AtTagTitle(i_rToken) ); - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag; - } -} - -void -SapiDocu_PE::Process_HtmlTag( const Tok_HtmlTag & i_rToken ) -{ - if (eState == st_short AND i_rToken.IsParagraphStarter()) - { - eState = st_description; - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2Description; - } - - // Workaround special for some errors in API docu: - if ( strnicmp("<true",i_rToken.Text(),5 ) == 0 ) - { - if ( strcmp("<TRUE/>",i_rToken.Text()) != 0 ) - TheMessages().Out_InvalidConstSymbol( i_rToken.Text(), - pPositionInfo->CurFile(), - pPositionInfo->CurLine() ); - (this->*fCurTokenAddFunction)( *new DT_TextToken("<b>true</b>") ); - return; - } - else if ( strnicmp("<false",i_rToken.Text(),6 ) == 0 ) - { - if ( strcmp("<FALSE/>",i_rToken.Text()) != 0 ) - TheMessages().Out_InvalidConstSymbol( i_rToken.Text(), - pPositionInfo->CurFile(), - pPositionInfo->CurLine() ); - (this->*fCurTokenAddFunction)( *new DT_TextToken("<b>false</b>") ); - return; - } - else if ( strnicmp("<NULL",i_rToken.Text(),5 ) == 0 ) - { - if ( strcmp("<NULL/>",i_rToken.Text()) != 0 ) - TheMessages().Out_InvalidConstSymbol( i_rToken.Text(), - pPositionInfo->CurFile(), - pPositionInfo->CurLine() ); - (this->*fCurTokenAddFunction)( *new DT_TextToken("<b>null</b>") ); - return; - } - else if ( strnicmp("<void",i_rToken.Text(),5 ) == 0 ) - { - if ( strcmp("<void/>",i_rToken.Text()) != 0 ) - TheMessages().Out_InvalidConstSymbol( i_rToken.Text(), - pPositionInfo->CurFile(), - pPositionInfo->CurLine() ); - (this->*fCurTokenAddFunction)( *new DT_TextToken("<b>void</b>") ); - return; - } - - (this->*fCurTokenAddFunction)( *new DT_Style(i_rToken.Text(),false) ); -} - -void -SapiDocu_PE::Process_XmlConst( const Tok_XmlConst & i_rToken ) -{ - (this->*fCurTokenAddFunction)(*new DT_MupConst(i_rToken.Text())); -} - -void -SapiDocu_PE::Process_XmlLink_BeginTag( const Tok_XmlLink_BeginTag & i_rToken ) -{ - switch (i_rToken.Id()) - { - case Tok_XmlLink_Tag::e_const: - (this->*fCurTokenAddFunction)(*new DT_Style("<b>",false)); - break; - case Tok_XmlLink_Tag::member: - (this->*fCurTokenAddFunction)(*new DT_MupMember(i_rToken.Scope())); - break; - case Tok_XmlLink_Tag::type: - (this->*fCurTokenAddFunction)(*new DT_MupType(i_rToken.Scope())); - break; - default: - // Do nothing. - ; - } - - if ( i_rToken.Dim().length() > 0 ) - sCurDimAttribute = i_rToken.Dim(); - else - sCurDimAttribute.clear(); -} - -void -SapiDocu_PE::Process_XmlLink_EndTag( const Tok_XmlLink_EndTag & i_rToken ) -{ - switch (i_rToken.Id()) - { - case Tok_XmlLink_Tag::e_const: - (this->*fCurTokenAddFunction)(*new DT_Style("</b>",false)); - break; - case Tok_XmlLink_Tag::member: - (this->*fCurTokenAddFunction)(*new DT_MupMember(true)); - break; - case Tok_XmlLink_Tag::type: - (this->*fCurTokenAddFunction)(*new DT_MupType(true)); - break; - default: - // Do nothing. - ; - } - if ( sCurDimAttribute.length() > 0 ) - { - (this->*fCurTokenAddFunction)( *new DT_TextToken(sCurDimAttribute.c_str()) ); - sCurDimAttribute.clear(); - } -} - -void -SapiDocu_PE::Process_XmlFormat_BeginTag( const Tok_XmlFormat_BeginTag & i_rToken ) -{ - switch (i_rToken.Id()) - { - case Tok_XmlFormat_Tag::code: - (this->*fCurTokenAddFunction)(*new DT_Style("<code>",false)); - break; - case Tok_XmlFormat_Tag::listing: - (this->*fCurTokenAddFunction)(*new DT_Style("<pre>",true)); - break; - case Tok_XmlFormat_Tag::atom: - (this->*fCurTokenAddFunction)(*new DT_Style("<code>",true)); - break; - default: - // Do nothing. - ; - } - if ( i_rToken.Dim().length() > 0 ) - sCurDimAttribute = i_rToken.Dim(); - else - sCurDimAttribute.clear(); -} - -void -SapiDocu_PE::Process_XmlFormat_EndTag( const Tok_XmlFormat_EndTag & i_rToken ) -{ - switch (i_rToken.Id()) - { - case Tok_XmlFormat_Tag::code: - (this->*fCurTokenAddFunction)(*new DT_Style("</code>",false)); - break; - case Tok_XmlFormat_Tag::listing: - (this->*fCurTokenAddFunction)(*new DT_Style("</pre>",true)); - break; - case Tok_XmlFormat_Tag::atom: - (this->*fCurTokenAddFunction)(*new DT_Style("</code>",true)); - break; - default: - // Do nothing. - ; - } - if ( sCurDimAttribute.length() > 0 ) - { - (this->*fCurTokenAddFunction)( *new DT_TextToken(sCurDimAttribute.c_str()) ); - sCurDimAttribute.clear(); - } -} - -void -SapiDocu_PE::Process_Word( const Tok_Word & i_rToken ) -{ - (this->*fCurTokenAddFunction)(*new DT_TextToken(i_rToken.Text())); -} - -void -SapiDocu_PE::Process_Comma() -{ - csv_assert(1==7); -// (this->*fCurTokenAddFunction)(*new DT_Comma(i_rToken.Text())); -} - -void -SapiDocu_PE::Process_DocuEnd() -{ - eState = st_complete; - if (pCurAtTag) - pDocu->AddAtTag(*pCurAtTag.Release()); - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2Void; -} - -void -SapiDocu_PE::Process_EOL() -{ - (this->*fCurTokenAddFunction)(*new DT_EOL); -} - -void -SapiDocu_PE::Process_White() -{ - (this->*fCurTokenAddFunction)(*new DT_White); -} - -DYN ary::doc::OldIdlDocu * -SapiDocu_PE::ReleaseJustParsedDocu() -{ - if (IsComplete()) - { - eState = e_none; - return pDocu.Release(); - } - return 0; -} - - -bool -SapiDocu_PE::IsComplete() const -{ - return eState == st_complete; -} - -void -SapiDocu_PE::AddDocuToken2Void( DYN ary::inf::DocuToken & let_drNewToken ) -{ - delete &let_drNewToken; -} - -void -SapiDocu_PE::AddDocuToken2Short( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pDocu); - pDocu->AddToken2Short(let_drNewToken); -} - -void -SapiDocu_PE::AddDocuToken2Description( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pDocu); - pDocu->AddToken2Description(let_drNewToken); -} - -void -SapiDocu_PE::AddDocuToken2Deprecated( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pDocu); - pDocu->AddToken2DeprecatedText(let_drNewToken); -} - -void -SapiDocu_PE::AddDocuToken2CurAtTag( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pCurAtTag); - pCurAtTag->AddToken(let_drNewToken); -} - -void -SapiDocu_PE::SetCurParameterAtTagName( DYN ary::inf::DocuToken & let_drNewToken ) -{ - if (let_drNewToken.IsWhiteOnly()) - { - delete &let_drNewToken; - return; - } - - csv_assert(pCurAtTag); - DT_TextToken * dpText = dynamic_cast< DT_TextToken* >(&let_drNewToken); - if (dpText != 0) - pCurAtTag->SetName(dpText->GetText()); - else - pCurAtTag->SetName("parameter ?"); - delete &let_drNewToken; - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag; -} - -void -SapiDocu_PE::SetCurSeeAlsoAtTagLinkText( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pCurAtTag); - - if (let_drNewToken.IsWhiteOnly()) - { - delete &let_drNewToken; - return; - } - - DT_TextToken * pText = dynamic_cast< DT_TextToken* >(&let_drNewToken); - if (pText != 0) - pCurAtTag->SetName(pText->GetText()); - else - { - DT_MupType * - pTypeBegin = dynamic_cast< DT_MupType* >(&let_drNewToken); - DT_MupMember * - pMemberBegin = dynamic_cast< DT_MupMember* >(&let_drNewToken); - if (pTypeBegin != 0 OR pMemberBegin != 0) - { - sCurAtSeeType_byXML.reset(); - - sCurAtSeeType_byXML - << ( pTypeBegin != 0 - ? pTypeBegin->Scope() - : pMemberBegin->Scope() ); - - if (sCurAtSeeType_byXML.tellp() > 0) - { - sCurAtSeeType_byXML - << "::"; - } - delete &let_drNewToken; - fCurTokenAddFunction = &SapiDocu_PE::SetCurSeeAlsoAtTagLinkText_2; - return; - } - else - { - pCurAtTag->SetName("? (no identifier found)"); - } - } - delete &let_drNewToken; - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag; -} - -void -SapiDocu_PE::SetCurSeeAlsoAtTagLinkText_2( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pCurAtTag); - - if (let_drNewToken.IsWhiteOnly()) - { - delete &let_drNewToken; - return; - } - - DT_TextToken * - pText = dynamic_cast< DT_TextToken* >(&let_drNewToken); - if (pText != 0) - { - sCurAtSeeType_byXML - << pText->GetText(); - pCurAtTag->SetName(sCurAtSeeType_byXML.c_str()); - } - else - { - pCurAtTag->SetName("? (no identifier found)"); - } - sCurAtSeeType_byXML.reset(); - delete &let_drNewToken; - fCurTokenAddFunction = &SapiDocu_PE::SetCurSeeAlsoAtTagLinkText_3; -} - -void -SapiDocu_PE::SetCurSeeAlsoAtTagLinkText_3( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pCurAtTag); - - if (let_drNewToken.IsWhiteOnly()) - { - delete &let_drNewToken; - return; - } - - /// Could emit warning, but don't because this parser is obsolete. -// Tok_XmlLink_BeginTag * -// pLinkEnd = dynamic_cast< Tok_XmlLink_EndTag* >(&let_drNewToken); -// if (pLinkEnd == 0) -// { -// warn_aboutMissingClosingTag(); -// } - - delete &let_drNewToken; - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2CurAtTag; -} - -const String - C_sSinceFormat("Correct version format: \"OOo <major>.<minor>[.<micro> if micro is not 0]\"."); - -void -SapiDocu_PE::SetCurSinceAtTagVersion_OOo( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pCurAtTag); - - DT_TextToken * pToken = dynamic_cast< DT_TextToken* >(&let_drNewToken); - if (pToken == 0) - { - delete &let_drNewToken; - return; - } - - const String - sVersion(pToken->GetText()); - if (NOT CheckVersionSyntax_OOo(sVersion)) - { - Cerr() << "Version information in @since tag has incorrect format.\n" - << "Found: \"" << sVersion << "\"\n" - << C_sSinceFormat - << Endl(); - exit(1); - } - - const autodoc::CommandLine & - rCommandLine = autodoc::CommandLine::Get_(); - if (NOT rCommandLine.DoesTransform_SinceTag()) - pCurAtTag->AddToken(let_drNewToken); - - fCurTokenAddFunction = &SapiDocu_PE::SetCurSinceAtTagVersion_Number; -} - -void -SapiDocu_PE::SetCurSinceAtTagVersion_Number( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pCurAtTag); - - DT_TextToken * pToken = dynamic_cast< DT_TextToken* >(&let_drNewToken); - if (pToken == 0) - { - if (dynamic_cast< DT_White* >(&let_drNewToken) != 0) - { - String & - sValue = pCurAtTag->Access_Text().Access_TextOfFirstToken(); - StreamLock - sHelp(1000); - sValue = sHelp() << sValue << " " << c_str; - } - - delete &let_drNewToken; - return; - } - - const String - sVersion(pToken->GetText()); - if (NOT CheckVersionSyntax_Number(sVersion)) - { - Cerr() << "Version information in @since tag has incorrect format.\n" - << "Found: \"" << sVersion << "\"\n" - << C_sSinceFormat - << Endl(); - exit(1); - } - - const autodoc::CommandLine & - rCommandLine = autodoc::CommandLine::Get_(); - if ( rCommandLine.DoesTransform_SinceTag()) - { - pCurAtTag->AddToken(let_drNewToken); - - if (rCommandLine.DisplayOf_SinceTagValue(sVersion).empty()) - { - // This is the numbered part, but we don't know it. - delete &let_drNewToken; - - StreamLock - sl(200); - sl() - << "Since-value '" - << sVersion - << "' not found in translation table."; - throw X_Docu("since", sl().c_str()); - } - } - else - { - AddDocuToken2SinceAtTag(let_drNewToken); - } - fCurTokenAddFunction = &SapiDocu_PE::AddDocuToken2SinceAtTag; -} - -void -SapiDocu_PE::AddDocuToken2SinceAtTag( DYN ary::inf::DocuToken & let_drNewToken ) -{ - csv_assert(pCurAtTag); - String & - sValue = pCurAtTag->Access_Text().Access_TextOfFirstToken(); - StreamLock - sHelp(1000); - - DT_TextToken * - pToken = dynamic_cast< DT_TextToken* >(&let_drNewToken); - if (pToken != 0) - { - sValue = sHelp() << sValue << pToken->GetText() << c_str; - } - else if (dynamic_cast< DT_White* >(&let_drNewToken) != 0) - { - sValue = sHelp() << sValue << " " << c_str; - } - delete &let_drNewToken; -} - -bool -SapiDocu_PE::CheckVersionSyntax_OOo(const String & i_versionPart1) -{ - return i_versionPart1 == "OOo" - OR i_versionPart1 == "OpenOffice.org"; -} - -bool -SapiDocu_PE::CheckVersionSyntax_Number(const String & i_versionPart2) -{ - if (i_versionPart2.length () == 0) - return false; - - const char - pt = '.'; - unsigned int countDigit = 0; - unsigned int countPoint = 0; - const char * - pFirstPoint = 0; - const char * - pLastPoint = 0; - - for ( const char * p = i_versionPart2.begin(); - *p != 0; - ++p ) - { - if ( std::isdigit(*p) ) - ++countDigit; - else if (*p == pt) - { - if (countPoint == 0) - pFirstPoint = p; - pLastPoint = p; - ++countPoint; - } - } - - if ( countDigit + countPoint == i_versionPart2.length() // only digits and points - AND pFirstPoint != 0 AND countPoint < 3 // 1 or 2 points - AND pFirstPoint + 1 != pLastPoint // there are digits between two points - AND *i_versionPart2.begin() != pt AND *(pLastPoint + 1) != 0 // points are surrounded by digits - AND (*(pLastPoint + 1) != '0' OR pLastPoint == pFirstPoint) ) // the first micro-digit is not 0 - { - return true; - } - return false; -} - -const char * -AtTagTitle( const Tok_AtTag & i_rToken ) -{ - switch (i_rToken.Id()) - { - case Tok_AtTag::author: return ""; - case Tok_AtTag::see: return "See also"; - case Tok_AtTag::param: return "Parameters"; - case Tok_AtTag::e_return: return "Returns"; - case Tok_AtTag::e_throw: return "Throws"; - case Tok_AtTag::example: return "Example"; - case Tok_AtTag::deprecated: return "Deprecated"; - case Tok_AtTag::suspicious: return ""; - case Tok_AtTag::missing: return ""; - case Tok_AtTag::incomplete: return ""; - case Tok_AtTag::version: return ""; - case Tok_AtTag::guarantees: return "Guarantees"; - case Tok_AtTag::exception: return "Exception"; - case Tok_AtTag::since: return "Since version"; - default: - // See below. - ; - } - return i_rToken.Text(); -} - - - -} // namespace dsapi -} // namespace csi - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |