summaryrefslogtreecommitdiff
authorzecke <zecke>2004-05-21 01:00:48 (UTC)
committer zecke <zecke>2004-05-21 01:00:48 (UTC)
commit564efbda3d8f8b2cefe02a7287942d73489714da (patch) (unidiff)
tree10cde89ed29b8b552273a0369624ca8932716104
parente20a6a2d3be99bdeaf3861f3aed7923e04b7ba04 (diff)
downloadopie-564efbda3d8f8b2cefe02a7287942d73489714da.zip
opie-564efbda3d8f8b2cefe02a7287942d73489714da.tar.gz
opie-564efbda3d8f8b2cefe02a7287942d73489714da.tar.bz2
No dynamic_cast if we've no rtti. Ask tronical about the correctness because
if we would static_cast rightaway the compilers quits with errors..
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/core/opimaccessfactory.h20
1 files changed, 10 insertions, 10 deletions
diff --git a/libopie2/opiepim/core/opimaccessfactory.h b/libopie2/opiepim/core/opimaccessfactory.h
index 6aaa5e4..a80e67c 100644
--- a/libopie2/opiepim/core/opimaccessfactory.h
+++ b/libopie2/opiepim/core/opimaccessfactory.h
@@ -35,83 +35,83 @@
35#include <opie2/ocontactaccess.h> 35#include <opie2/ocontactaccess.h>
36#include <opie2/otodoaccess.h> 36#include <opie2/otodoaccess.h>
37#include <opie2/odatebookaccess.h> 37#include <opie2/odatebookaccess.h>
38 38
39using namespace Opie::Pim; 39using namespace Opie::Pim;
40 40
41namespace Opie { 41namespace Opie {
42 42
43 43
44/** 44/**
45 * This class is our factory for creating PIM access objects. You should use these objects to load, store and search 45 * This class is our factory for creating PIM access objects. You should use these objects to load, store and search
46 * information in our PIM databases. Currently we support objects for accessing the datebook, the contact- and the 46 * information in our PIM databases. Currently we support objects for accessing the datebook, the contact- and the
47 * todolist. 47 * todolist.
48 * @see OPimGlobal for more information of used values. 48 * @see OPimGlobal for more information of used values.
49 * 49 *
50 * This class - as the whole PIM Api - is making use of templates 50 * This class - as the whole PIM Api - is making use of templates
51 * 51 *
52 * Example for getting an access object for the XML database of todolist: 52 * Example for getting an access object for the XML database of todolist:
53 * <pre> 53 * <pre>
54 * OPimTodoAccess* access = OPimAccessFactory<OPimTodoAccess>::create( OPimGlobal::TODOLIST, OPimGlobal::XML, "example" ); 54 * OPimTodoAccess* access = OPimAccessFactory<OPimTodoAccess>::create( OPimGlobal::TODOLIST, OPimGlobal::XML, "example" );
55 * </pre> 55 * </pre>
56 * 56 *
57 * @author Stefan Eilers 57 * @author Stefan Eilers
58 * @version 0.1 58 * @version 0.1
59 */ 59 */
60 60
61template<class T> 61template<class T>
62class OPimAccessFactory 62class OPimAccessFactory
63{ 63{
64 public: 64 public:
65 65
66 // Maybe we should introduce a global class for storing such global enums 66 // Maybe we should introduce a global class for storing such global enums
67 // (something like opimglobal.h) ? (eilers) 67 // (something like opimglobal.h) ? (eilers)
68 68
69 OPimAccessFactory() {}; 69 OPimAccessFactory() {};
70 70
71 /** 71 /**
72 * Returns the selected PIM access-object. 72 * Returns the selected PIM access-object.
73 * @param type Type of the selected database (addressbook, todolist or datebook) 73 * @param type Type of the selected database (addressbook, todolist or datebook)
74 * @param dbStyle Which database style should be used (xml, sql, vcard) 74 * @param dbStyle Which database style should be used (xml, sql, vcard)
75 * @param appName "Name" of your application. This should be any constant string which is used 75 * @param appName "Name" of your application. This should be any constant string which is used
76 * by some backends for creating special files (i.e.journal files). Please keep the 76 * by some backends for creating special files (i.e.journal files). Please keep the
77 * string unique for your application ! 77 * string unique for your application !
78 * @see OPimGlobal 78 * @see OPimGlobal
79 */ 79 */
80 static T* create( OPimGlobal::PimType type, OPimGlobal::DatabaseStyle dbStyle, const QString& appName ){ 80 static T* create( OPimGlobal::PimType type, OPimGlobal::DatabaseStyle dbStyle, const QString& appName ){
81 81 OPimBase *base;
82 switch ( type ){ 82 switch ( type ){
83 case OPimGlobal::TODOLIST: 83 case OPimGlobal::TODOLIST:
84 return dynamic_cast<T*>( new OPimTodoAccess( OBackendFactory<OPimTodoAccessBackend>::create( type, dbStyle, appName ) ) ); 84 base = new OPimTodoAccess( OBackendFactory<OPimTodoAccessBackend>::create( type, dbStyle, appName ) );
85 case OPimGlobal::CONTACTLIST: 85 case OPimGlobal::CONTACTLIST:
86 return dynamic_cast<T*>( new OPimContactAccess( QString::null, QString::null, OBackendFactory<OPimContactAccessBackend>::create( type, dbStyle, appName ) ) ); 86 base = new OPimContactAccess( QString::null, QString::null, OBackendFactory<OPimContactAccessBackend>::create( type, dbStyle, appName ) );
87 case OPimGlobal::DATEBOOK: 87 case OPimGlobal::DATEBOOK:
88 return dynamic_cast<T*>( new ODateBookAccess( OBackendFactory<ODateBookAccessBackend>::create( type, dbStyle, appName ) ) ); 88 base = new ODateBookAccess( OBackendFactory<ODateBookAccessBackend>::create( type, dbStyle, appName ) );
89 default: 89 default:
90 return 0l; 90 return 0l;
91
92 } 91 }
92 return static_cast<T*>( base );
93 } 93 }
94 94
95 95
96 /** 96 /**
97 * Returns the selected PIM access-object, using the default database style 97 * Returns the selected PIM access-object, using the default database style
98 * Which style is selected is defined in the configfile "pimaccess.conf" in 98 * Which style is selected is defined in the configfile "pimaccess.conf" in
99 * the directory "Settings" 99 * the directory "Settings"
100 * @param type Type of the selected database (addressbook, todolist or datebook) 100 * @param type Type of the selected database (addressbook, todolist or datebook)
101 * @param appName "Name" of your application. This should be any constant string which is used 101 * @param appName "Name" of your application. This should be any constant string which is used
102 * by some backends for creating special files (i.e.journal files). Please keep the 102 * by some backends for creating special files (i.e.journal files). Please keep the
103 * string unique for your application ! 103 * string unique for your application !
104 * @see OPimGlobal 104 * @see OPimGlobal
105 * 105 *
106 */ 106 */
107 static T* defaultAccess( typename OPimGlobal::PimType type, const QString& appName ){ 107 static T* defaultAccess( typename OPimGlobal::PimType type, const QString& appName ){
108 108
109 return create( type, OPimGlobal::DEFAULT, appName ); 109 return create( type, OPimGlobal::DEFAULT, appName );
110 110
111 } 111 }
112}; 112};
113 113
114} 114}
115 115
116 116
117#endif 117#endif