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
@@ -1,117 +1,117 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 Copyright (C) Stefan Eilers <eilers.stefan@epost.de> 3 Copyright (C) Stefan Eilers <eilers.stefan@epost.de>
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l. 5 .=l.
6 .>+-= 6 .>+-=
7 _;:, .> :=|. This program is free software; you can 7 _;:, .> :=|. This program is free software; you can
8.> <`_, > . <= redistribute it and/or modify it under 8.> <`_, > . <= redistribute it and/or modify it under
9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public 9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
10.="- .-=="i, .._ License as published by the Free Software 10.="- .-=="i, .._ License as published by the Free Software
11 - . .-<_> .<> Foundation; either version 2 of the License, 11 - . .-<_> .<> Foundation; either version 2 of the License,
12 ._= =} : or (at your option) any later version. 12 ._= =} : or (at your option) any later version.
13 .%`+i> _;_. 13 .%`+i> _;_.
14 .i_,=:_. -<s. This program is distributed in the hope that 14 .i_,=:_. -<s. This program is distributed in the hope that
15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
16 : .. .:, . . . without even the implied warranty of 16 : .. .:, . . . without even the implied warranty of
17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.= = ; Library General Public License for more 19..}^=.= = ; Library General Public License for more
20++= -. .` .: details. 20++= -. .` .: details.
21 : = ...= . :.=- 21 : = ...= . :.=-
22 -. .:....=;==+<; You should have received a copy of the GNU 22 -. .:....=;==+<; You should have received a copy of the GNU
23 -_. . . )=. = Library General Public License along with 23 -_. . . )=. = Library General Public License along with
24 -- :-=` this library; see the file COPYING.LIB. 24 -- :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29 29
30#ifndef __OPIE_OPIMACCESSFACTORY_H_ 30#ifndef __OPIE_OPIMACCESSFACTORY_H_
31#define __OPIE_OPIMACCESSFACTORY_H_ 31#define __OPIE_OPIMACCESSFACTORY_H_
32 32
33#include <opie2/opimglobal.h> 33#include <opie2/opimglobal.h>
34#include <opie2/obackendfactory.h> 34#include <opie2/obackendfactory.h>
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