1 /* This file is part of the KDE project 2 Copyright (C) 2004 Lucijan Busch <lucijan@kde.org> 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Library General Public 6 License as published by the Free Software Foundation; either 7 version 2 of the License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Library General Public License for more details. 13 14 You should have received a copy of the GNU Library General Public License 15 along with this library; see the file COPYING.LIB. If not, write to 16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20 #ifndef KEXIPARTDATASOURCE_H 21 #define KEXIPARTDATASOURCE_H 22 23 class KexiProject; 24 class KDbFieldList; 25 class KDbCursor; 26 27 namespace KexiPart 28 { 29 class DataSourcePrivate; 30 class Item; 31 class Part; 32 33 /** 34 * this class provides a datasource framework for e.g. tables and queries 35 * using this framework one can query for 36 * - a list of datasources 37 * - the fileds in datasources 38 * - variables (e.g. query variables) 39 */ 40 class KEXICORE_EXPORT DataSource 41 { 42 public: 43 explicit DataSource(Part *part); 44 virtual ~DataSource(); 45 46 /** 47 * @returns a list of fileds for the datasource 48 * @arg id is the document id for the source 49 */ 50 virtual KDbFieldList *fields(KexiProject *project, const KexiPart::Item &item) = 0; 51 52 /** 53 * @returns the cursor 54 */ 55 virtual KDbCursor *cursor(KexiProject *project, const KexiPart::Item &item, bool buffer) = 0; 56 57 /** 58 * @returns the part providing this datasource 59 */ 60 Part *part() const; 61 62 private: 63 DataSourcePrivate * const d; 64 }; 65 66 } 67 68 #endif 69 70