summaryrefslogtreecommitdiff
path: root/xml2cmp/source/finder
diff options
context:
space:
mode:
authorNorbert Thiebaud <nthiebaud@gmail.com>2011-09-14 10:10:34 -0500
committerNorbert Thiebaud <nthiebaud@gmail.com>2011-09-14 10:10:49 -0500
commit0a97ece91e8a87724230f39276f0a7537b1566c3 (patch)
tree7008ee761af3294548978c3a0421608000f60781 /xml2cmp/source/finder
parent8578e3c80d99da0b47cd450a9be61cef28f411b0 (diff)
merge srvdepy functions into xml2cmp and simplify xml2cmp gbuild
Diffstat (limited to 'xml2cmp/source/finder')
-rw-r--r--xml2cmp/source/finder/dependy.cxx225
-rw-r--r--xml2cmp/source/finder/dependy.hxx118
2 files changed, 0 insertions, 343 deletions
diff --git a/xml2cmp/source/finder/dependy.cxx b/xml2cmp/source/finder/dependy.cxx
deleted file mode 100644
index 8a7ae0a8d94f..000000000000
--- a/xml2cmp/source/finder/dependy.cxx
+++ /dev/null
@@ -1,225 +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 "dependy.hxx"
-#include <iostream>
-#include "../support/syshelp.hxx"
-#include "../support/list.hxx"
-#include "../xcd/xmltree.hxx"
-#include "../xcd/parse.hxx"
-
-
-
-Simstr ShortName(const Simstr & i_rService);
-
-
-
-Service::Service( const char * i_sName )
- : sName(i_sName)
- // aImplementations
-{
-}
-
-ServiceInfo &
-Service::AddImplementation( const char * i_sLibrary )
-{
- ServiceInfo * ret = new ServiceInfo(i_sLibrary);
- aImplementations.push_back(ret);
- return *ret;
-}
-
-ServiceInfo::ServiceInfo( const char * i_sLibrary )
- : sImplementingLibrary(i_sLibrary)
- // aNeededServices
-{
-}
-
-void
-ServiceInfo::AddDependency( const char * i_sNeededService )
-{
- aNeededServices.push_back(i_sNeededService);
-}
-
-DependencyFinder::DependencyFinder()
-{
-}
-
-DependencyFinder::~DependencyFinder()
-{
-}
-
-void
-DependencyFinder::GatherData( const char * i_sSearchDirectory )
-{
- List<Simstr> aFiles;
- GatherFileNames( aFiles, i_sSearchDirectory );
-
- for ( unsigned i = 0; i < aFiles.size(); ++i )
- {
- ReadFile( aFiles[i].str() );
- }
-}
-
-void
-DependencyFinder::FindNeededServices( StringVector & o_rLibraries,
- StringVector & o_rServices,
- const Simstr & i_rService )
-{
- Map_Services::const_iterator itService = aServices.find(i_rService);
- if ( itService == aServices.end() )
- {
- std::cerr << "Error: Service \""
- << i_rService.str()
- << "\" not found."
- << std::endl;
- return ;
- }
-
- aResult_Libraries.erase( aResult_Libraries.begin(), aResult_Libraries.end() );
- aResult_Services.erase( aResult_Services.begin(), aResult_Services.end() );
-
- Add2Result( *(*itService).second );
-
- for ( std::set< Simstr >::const_iterator il = aResult_Libraries.begin();
- il != aResult_Libraries.end();
- ++il )
- {
- o_rLibraries.push_back(*il);
- }
-
- for ( std::set< Simstr >::const_iterator is = aResult_Services.begin();
- is != aResult_Services.end();
- ++is )
- {
- o_rServices.push_back(*is);
- }
-}
-
-void
-DependencyFinder::ReadFile( const char * i_sFilename )
-{
- ModuleDescription aModule;
- X2CParser aParser(aModule);
-
- if ( !aParser.Parse(i_sFilename) )
- {
- std::cerr << "Error: File \""
- << i_sFilename
- << "\" could not be parsed."
- << std::endl;
- return;
- }
-
- // GetResults:
- Simstr sModule = aModule.ModuleName();
-
- List < const MultipleTextElement* > aImplServices;
- List < const MultipleTextElement* > aNeededServices;
-
- aModule.Get_SupportedServices(aImplServices);
- aModule.Get_ServiceDependencies(aNeededServices);
-
- unsigned nImplServicesSize = aImplServices.size();
- unsigned nNeededServicesSize = aNeededServices.size();
-
- for ( unsigned i = 0; i < nImplServicesSize; ++i )
- {
- const MultipleTextElement & rImpl = *aImplServices[i];
-
- unsigned nImplDataSize = rImpl.Size();
- for ( unsigned di = 0; di < nImplDataSize; ++di )
- {
- Simstr sService = ShortName(rImpl.Data(di));
- Service * pService = aServices[sService];
- if (pService == 0)
- {
- pService = new Service(rImpl.Data(di));
- aServices[sService] = pService;
- }
- ServiceInfo & rSInfo = pService->AddImplementation(sModule);
-
- for ( unsigned n = 0; n < nNeededServicesSize; ++n )
- {
- unsigned nNeededDataSize = aNeededServices[n]->Size();
- for ( unsigned dn = 0; dn < nNeededDataSize; ++dn )
- {
- if (! aNeededServices[n]->Data(dn).is_no_text())
- rSInfo.AddDependency( ShortName(aNeededServices[n]->Data(dn)) );
- } // end for dn
- } // end for n
- } // end for di
- } // end for i
-}
-
-void
-DependencyFinder::Add2Result( const Service & i_rService )
-{
- const ServiceInfo & rSInfo = i_rService.FirstImplementation();
- aResult_Libraries.insert(rSInfo.Library());
-
- const ServiceInfo::List_NeededServices & rNeededs
- = rSInfo.NeededServices();
- for ( StringVector::const_iterator it = rNeededs.begin();
- it != rNeededs.end();
- ++it )
- {
- std::pair< std::set< Simstr >::iterator, bool > aInsertResult
- = aResult_Services.insert(*it);
- if (aInsertResult.second)
- { // Needed service not yet known
- Map_Services::const_iterator itFound = aServices.find(*it);
- if ( itFound == aServices.end() )
- {
- std::cerr << "Needed service \""
- << (*it).str()
- << "\" not found,"
- << std::endl;
- }
- else
- {
- Add2Result( *(*itFound).second );
- }
- } // endif (! aInsertResult.second)
- } // end for (it)
-}
-
-
-
-Simstr
-ShortName(const Simstr & i_rService)
-{
- const char * pStart = i_rService.str();
- const char * pEnd = strchr(pStart,' ');
- if (pEnd != 0)
- return Simstr(pStart, 0, int(pEnd-pStart));
- else
- return i_rService;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xml2cmp/source/finder/dependy.hxx b/xml2cmp/source/finder/dependy.hxx
deleted file mode 100644
index c2c2d7d9233f..000000000000
--- a/xml2cmp/source/finder/dependy.hxx
+++ /dev/null
@@ -1,118 +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.
- *
- ************************************************************************/
-
-#ifndef X2C_DEPENDY_HXX
-#define X2C_DEPENDY_HXX
-
-
-#include <vector>
-#include <map>
-#include <set>
-#include <../support/sistr.hxx>
-
-class Service;
-class ServiceInfo;
-
-typedef std::vector< Simstr> StringVector;
-typedef std::vector< ServiceInfo* > List_Implementations;
-typedef std::map< Simstr, Service* > Map_Services;
-
-class Service
-{
- public:
- Service(
- const char * i_sName );
-
- ServiceInfo & AddImplementation(
- const char * i_sLibrary ); /// That is: module-name.
-
- const Simstr & Name() const { return sName; }
- const ServiceInfo & FirstImplementation() const
- { return *aImplementations[0]; }
-
- private:
- Simstr sName;
- List_Implementations
- aImplementations;
-};
-
-class ServiceInfo
-{
- public:
- typedef StringVector List_NeededServices;
-
- ServiceInfo(
- const char * i_sLibrary );
-
- void AddDependency(
- const char * i_sNeededService );
-
- const Simstr & Library() const { return sImplementingLibrary; }
- const List_NeededServices &
- NeededServices() const { return aNeededServices; }
-
-
- private:
- Simstr sImplementingLibrary;
- List_NeededServices aNeededServices;
-};
-
-
-class DependencyFinder
-{
- public:
- DependencyFinder();
- ~DependencyFinder();
-
- void GatherData(
- const char * i_sSearchDirectory );
-
- void FindNeededServices(
- StringVector & o_rLibraries,
- StringVector & o_rServices,
- const Simstr & i_rService );
- private:
- void ReadFile(
- const char * i_sFilename );
- void Add2Result(
- const Service & i_rService );
-
- // Data
- Map_Services aServices;
-
- // Temporary data
- std::set< Simstr > aResult_Libraries;
- std::set< Simstr > aResult_Services;
-};
-
-
-
-#endif
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */