diff options
Diffstat (limited to 'autodoc/source/ary/kernel/segmentedname.cxx')
-rw-r--r-- | autodoc/source/ary/kernel/segmentedname.cxx | 272 |
1 files changed, 0 insertions, 272 deletions
diff --git a/autodoc/source/ary/kernel/segmentedname.cxx b/autodoc/source/ary/kernel/segmentedname.cxx deleted file mode 100644 index 8d4cf4503843..000000000000 --- a/autodoc/source/ary/kernel/segmentedname.cxx +++ /dev/null @@ -1,272 +0,0 @@ -/************************************************************************* - * - * 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: segmentedname.cxx,v $ - * $Revision: 1.3 $ - * - * 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 <ary/segmentedname.hxx> - - -// NOT FULLY DEFINED SERVICES - - - -namespace ary -{ -namespace sn // segmented name -{ - - -//********************* NameSegment ******************// - -NameSegment::NameSegment( const char * i_name ) - : sName(i_name), - pTemplateArguments() -{ -} - -NameSegment::NameSegment( const String & i_name ) - : sName(i_name), - pTemplateArguments() -{ -} - -NameSegment::NameSegment( const NameSegment & i_other ) - : sName(i_other.sName), - pTemplateArguments() -{ - if (i_other.TemplateArguments() != 0) - pTemplateArguments = new String(*i_other.TemplateArguments()); -} - -NameSegment::~NameSegment() -{ -} - -NameSegment & -NameSegment::operator=( const NameSegment & i_other ) -{ - sName = i_other.sName; - if (i_other.TemplateArguments() != 0) - pTemplateArguments = new String(*i_other.TemplateArguments()); - return *this; -} - -bool -NameSegment::operator<( const NameSegment & i_other ) const -{ - if (sName < i_other.sName) - return true; - else if (sName == i_other.sName) - { - if (i_other.TemplateArguments() == 0) - return false; - else if (TemplateArguments() == 0) - return true; - else - return *TemplateArguments() < *i_other.TemplateArguments(); - } - - return false; -} - -String & -NameSegment::Make_Template() -{ - return *(pTemplateArguments = new String); -} - -void -NameSegment::Get_Text( StreamStr & o_out ) const -{ - o_out << sName; - if ( pTemplateArguments ) - o_out << '<' << *pTemplateArguments << '>'; -} - - -} // namespace sn - - - - - -//********************* SegmentedName ******************// -SegmentedName::SegmentedName( const char * i_text ) - : aSegments(), - bIsAbsolute(strncmp(i_text,"::",2) == 0) -{ - Interpret_Text(i_text + (bIsAbsolute ? 2 : 0)); -} - -SegmentedName::SegmentedName( const String & i_text ) - : aSegments(), - bIsAbsolute(strncmp(i_text.c_str(),"::",2) == 0) -{ - Interpret_Text(i_text.c_str() + (bIsAbsolute ? 2 : 0)); -} - -SegmentedName::~SegmentedName() -{ -} - -bool -SegmentedName::operator<( const SegmentedName & i_other ) const -{ - if (IsAbsolute() AND NOT i_other.IsAbsolute()) - return true; - if (NOT IsAbsolute() AND i_other.IsAbsolute()) - return false; - return aSegments < i_other.aSegments; -} - -void -SegmentedName::Get_Text( StreamStr & o_out ) const -{ - if ( IsAbsolute() ) - o_out << "::"; - - sn::NameChain::const_iterator - it = aSegments.begin(); - sn::NameChain::const_iterator - itEnd = aSegments.end(); - if (it != itEnd) - (*it).Get_Text(o_out); - for ( ++it; - it != itEnd; - ++it ) - { - o_out << "::"; - (*it).Get_Text(o_out); - } - o_out << '>'; -} - - -void -SegmentedName::Interpret_Text( const char * i_text ) -{ - const int blank = 1; - const int name = 2; - const int delimiter = 3; - const int open_tpl = 4; - - const int - C_aTextInterpreter[128] = - { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, blank, blank, 0, 0, blank, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - blank, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - name, name, name, name, name, name, name, name, - name, name, delimiter, 0, open_tpl, 0, 0, 0, - - 0, name, name, name, name, name, name, name, - name, name, name, name, name, name, name, name, - name, name, name, name, name, name, name, name, - name, name, name, 0, 0, 0, 0, name, - 0, name, name, name, name, name, name, name, - name, name, name, name, name, name, name, name, - name, name, name, name, name, name, name, name, - name, name, name, 0, 0, 0, 0, 0 - }; - - Dyn<sn::NameSegment> - pNextSegment(0); - const char * pTokenStart = i_text; - - intt nDelimiterStep = 0; // 0 = in-name, - // 1 = first ':' found - uintt nTemplateLevel = 0; - bool bTokenFinished = false; - - const char * iter = i_text; - for ( ; *iter != 0; ++iter) - { - if (nTemplateLevel == 0) - { - switch (C_aTextInterpreter[int(*iter)]) - { - case name: - if (bTokenFinished) - { - aSegments.push_back(*pNextSegment.Release()); - pTokenStart = iter; - nDelimiterStep = 0; - bTokenFinished = false; - } - break; - case delimiter: - if (nDelimiterStep == 0) - { - pNextSegment = new sn::NameSegment(String(pTokenStart,iter)); - bTokenFinished = true; - } - ++nDelimiterStep; - break; - case open_tpl: - pNextSegment = new sn::NameSegment(String(pTokenStart,iter)); - bTokenFinished = true; - break; - default: - csv_assert(false); - } // end switch - } - else // nTemplateLevel > 0 - { - if (bTokenFinished) - { - pTokenStart = iter; - bTokenFinished = false; - } - if (*iter == '<') - ++nTemplateLevel; - else if (*iter == '>') - { - --nTemplateLevel; - if (nTemplateLevel == 0) - { - csv_assert(pNextSegment); - pNextSegment->Make_Template() = String(pTokenStart, iter); - bTokenFinished = true; - } - } - } // end if (nTemplateLevel == 0) - } // end for - - if (NOT bTokenFinished AND pTokenStart != iter) - { - pNextSegment = new sn::NameSegment(String(pTokenStart,iter)); - aSegments.push_back(*pNextSegment.Release()); - } -} - - -} // namespace ary |