rendered paste body#ifndef __MADDB_H__#define __MADDB_H__#include <MadException.h>/*class MadDBException : public MadException { class InvalidHandle : public MadDBException { }; class Busy : public MadDBException { };};*/enum { MadDB_ERROR = -1, MadDB_OK = 1, MadDB_ROW, MadDB_DONE, MadDB_BUSY, MadDB_INTEGER = 100, MadDB_FLOAT, MadDB_TEXT, MadDB_BLOB, MadDB_NULL,};class MadDBResult { public: MadDBResult() { } virtual ~MadDBResult() { } virtual int reset() = 0; virtual int step() = 0; virtual const void *columnBlob(int) = 0; virtual int columnBytes(int) = 0; virtual double columnDouble(int) = 0; virtual int columnInt(int) = 0; virtual const char *columnText(int) = 0; virtual int columnType(int) = 0; virtual int bindBlob(int, const void*, int n) = 0; virtual int bindDouble(int, double) = 0; virtual int bindInt(int, int) = 0; virtual int bindNull(int) = 0; virtual int bindText(int, const char*) = 0; private: friend class MadDBConnection;};class MadDBConnection { public: MadDBConnection() { } virtual ~MadDBConnection() { } // const char *getDatabase(); // void setDatabase(const char *); // " username // " password // " host // " port // not sure I want to do get* and set* like this, seems ugly... try and find something more elegant. virtual bool connect() = 0; virtual bool connect(const char *db) { return database(db) && connect(); } virtual bool connect(const char *db, const char *serv) { return database(db) && server(serv) && connect(); } virtual bool connect(const char *db, const char *serv, const char *u) { return database(db) && server(serv) && user(u) && connect(); } virtual bool connect(const char *db, const char *serv, const char *u, const char *pw) { return database(db) && server(serv) && user(u) && password(pw) && connect(); } virtual bool server(const char *s) = 0; virtual const char *server() = 0; virtual bool user(const char *u) = 0; virtual const char *user() = 0; virtual bool password(const char *pw) = 0; virtual const char *password() = 0; virtual bool database(const char *db) = 0; virtual const char *database() = 0; virtual bool disconnect() = 0; // transactions virtual bool begin() = 0; virtual bool commit() = 0; virtual bool rollback() = 0; virtual MadDBResult *prepare(const char *) = 0; virtual MadDBResult *preparef(const char *, ...) = 0; virtual bool query(const char *) = 0; virtual bool queryf(const char *, ...) = 0; int last_insert_id(); virtual const char *error_message() = 0; private: friend class MadDBResult;};class MadDBHandler { public: virtual MadDBConnection *getDB() = 0;};#endif /* __MADDB_H__ */