OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimImageMetaDataWriterRegistry.cpp
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 // License: LGPL
3 //
4 // See LICENSE.txt file in the top level directory for more details.
5 //----------------------------------------------------------------------------
6 // $Id: ossimImageMetaDataWriterRegistry.cpp 17206 2010-04-25 23:20:40Z dburken $
7 
8 
13 #include <algorithm>
14 
15 //ossimImageMetaDataWriterRegistry*
16 //ossimImageMetaDataWriterRegistry::theInstance= NULL;
17 
19 {
22 }
23 
25 {
27 }
28 
30 {
31  static ossimImageMetaDataWriterRegistry sharedInstance;
32 
33  return &sharedInstance;
34 }
35 
38 {
39  if(factory&&!findFactory(factory))
40  {
41  theFactoryList.push_back(factory);
42  }
43 }
44 
47 {
48  std::vector<ossimImageMetaDataWriterFactoryBase*>::iterator iter =
49  std::find(theFactoryList.begin(),
50  theFactoryList.end(),
51  factory);
52  if(iter != theFactoryList.end())
53  {
54  theFactoryList.erase(iter);
55  }
56 }
57 
60 {
61  return (std::find(theFactoryList.begin(),
62  theFactoryList.end(),
63  factory)!=theFactoryList.end());
64 }
65 
66 
68  const ossimString& typeName) const
69 {
70  ossimObject* result = NULL;
71  std::vector<ossimImageMetaDataWriterFactoryBase*>::const_iterator factory;
72 
73  factory = theFactoryList.begin();
74  while((factory != theFactoryList.end()) && !result)
75  {
76  result = (*factory)->createObject(typeName);
77  ++factory;
78  }
79 
80  return result;
81 }
82 
84  const ossimKeywordlist& kwl,
85  const char* prefix) const
86 {
87  ossimObject* result = NULL;
88  std::vector<ossimImageMetaDataWriterFactoryBase*>::const_iterator factory;
89 
90  factory = theFactoryList.begin();
91  while((factory != theFactoryList.end()) && !result)
92  {
93  result = (*factory)->createObject(kwl, prefix);
94  ++factory;
95  }
96  return result;
97 }
98 
101 {
103 
104  std::vector<ossimImageMetaDataWriterFactoryBase*>::const_iterator factory;
105  factory = theFactoryList.begin();
106  while((factory != theFactoryList.end()) && !result)
107  {
108  result = (*factory)->createWriter(type);
109  ++factory;
110  }
111  return result;
112 }
113 
115  std::vector<ossimString>& typeList) const
116 {
117  std::vector<ossimString> result;
118  std::vector<ossimImageMetaDataWriterFactoryBase*>::const_iterator iter =
119  theFactoryList.begin();
120 
121  while(iter != theFactoryList.end())
122  {
123  result.clear();
124  (*iter)->getTypeNameList(result);
125 
126  // now append to the end of the typeList.
127  typeList.insert(typeList.end(),
128  result.begin(),
129  result.end());
130  ++iter;
131  }
132 }
133 
135  std::vector<ossimString>& metadatatypeList) const
136 {
137  //---
138  // Since this is the master registry for all meta data writer factories
139  // we will start with a cleared list.
140  //---
141  metadatatypeList.clear();
142 
143  std::vector<ossimImageMetaDataWriterFactoryBase*>::const_iterator iter =
144  theFactoryList.begin();
145 
146  while(iter != theFactoryList.end())
147  {
148  (*iter)->getMetadatatypeList(metadatatypeList);
149  ++iter;
150  }
151 }
152 
154  const ossimImageMetaDataWriterRegistry& /* rhs */)
155 {
156 }
157 
160  const ossimImageMetaDataWriterRegistry& /* rhs */)
161 {
162  return *this;
163 }
164 
165 extern "C"
166 {
168  {
170  }
171 }
void registerFactory(ossimImageMetaDataWriterFactoryBase *factory)
Represents serializable keyword/value map.
static ossimImageMetaDataWriterFactory * instance()
void * ossimImageMetaDataWriterRegistryGetInstance()
static ossimObjectFactoryRegistry * instance()
virtual void getMetadatatypeList(std::vector< ossimString > &metadatatypeList) const
Initializes list with meta data types from all registered metadata factories.
virtual void getTypeNameList(std::vector< ossimString > &typeList) const
This should return the type name of all objects in all factories.
void unregisterFactory(T *factory)
Will remove the factory from the registry.
virtual ossimRefPtr< ossimMetadataFileWriter > createWriter(const ossimString &type) const
Creates a writer from either a class name or a string representing the meta data type like "tiff_worl...
std::vector< ossimImageMetaDataWriterFactoryBase * > theFactoryList
void registerFactory(T *factory, bool pushToFrontFlag=false)
Will register a factory to the factory list.
bool findFactory(ossimImageMetaDataWriterFactoryBase *factory) const
const ossimImageMetaDataWriterRegistry & operator=(const ossimImageMetaDataWriterRegistry &rhs)
virtual ossimObject * createObject(const ossimString &typeName) const
Creates an object given a type name.
void unregisterFactory(ossimImageMetaDataWriterFactoryBase *factory)
static ossimImageMetaDataWriterRegistry * instance()