summaryrefslogtreecommitdiffstats
path: root/autodoc/source/ary/cpp/usedtype.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'autodoc/source/ary/cpp/usedtype.cxx')
-rw-r--r--autodoc/source/ary/cpp/usedtype.cxx578
1 files changed, 0 insertions, 578 deletions
diff --git a/autodoc/source/ary/cpp/usedtype.cxx b/autodoc/source/ary/cpp/usedtype.cxx
deleted file mode 100644
index bde91e5b644b..000000000000
--- a/autodoc/source/ary/cpp/usedtype.cxx
+++ /dev/null
@@ -1,578 +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 <ary/cpp/usedtype.hxx>
-
-
-// NOT FULLY DEFINED SERVICES
-#include <cosv/tpl/tpltools.hxx>
-#include <ary/symtreenode.hxx>
-#include <ary/cpp/c_ce.hxx>
-#include <ary/cpp/c_class.hxx>
-#include <ary/cpp/c_namesp.hxx>
-#include <ary/cpp/c_slntry.hxx>
-#include <ary/cpp/c_tydef.hxx>
-#include <ary/cpp/c_traits.hxx>
-#include <ary/cpp/c_types4cpp.hxx>
-#include <ary/cpp/c_gate.hxx>
-#include <ary/cpp/cp_ce.hxx>
-#include <ary/cpp/cp_type.hxx>
-#include <ary/doc/d_oldcppdocu.hxx>
-#include <ary/getncast.hxx>
-#include "tplparam.hxx"
-
-
-
-namespace
-{
-
-using namespace ::ary::cpp;
-typedef std::vector< ary::cpp::E_ConVol > PtrLevelVector;
-
-
-inline bool
-result2bool( intt i_nResult )
- { return i_nResult < 0; }
-
-
-intt compare_PtrLevelVector(
- const PtrLevelVector &
- i_r1,
- const PtrLevelVector &
- i_r2 );
-inline intt
-compare_ConVol( E_ConVol i_e1,
- E_ConVol i_e2 )
- { return intt(i_e1) - intt(i_e2); }
-
-inline intt
-compare_bool( bool i_b1,
- bool i_b2 )
- { return i_b1 == i_b2
- ? 0
- : i_b1
- ? -1
- : +1; }
-inline intt
-compare_Specialisation( E_TypeSpecialisation i_e1,
- E_TypeSpecialisation i_e2 )
- { return intt(i_e1) - intt(i_e2); }
-
-inline bool
-is_const( E_ConVol i_eCV )
- { return ( intt(i_eCV) & intt(CONVOL_const) ) != 0; }
-
-inline bool
-is_volatile( E_ConVol i_eCV )
- { return ( intt(i_eCV) & intt(CONVOL_volatile) ) != 0; }
-
-
-intt
-compare_PtrLevelVector( const PtrLevelVector & i_r1,
- const PtrLevelVector & i_r2 )
-{
- intt nResult = i_r1.size() - i_r2.size();
- if ( nResult != 0 )
- return nResult;
-
- PtrLevelVector::const_iterator it1 = i_r1.begin();
- PtrLevelVector::const_iterator it1End = i_r1.end();
- PtrLevelVector::const_iterator it2 = i_r2.begin();
-
- for ( ; it1 != it1End; ++it1, ++it2 )
- {
- nResult = compare_ConVol(*it1, *it2);
- if ( nResult != 0 )
- return nResult;
- }
-
- return 0;
-}
-
-
-} // anonymous namespace
-
-
-
-
-namespace ary
-{
-namespace cpp
-{
-
-typedef symtree::Node<CeNode_Traits> CeNode;
-typedef ut::NameChain::const_iterator nc_iter;
-
-Ce_id CheckForRelatedCe_inNode(
- const CeNode & i_node,
- const StringVector& i_qualification,
- const String & i_name );
-
-
-UsedType::UsedType(Ce_id i_scope )
- : aPath(),
- aPtrLevels(),
- eConVol_Type(CONVOL_none),
- bIsReference(false),
- bIsAbsolute(false),
- bRefers2BuiltInType(false),
- eTypeSpecialisation(TYSP_none),
- nRelatedCe(0),
- nScope(i_scope)
-{
-}
-
-UsedType::~UsedType()
-{
-}
-
-
-bool
-UsedType::operator<( const UsedType & i_rType ) const
-{
- intt nResult = compare_bool( bIsAbsolute, i_rType.bIsAbsolute );
- if ( nResult != 0 )
- return result2bool(nResult);
-
- nResult = static_cast<intt>(nScope.Value())
- -
- static_cast<intt>(i_rType.nScope.Value());
- if ( nResult != 0 )
- return result2bool(nResult);
-
- nResult = aPath.Compare( i_rType.aPath );
- if ( nResult != 0 )
- return result2bool(nResult);
-
- nResult = compare_ConVol( eConVol_Type, i_rType.eConVol_Type );
- if ( nResult != 0 )
- return result2bool(nResult);
-
- nResult = compare_PtrLevelVector( aPtrLevels, i_rType.aPtrLevels );
- if ( nResult != 0 )
- return result2bool(nResult);
-
- nResult = compare_bool( bIsReference, i_rType.bIsReference );
- if ( nResult != 0 )
- return result2bool(nResult);
-
- nResult = compare_Specialisation( eTypeSpecialisation, i_rType.eTypeSpecialisation );
- if ( nResult != 0 )
- return result2bool(nResult);
-
- return false;
-}
-
-void
-UsedType::Set_Absolute()
-{
- bIsAbsolute = true;
-}
-
-void
-UsedType::Add_NameSegment( const char * i_sSeg )
-{
- aPath.Add_Segment(i_sSeg);
-}
-
-ut::List_TplParameter &
-UsedType::Enter_Template()
-{
- return aPath.Templatize_LastSegment();
-}
-
-void
-UsedType::Set_Unsigned()
-{
- eTypeSpecialisation = TYSP_unsigned;
-}
-
-void
-UsedType::Set_Signed()
-{
- eTypeSpecialisation = TYSP_signed;
-}
-
-void
-UsedType::Set_BuiltIn( const char * i_sType )
-{
- aPath.Add_Segment(i_sType);
- bRefers2BuiltInType = true;
-}
-
-void
-UsedType::Set_Const()
-{
- if (PtrLevel() == 0)
- eConVol_Type = E_ConVol(eConVol_Type | CONVOL_const);
- else
- aPtrLevels.back() = E_ConVol(aPtrLevels.back() | CONVOL_const);
-}
-
-void
-UsedType::Set_Volatile()
-{
- if (PtrLevel() == 0)
- eConVol_Type = E_ConVol(eConVol_Type | CONVOL_volatile);
- else
- aPtrLevels.back() = E_ConVol(aPtrLevels.back() | CONVOL_volatile);
-}
-
-void
-UsedType::Add_PtrLevel()
-{
- aPtrLevels.push_back(CONVOL_none);
-}
-
-void
-UsedType::Set_Reference()
-{
- bIsReference = true;
-}
-
-inline bool
-IsInternal(const ary::cpp::CodeEntity & i_ce)
-{
- const ary::doc::OldCppDocu *
- docu = dynamic_cast< const ary::doc::OldCppDocu* >(i_ce.Docu().Data());
- if (docu != 0)
- return docu->IsInternal();
- return false;
-}
-
-
-void
-UsedType::Connect2Ce( const CePilot & i_ces)
-{
- StringVector
- qualification;
- String
- name;
- Get_NameParts(qualification, name);
-
- for ( const CeNode * scope_node = CeNode_Traits::NodeOf_(
- i_ces.Find_Ce(nScope));
- scope_node != 0;
- scope_node = scope_node->Parent() )
- {
- nRelatedCe = CheckForRelatedCe_inNode(*scope_node, qualification, name);
- if ( nRelatedCe.IsValid() )
- {
- if ( IsInternal(i_ces.Find_Ce(nRelatedCe)) )
- nRelatedCe = Ce_id(0);
- return;
- }
- } // end for
-}
-
-void
-UsedType::Connect2CeOnlyKnownViaBaseClass(const Gate & i_gate)
-{
- csv_assert(nScope.IsValid());
- CesResultList
- instances = i_gate.Ces().Search_TypeName( LocalName() );
-
- // If there are no matches, or only one match that was already
- // accepted, all work is done.
- if ( (nRelatedCe.IsValid() AND instances.size() == 1)
- OR instances.size() == 0 )
- return;
-
- StringVector
- qualification;
- String
- name;
- Get_NameParts(qualification, name);
-
- const CodeEntity &
- scopece = i_gate.Ces().Find_Ce(nScope);
-
- // Else search for declaration in own class and then in base classes.
- // These would be of higher priority than those in parent namespaces.
- Ce_id
- foundce = RecursiveSearchCe_InBaseClassesOf(
- scopece, qualification, name, i_gate);
- if (foundce.IsValid())
- nRelatedCe = foundce;
-
- if ( nRelatedCe.IsValid() AND IsInternal(i_gate.Ces().Find_Ce(nRelatedCe)) )
- {
- nRelatedCe = Ce_id(0);
- }
-}
-
-bool
-UsedType::IsBuiltInType() const
-{
- return bRefers2BuiltInType
- AND aPtrLevels.size() == 0
- AND NOT bIsReference
- AND eConVol_Type == ary::cpp::CONVOL_none;
-}
-
-const String &
-UsedType::LocalName() const
-{
- return aPath.LastSegment();
-}
-
-E_TypeSpecialisation
-UsedType::TypeSpecialisation() const
-{
- return eTypeSpecialisation;
-}
-
-void
-UsedType::do_Accept(csv::ProcessorIfc & io_processor) const
-{
- csv::CheckedCall(io_processor,*this);
-}
-
-ary::ClassId
-UsedType::get_AryClass() const
-{
- return class_id;
-}
-
-Rid
-UsedType::inq_RelatedCe() const
-{
- return nRelatedCe.Value();
-}
-
-bool
-UsedType::inq_IsConst() const
-{
- if ( is_const(eConVol_Type) )
- return true;
- for ( PtrLevelVector::const_iterator it = aPtrLevels.begin();
- it != aPtrLevels.end();
- ++it )
- {
- if ( is_const(*it) )
- return true;
- }
-
- return false;
-}
-
-void
-UsedType::inq_Get_Text( StreamStr & o_rPreName,
- StreamStr & o_rName,
- StreamStr & o_rPostName,
- const Gate & i_rGate ) const
-{
- if ( is_const(eConVol_Type) )
- o_rPreName << "const ";
- if ( is_volatile(eConVol_Type) )
- o_rPreName << "volatile ";
- if ( bIsAbsolute )
- o_rPreName << "::";
-
- aPath.Get_Text( o_rPreName, o_rName, o_rPostName, i_rGate );
-
- for ( PtrLevelVector::const_iterator it = aPtrLevels.begin();
- it != aPtrLevels.end();
- ++it )
- {
- o_rPostName << " *";
- if ( is_const(*it) )
- o_rPostName << " const";
- if ( is_volatile(*it) )
- o_rPostName << " volatile";
- }
- if ( bIsReference )
- o_rPostName << " &";
-}
-
-Ce_id
-UsedType::RecursiveSearchCe_InBaseClassesOf( const CodeEntity & i_mayBeClass,
- const StringVector & i_myQualification,
- const String & i_myName,
- const Gate & i_gate ) const
-{
- // Find in this class?
- const CeNode *
- basenode = CeNode_Traits::NodeOf_(i_mayBeClass);
- if (basenode == 0)
- return Ce_id(0);
- Ce_id
- found = CheckForRelatedCe_inNode(*basenode, i_myQualification, i_myName);
- if (found.IsValid())
- return found;
-
-
- const Class *
- cl = ary_cast<Class>(&i_mayBeClass);
- if (cl == 0)
- return Ce_id(0);
-
- for ( List_Bases::const_iterator it = cl->BaseClasses().begin();
- it != cl->BaseClasses().end();
- ++it )
- {
- csv_assert((*it).nId.IsValid());
- Ce_id
- base = i_gate.Types().Find_Type((*it).nId).RelatedCe();
- while (base.IsValid() AND is_type<Typedef>(i_gate.Ces().Find_Ce(base)) )
- {
- base = i_gate.Types().Find_Type(
- ary_cast<Typedef>(i_gate.Ces().Find_Ce(base))
- .DescribingType() )
- .RelatedCe();
- }
-
- if (base.IsValid())
- {
- const CodeEntity &
- basece = i_gate.Ces().Find_Ce(base);
- found = RecursiveSearchCe_InBaseClassesOf(
- basece, i_myQualification, i_myName, i_gate);
- if (found.IsValid())
- return found;
- }
- } // end for
-
- return Ce_id(0);
-}
-
-
-void
-UsedType::Get_NameParts( StringVector & o_qualification,
- String & o_name )
-{
- nc_iter nit = aPath.begin();
- nc_iter nit_end = aPath.end();
- csv_assert(nit != nit_end); // Each UsedType has to have a local name.
-
- --nit_end;
- o_name = (*nit_end).Name();
- for ( ;
- nit != nit_end;
- ++nit )
- {
- o_qualification.push_back( (*nit).Name() );
- }
-}
-
-Ce_id
-CheckForRelatedCe_inNode( const CeNode & i_node,
- const StringVector & i_qualification,
- const String & i_name )
-{
- if (i_qualification.size() > 0)
- {
- Ce_id
- ret(0);
- i_node.SearchBelow( ret,
- i_qualification.begin(),
- i_qualification.end(),
- i_name );
- return ret;
- }
- else
- {
- return i_node.Search(i_name);
- }
-}
-
-
-namespace ut
-{
-
-List_TplParameter::List_TplParameter()
- : aTplParameters()
-{
-}
-
-List_TplParameter::~List_TplParameter()
-{
- csv::erase_container_of_heap_ptrs(aTplParameters);
-}
-
-void
-List_TplParameter::AddParam_Type( Type_id i_nType )
-{
- aTplParameters.push_back( new TplParameter_Type(i_nType) );
-}
-
-void
-List_TplParameter::Get_Text( StreamStr & o_rOut,
- const ary::cpp::Gate & i_rGate ) const
-{
- Vector_TplArgument::const_iterator it = aTplParameters.begin();
- Vector_TplArgument::const_iterator itEnd = aTplParameters.end();
-
- if ( it == itEnd )
- {
- o_rOut << "<>";
- return;
- }
-
- o_rOut << "< ";
-
- (*it)->Get_Text( o_rOut, i_rGate );
-
- for ( ++it; it != itEnd; ++it )
- {
- o_rOut << ", ";
- (*it)->Get_Text( o_rOut, i_rGate );
- }
-
- o_rOut << " >";
-}
-
-intt
-List_TplParameter::Compare( const List_TplParameter & i_rOther ) const
-{
- intt nResult = intt(aTplParameters.size()) - intt(i_rOther.aTplParameters.size());
-
- if (nResult != 0)
- return nResult;
-
- Vector_TplArgument::const_iterator it1 = aTplParameters.begin();
- Vector_TplArgument::const_iterator it1End = aTplParameters.end();
- Vector_TplArgument::const_iterator it2 = i_rOther.aTplParameters.begin();
-
- for ( ; it1 != it1End; ++it1, ++it2 )
- {
- nResult = (*it1)->Compare( *(*it2) );
- if (nResult != 0)
- return nResult;
- }
-
- return 0;
-}
-
-
-} // namespace ut
-} // namespace cpp
-} // namespace ary
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */