author | zecke <zecke> | 2004-05-21 01:00:48 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-05-21 01:00:48 (UTC) |
commit | 564efbda3d8f8b2cefe02a7287942d73489714da (patch) (unidiff) | |
tree | 10cde89ed29b8b552273a0369624ca8932716104 | |
parent | e20a6a2d3be99bdeaf3861f3aed7923e04b7ba04 (diff) | |
download | opie-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..
-rw-r--r-- | libopie2/opiepim/core/opimaccessfactory.h | 20 |
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 | ||
39 | using namespace Opie::Pim; | 39 | using namespace Opie::Pim; |
40 | 40 | ||
41 | namespace Opie { | 41 | namespace 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 | ||
61 | template<class T> | 61 | template<class T> |
62 | class OPimAccessFactory | 62 | class 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 |