OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ossimSharedPluginRegistry Class Reference

#include <ossimSharedPluginRegistry.h>

Public Member Functions

virtual ~ossimSharedPluginRegistry ()
 
bool registerPlugin (const ossimFilename &filename, const ossimString &options="")
 
bool unregisterPlugin (int idx)
 
bool unregisterPlugin (ossimPluginLibrary *plugin)
 
const ossimPluginLibrarygetPlugin (const ossimFilename &filename) const
 
ossimPluginLibrarygetPlugin (const ossimFilename &filename)
 
ossim_uint32 getIndex (const ossimPluginLibrary *lib) const
 
ossimPluginLibrarygetPlugin (ossim_uint32 idx)
 
const ossimPluginLibrarygetPlugin (ossim_uint32 idx) const
 
ossim_uint32 getNumberOfPlugins () const
 
bool isLoaded (const ossimFilename &filename) const
 Checks if filename is already loaded to avoid duplication. More...
 
void printAllPluginInformation (std::ostream &out)
 

Static Public Member Functions

static ossimSharedPluginRegistryinstance ()
 

Protected Member Functions

 ossimSharedPluginRegistry ()
 
 ossimSharedPluginRegistry (const ossimSharedPluginRegistry &)
 
void operator= (const ossimSharedPluginRegistry &)
 

Protected Attributes

std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList
 

Detailed Description

Definition at line 10 of file ossimSharedPluginRegistry.h.

Constructor & Destructor Documentation

◆ ~ossimSharedPluginRegistry()

ossimSharedPluginRegistry::~ossimSharedPluginRegistry ( )
virtual

Definition at line 28 of file ossimSharedPluginRegistry.cpp.

References theLibraryList.

29 {
30  theLibraryList.clear();
31 }
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList

◆ ossimSharedPluginRegistry() [1/2]

ossimSharedPluginRegistry::ossimSharedPluginRegistry ( )
protected

Definition at line 24 of file ossimSharedPluginRegistry.cpp.

25 {
26 }

◆ ossimSharedPluginRegistry() [2/2]

ossimSharedPluginRegistry::ossimSharedPluginRegistry ( const ossimSharedPluginRegistry )
inlineprotected

Definition at line 41 of file ossimSharedPluginRegistry.h.

41 {}

Member Function Documentation

◆ getIndex()

ossim_uint32 ossimSharedPluginRegistry::getIndex ( const ossimPluginLibrary lib) const

Definition at line 141 of file ossimSharedPluginRegistry.cpp.

References theLibraryList.

142 {
143  ossim_uint32 idx = 0;
144 
145  for(idx = 0; idx < theLibraryList.size(); ++idx)
146  {
147  if(theLibraryList[idx] == lib)
148  {
149  return idx;
150  }
151  }
152 
153  return idx;
154 }
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList
unsigned int ossim_uint32

◆ getNumberOfPlugins()

ossim_uint32 ossimSharedPluginRegistry::getNumberOfPlugins ( ) const

Definition at line 180 of file ossimSharedPluginRegistry.cpp.

References theLibraryList.

Referenced by isLoaded(), and printAllPluginInformation().

181 {
182  return (ossim_uint32)theLibraryList.size();
183 }
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList
unsigned int ossim_uint32

◆ getPlugin() [1/4]

const ossimPluginLibrary * ossimSharedPluginRegistry::getPlugin ( const ossimFilename filename) const

Definition at line 110 of file ossimSharedPluginRegistry.cpp.

References ossimFilename::file(), and theLibraryList.

Referenced by isLoaded(), printAllPluginInformation(), registerPlugin(), and unregisterPlugin().

111 {
112  ossim_uint32 idx = 0;
113  ossimFilename fileOnly = filename.file();
114  for(idx = 0; idx < theLibraryList.size();++idx)
115  {
116  if(fileOnly == ossimFilename(theLibraryList[idx]->getName()).file())
117  {
118  return theLibraryList[idx].get();
119  }
120  }
121 
122  return 0;
123 }
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList
unsigned int ossim_uint32
ossimFilename file() const

◆ getPlugin() [2/4]

ossimPluginLibrary * ossimSharedPluginRegistry::getPlugin ( const ossimFilename filename)

Definition at line 125 of file ossimSharedPluginRegistry.cpp.

References ossimFilename::file(), and theLibraryList.

126 {
127  ossim_uint32 idx = 0;
128  ossimFilename fileOnly = filename.file();
129 
130  for(idx = 0; idx < theLibraryList.size();++idx)
131  {
132  if(fileOnly == ossimFilename(theLibraryList[idx]->getName()).file())
133  {
134  return theLibraryList[idx].get();
135  }
136  }
137 
138  return 0;
139 }
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList
unsigned int ossim_uint32
ossimFilename file() const

◆ getPlugin() [3/4]

ossimPluginLibrary * ossimSharedPluginRegistry::getPlugin ( ossim_uint32  idx)

Definition at line 156 of file ossimSharedPluginRegistry.cpp.

References theLibraryList.

157 {
158  ossimPluginLibrary* result = 0;
159 
160  if(idx < theLibraryList.size())
161  {
162  result = theLibraryList[idx].get();
163  }
164 
165  return result;
166 }
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList

◆ getPlugin() [4/4]

const ossimPluginLibrary * ossimSharedPluginRegistry::getPlugin ( ossim_uint32  idx) const

Definition at line 168 of file ossimSharedPluginRegistry.cpp.

References theLibraryList.

169 {
170  const ossimPluginLibrary* result = 0;
171 
172  if(idx < theLibraryList.size())
173  {
174  result = theLibraryList[idx].get();
175  }
176 
177  return result;
178 }
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList

◆ instance()

ossimSharedPluginRegistry * ossimSharedPluginRegistry::instance ( )
static

Definition at line 33 of file ossimSharedPluginRegistry.cpp.

Referenced by ossimInit::initializePlugins(), ossimInit::loadPlugins(), ossimInfo::printPlugins(), and ossimInfo::testPlugin().

34 {
35  static ossimSharedPluginRegistry sharedInstance;
36 
37  return &sharedInstance;//theInstance;
38 }

◆ isLoaded()

bool ossimSharedPluginRegistry::isLoaded ( const ossimFilename filename) const

Checks if filename is already loaded to avoid duplication.

Parameters
filenameThe file to check.
Returns
true if any of the plugins match file name, false if not.

Definition at line 186 of file ossimSharedPluginRegistry.cpp.

References ossimFilename::file(), ossimDynamicLibrary::getName(), getNumberOfPlugins(), and getPlugin().

188 {
189  ossimFilename fileOnly = filename.file();
190  bool result = false;
192  for (ossim_uint32 i = 0; i < count; ++i)
193  {
194  const ossimPluginLibrary* pi = getPlugin(i);
195  if (pi)
196  {
197  if (fileOnly == ossimFilename(pi->getName()).file())
198  {
199  result = true;
200  break;
201  }
202  }
203  }
204  return result;
205 }
unsigned int ossim_uint32
const ossimString & getName() const
const ossimPluginLibrary * getPlugin(const ossimFilename &filename) const
ossimFilename file() const

◆ operator=()

void ossimSharedPluginRegistry::operator= ( const ossimSharedPluginRegistry )
inlineprotected

Definition at line 42 of file ossimSharedPluginRegistry.h.

42 {}

◆ printAllPluginInformation()

void ossimSharedPluginRegistry::printAllPluginInformation ( std::ostream &  out)

Definition at line 207 of file ossimSharedPluginRegistry.cpp.

References ossimPluginLibrary::getClassNames(), ossimPluginLibrary::getDescription(), ossimDynamicLibrary::getName(), getNumberOfPlugins(), and getPlugin().

Referenced by ossimInfo::printPlugins().

208 {
210  ossim_uint32 idx = 0;
211 
212  for(idx = 0; idx < count; ++idx)
213  {
214  std::vector<ossimString> classNames;
215  const ossimPluginLibrary* pi = getPlugin(idx);
216  if(pi)
217  {
218  pi->getClassNames(classNames);
219  out << "Plugin: " << pi->getName() << std::endl;
220  out << "DESCRIPTION: \n";
221  out << pi->getDescription() << "\n";
222  out << "CLASSES SUPPORTED\n ";
223  std::copy(classNames.begin(),
224  classNames.end(),
225  std::ostream_iterator<ossimString>(out, "\n "));
226  out << "\n";
227  }
228  }
229 }
unsigned int ossim_uint32
const ossimString & getName() const
void getClassNames(std::vector< ossimString > &classNames) const
ossimString getDescription() const
const ossimPluginLibrary * getPlugin(const ossimFilename &filename) const

◆ registerPlugin()

bool ossimSharedPluginRegistry::registerPlugin ( const ossimFilename filename,
const ossimString options = "" 
)

Definition at line 40 of file ossimSharedPluginRegistry.cpp.

References getPlugin(), ossimDynamicLibrary::getSymbol(), ossimPluginLibrary::initialize(), ossimDynamicLibrary::load(), ossimPluginLibrary::setOptions(), and theLibraryList.

Referenced by ossimInit::initializePlugins(), and ossimInit::loadPlugins().

41 {
42  bool result = false;
43  if(!getPlugin(filename))
44  {
46  if(lib->load(filename))
47  {
48  lib->setOptions(options);
49  if(lib->getSymbol("ossimSharedLibraryInitialize"))
50  {
51  lib->initialize();
52 // if(!insertFrontFlag)
53 // {
54  theLibraryList.push_back(lib);
55 // }
56 // else
57 // {
58 // theLibraryList.insert(theLibraryList.begin(), lib);
59  // }
60  result = true;
61  }
62  else if (traceDebug())
63  {
65  << "ossimSharedPluginRegistry DEBUG:"
66  << "ossimSharedLibraryInitialize symbol not found\n"
67  << std::endl;
68  }
69  }
70 
71  if ( !result )
72  {
73  delete lib;
74  lib = 0;
75  }
76 
77  }
78  else
79  {
81  << "WARNING: Plugin with the name " << filename << std::endl
82  << "Already registered with OSSIM" << std::endl;
83  }
84 
85  return result;
86 }
void setOptions(const ossimString &options)
bool load(const ossimString &name)
void * getSymbol(const ossimString &name) const
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList
const ossimPluginLibrary * getPlugin(const ossimFilename &filename) const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ unregisterPlugin() [1/2]

bool ossimSharedPluginRegistry::unregisterPlugin ( int  idx)

Definition at line 88 of file ossimSharedPluginRegistry.cpp.

References getPlugin().

89 {
90  ossimPluginLibrary* lib = getPlugin(idx);
91 
92  return unregisterPlugin(lib);
93 }
const ossimPluginLibrary * getPlugin(const ossimFilename &filename) const

◆ unregisterPlugin() [2/2]

bool ossimSharedPluginRegistry::unregisterPlugin ( ossimPluginLibrary plugin)

Definition at line 95 of file ossimSharedPluginRegistry.cpp.

References theLibraryList.

96 {
97  std::vector<ossimRefPtr<ossimPluginLibrary> >::iterator iter = theLibraryList.begin();
98  while(iter!=theLibraryList.end())
99  {
100  if((*iter).get() == library)
101  {
102  theLibraryList.erase(iter);
103  return true;
104  }
105  ++iter;
106  }
107  return false;
108 }
std::vector< ossimRefPtr< ossimPluginLibrary > > theLibraryList

Member Data Documentation

◆ theLibraryList

std::vector<ossimRefPtr<ossimPluginLibrary> > ossimSharedPluginRegistry::theLibraryList
protected

The documentation for this class was generated from the following files: