1 //*******************************************************************
2 //
3 // License:  See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts
6 //
7 // Description:
8 //
9 // This is the DatumFactory class.  You give it a code and it will
10 // construct a Datum class.  It returns NULL if no code was found.
11 //*******************************************************************
12 //  $Id: ossimDatumFactory.h 22851 2014-08-05 12:02:55Z gpotts $
13 
14 #ifndef ossimDatumFactory_HEADER
15 #define ossimDatumFactory_HEADER 1
16 
17 #include <ossim/base/ossimDatumFactoryInterface.h>
18 #include <ossim/base/ossimEllipsoidFactory.h>
19 #include <map>
20 #include <string>
21 #include <vector>
22 
23 class ossimFilename;
24 class ossimDatum;
25 class ossimWgs84Datum;
26 class ossimWgs72Datum;
27 class ossimString;
28 
29 class OSSIM_DLL ossimDatumFactory : public ossimDatumFactoryInterface
30 {
31 public:
32 
33    /** virtual destructor */
34    virtual ~ossimDatumFactory();
35 
36    /**
37     * create method
38     *
39     * Implements pure virtual ossimDatumFactoryInterface::create.
40     *
41     * @return const pointer to a datum.
42     */
43    virtual const ossimDatum* create(const ossimString &code)const;
44    virtual const ossimDatum* create(const ossimKeywordlist& kwl, const char *prefix=0)const;
45 
46    const ossimDatum* create(const ossimDatum* copy) const;
47 
48    static ossimDatumFactory* instance();
wgs84()49    const ossimDatum* wgs84()const{return theWgs84Datum;}
wgs72()50    const ossimDatum* wgs72()const{return theWgs72Datum;}
51    std::vector<ossimString> getList()const;
52    virtual void getList(std::vector<ossimString>& list)const;
53    void writeCStructure(const ossimFilename& file);
54 protected:
55  //  static ossimDatumFactory*       theInstance;
56    const ossimDatum*               theWgs84Datum;
57    const ossimDatum*               theWgs72Datum;
58    std::map<std::string, const ossimDatum*> theDatumTable;
59 
60 
61    ossimDatumFactory();
62 
63    void deleteAll();
64    void initializeDefaults();
65 };
66 #endif
67