[WASAPI] fix stream types and frequencies enumeration
[xbmc.git] / xbmc / dbwrappers / sqlitedataset.h
blob4695dfd74344cf7dcb55dd74316fe0887fa1507c
1 /*
2 * Copyright (C) 2004, Leo Seib, Hannover
4 * Project:SQLiteDataset C++ Dynamic Library
5 * Module: SQLiteDataset class header file
6 * Author: Leo Seib E-Mail: leoseib@web.de
7 * Begin: 5/04/2002
9 * SPDX-License-Identifier: MIT
10 * See LICENSES/README.md for more information.
13 #pragma once
15 #include "dataset.h"
17 #include <stdio.h>
19 #include <sqlite3.h>
21 namespace dbiplus
23 /***************** Class SqliteDatabase definition ******************
25 class 'SqliteDatabase' connects with Sqlite-server
27 ******************************************************************/
28 class SqliteDatabase : public Database
30 protected:
31 /* connect descriptor */
32 sqlite3* conn;
33 bool _in_transaction;
34 int last_err;
36 public:
37 /* default constructor */
38 SqliteDatabase();
39 /* destructor */
40 ~SqliteDatabase() override;
42 Dataset* CreateDataset() const override;
44 /* func. returns connection handle with SQLite-server */
45 sqlite3* getHandle() { return conn; }
46 /* func. returns current status about SQLite-server connection */
47 int status() override;
48 int setErr(int err_code, const char* qry) override;
49 /* func. returns error message if error occurs */
50 const char* getErrorMsg() override;
51 /* sets a new host name */
52 void setHostName(const char* newHost) override;
53 /* sets a database name */
54 void setDatabase(const char* newDb) override;
56 /* func. connects to database-server */
58 int connect(bool create) override;
59 /* func. disconnects from database-server */
60 void disconnect() override;
61 /* func. creates new database */
62 int create() override;
63 /* func. deletes database */
64 int drop() override;
65 /* check if database exists (ie has tables/views defined) */
66 bool exists() override;
68 /* \brief copy database */
69 int copy(const char* backup_name) override;
71 /* \brief drop all extra analytics from database */
72 int drop_analytics(void) override;
74 long nextid(const char* seq_name) override;
76 /* virtual methods for transaction */
78 void start_transaction() override;
79 void commit_transaction() override;
80 void rollback_transaction() override;
82 /* virtual methods for formatting */
83 std::string vprepare(const char* format, va_list args) override;
85 bool in_transaction() override { return _in_transaction; }
88 /***************** Class SqliteDataset definition *******************
90 class 'SqliteDataset' does a query to SQLite-server
92 ******************************************************************/
94 class SqliteDataset : public Dataset
96 protected:
97 sqlite3* handle();
99 /* Makes direct queries to database */
100 virtual void make_query(StringList& _sql);
101 /* Makes direct inserts into database */
102 void make_insert() override;
103 /* Edit SQL */
104 void make_edit() override;
105 /* Delete SQL */
106 void make_deletion() override;
108 //static int sqlite_callback(void* res_ptr,int ncol, char** result, char** cols);
110 /* This function works only with MySQL database
111 Filling the fields information from select statement */
112 void fill_fields() override;
113 /* Changing field values during dataset navigation */
114 virtual void free_row(); // free the memory allocated for the current row
116 public:
117 /* constructor */
118 SqliteDataset();
119 explicit SqliteDataset(SqliteDatabase* newDb);
121 /* destructor */
122 ~SqliteDataset() override;
124 /* set autorefresh boolean value (if true - refresh the data after edit()
125 or insert() operations default = false) */
126 void set_autorefresh(bool val);
128 /* opens a query & then sets a query results */
129 void open() override;
130 void open(const std::string& sql) override;
131 /* func. executes a query without results to return */
132 int exec() override;
133 int exec(const std::string& sql) override;
134 const void* getExecRes() override;
135 /* as open, but with our query exec Sql */
136 bool query(const std::string& query) override;
137 /* func. closes a query */
138 void close(void) override;
139 /* Cancel changes, made in insert or edit states of dataset */
140 void cancel() override;
141 /* last inserted id */
142 int64_t lastinsertid() override;
143 /* sequence numbers */
144 long nextid(const char* seq_name) override;
145 /* sequence numbers */
146 int num_rows() override;
147 /* interrupt any pending database operation */
148 void interrupt() override;
150 bool bof() override;
151 bool eof() override;
152 void first() override;
153 void last() override;
154 void prev() override;
155 void next() override;
156 /* Go to record No (starting with 0) */
157 bool seek(int pos = 0) override;
159 bool dropIndex(const char* table, const char* index) override;
161 } // namespace dbiplus