serverprovider.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 // Generated by gtkmmproc -- DO NOT MODIFY!
00003 #ifndef _LIBGDAMM_SERVERPROVIDER_H
00004 #define _LIBGDAMM_SERVERPROVIDER_H
00005 
00006 
00007 #include <glibmm.h>
00008 
00009 /* $Id: serverprovider.hg,v 1.16 2006/11/30 06:58:55 murrayc Exp $ */
00010 // -*- C++ -*- // this is for the .hg, I realize gensig puts one in
00011 
00012 /* serverprovider.h
00013  *
00014  * Copyright 2001      Free Software Foundation
00015  *
00016  * This library is free software; you can redistribute it and/or
00017  * modify it under the terms of the GNU Library General Public
00018  * License as published by the Free Software Foundation; either
00019  * version 2 of the License, or (at your option) any later version.
00020  *
00021  * This library is distributed in the hope that it will be useful,
00022  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00023  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00024  * Library General Public License for more details.
00025  *
00026  * You should have received a copy of the GNU Library General Public
00027  * License along with this library; if not, write to the Free
00028  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00029  */
00030 
00031 //#include <libgdamm/connection.h>
00032 #include <libgdamm/command.h>
00033 #include <libgdamm/datamodelindex.h>
00034 #include <libgdamm/client.h>
00035 #include <libgdamm/serveroperation.h>
00036 #include <libgdamm/query.h>
00037 #include <libgdamm/datahandler.h>
00038 
00039 
00040 #include <libgdamm/blob.h>
00041 
00042 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00043 typedef struct _GdaServerProvider GdaServerProvider;
00044 typedef struct _GdaServerProviderClass GdaServerProviderClass;
00045 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00046 
00047 
00048 namespace Gnome
00049 {
00050 
00051 namespace Gda
00052 { class ServerProvider_Class; } // namespace Gda
00053 
00054 } // namespace Gnome
00055 namespace Gnome
00056 {
00057 
00058 namespace Gda
00059 {
00060 
00061 
00062 class Connection;
00063 
00064 //_WRAP_ENUM(ClientSpecsType, GdaClientSpecsType)
00070 enum ServerOperationType
00071 {
00072   SERVER_OPERATION_CREATE_DB,
00073   SERVER_OPERATION_DROP_DB,
00074   SERVER_OPERATION_CREATE_TABLE,
00075   SERVER_OPERATION_DROP_TABLE,
00076   SERVER_OPERATION_RENAME_TABLE,
00077   SERVER_OPERATION_ADD_COLUMN,
00078   SERVER_OPERATION_DROP_COLUMN,
00079   SERVER_OPERATION_CREATE_INDEX,
00080   SERVER_OPERATION_DROP_INDEX,
00081   SERVER_OPERATION_NB
00082 };
00083 
00084 } // namespace Gda
00085 
00086 } // namespace Gnome
00087 
00088 
00089 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00090 namespace Glib
00091 {
00092 
00093 template <>
00094 class Value<Gnome::Gda::ServerOperationType> : public Glib::Value_Enum<Gnome::Gda::ServerOperationType>
00095 {
00096 public:
00097   static GType value_type() G_GNUC_CONST;
00098 };
00099 
00100 } // namespace Glib
00101 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00102 
00103 
00104 namespace Gnome
00105 {
00106 
00107 namespace Gda
00108 {
00109 
00110 
00111 /* TODO: Is this appropriate. Investigate how it is used. */
00112 typedef GdaServerProviderInfo ServerProviderInfo;
00113 
00114 //TODO:
00115 
00116 class ServerProvider : public Glib::Object
00117 {
00118   
00119 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00120 
00121 public:
00122   typedef ServerProvider CppObjectType;
00123   typedef ServerProvider_Class CppClassType;
00124   typedef GdaServerProvider BaseObjectType;
00125   typedef GdaServerProviderClass BaseClassType;
00126 
00127 private:  friend class ServerProvider_Class;
00128   static CppClassType serverprovider_class_;
00129 
00130 private:
00131   // noncopyable
00132   ServerProvider(const ServerProvider&);
00133   ServerProvider& operator=(const ServerProvider&);
00134 
00135 protected:
00136   explicit ServerProvider(const Glib::ConstructParams& construct_params);
00137   explicit ServerProvider(GdaServerProvider* castitem);
00138 
00139 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00140 
00141 public:
00142   virtual ~ServerProvider();
00143 
00144 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00145   static GType get_type()      G_GNUC_CONST;
00146   static GType get_base_type() G_GNUC_CONST;
00147 #endif
00148 
00150   GdaServerProvider*       gobj()       { return reinterpret_cast<GdaServerProvider*>(gobject_); }
00151 
00153   const GdaServerProvider* gobj() const { return reinterpret_cast<GdaServerProvider*>(gobject_); }
00154 
00156   GdaServerProvider* gobj_copy();
00157 
00158 private:
00159 
00160 
00164   Glib::ustring get_version() const;
00165   
00174   bool open_connection(const Glib::RefPtr<Connection>& cnc, GdaQuarkList *params, const Glib::ustring& username, const Glib::ustring& password);
00175   //TODO: Not implemented: _WRAP_METHOD(bool reset_connection(const Glib::RefPtr<Connection>& cnc), gda_server_provider_reset_connection)
00176   
00179   bool close_connection(const Glib::RefPtr<Connection>& cnc);
00180 
00181   
00184   Glib::ustring get_server_version(const Glib::RefPtr<Connection>& cnc) const;
00185   
00191   Glib::ustring get_database(const Glib::RefPtr<Connection>& cnc) const;
00192   
00199   bool change_database(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00200 
00201   //TODO: Copy-by-value somehow?
00202    
00203 
00209   const ServerProviderInfo* get_info(const Glib::RefPtr<Connection>& cnc) const;
00210 
00211   //TODO: options may be NULL: Add a method overload.
00212   
00220   bool supports_operation(const Glib::RefPtr<Connection>& cnc, ServerOperationType type, const Glib::RefPtr<ParameterList>& options) const;
00221 
00222   
00236 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00237   Glib::RefPtr<ServerOperation> create_operation (const Glib::RefPtr<Connection>& cnc,ServerOperationType type, const Glib::RefPtr<ParameterList>& options);
00238 #else
00239   Glib::RefPtr<ServerOperation> create_operation(const Glib::RefPtr<Connection>& cnc, ServerOperationType type, const Glib::RefPtr<ParameterList>& options, std::auto_ptr<Glib::Error>& error);
00240 #endif //GLIBMM_EXCEPTIONS_ENABLED
00241 
00242   
00250 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00251   Glib::ustring render_operation(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<ServerOperation>& op);
00252 #else
00253   Glib::ustring render_operation(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<ServerOperation>& op, std::auto_ptr<Glib::Error>& error);
00254 #endif //GLIBMM_EXCEPTIONS_ENABLED
00255 
00256   
00263 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00264   bool perform_operation(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<ServerOperation>& op);
00265 #else
00266   bool perform_operation(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<ServerOperation>& op, std::auto_ptr<Glib::Error>& error);
00267 #endif //GLIBMM_EXCEPTIONS_ENABLED
00268 
00269 
00270    //Use deep ownership because we own both the list and its elements;
00271    
00272 
00299   Glib::ListHandle< Glib::RefPtr<DataModel> > execute_command(const Glib::RefPtr<Connection>& cnc, const Command& cmd, const Glib::RefPtr<ParameterList>& params);
00300 
00301   
00306 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00307   bool begin_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, TransactionIsolation level);
00308 #else
00309   bool begin_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, TransactionIsolation level, std::auto_ptr<Glib::Error>& error);
00310 #endif //GLIBMM_EXCEPTIONS_ENABLED
00311 
00312   
00317 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00318   bool commit_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00319 #else
00320   bool commit_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00321 #endif //GLIBMM_EXCEPTIONS_ENABLED
00322 
00323   
00328 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00329   bool rollback_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00330 #else
00331   bool rollback_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00332 #endif //GLIBMM_EXCEPTIONS_ENABLED
00333 
00334 
00341 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00342   bool add_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00343 #else
00344   bool add_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00345 #endif //GLIBMM_EXCEPTIONS_ENABLED
00346 
00347   
00354 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00355   bool rollback_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00356 #else
00357   bool rollback_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00358 #endif //GLIBMM_EXCEPTIONS_ENABLED
00359 
00360   
00367 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00368   bool delete_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00369 #else
00370   bool delete_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00371 #endif //GLIBMM_EXCEPTIONS_ENABLED
00372 
00373 
00376   bool supports_feature(const Glib::RefPtr<Connection>& cnc, ConnectionFeature feature) const;
00377 
00378   //TODO: Use C++ parameters, and add const version:
00379   
00389 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00390   Glib::RefPtr<DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema, const Glib::RefPtr<ParameterList>& params);
00391 #else
00392   Glib::RefPtr<DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema, const Glib::RefPtr<ParameterList>& params, std::auto_ptr<Glib::Error>& error);
00393 #endif //GLIBMM_EXCEPTIONS_ENABLED
00394 
00395   
00405 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00406   Glib::RefPtr<const DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema, const Glib::RefPtr<ParameterList>& params) const;
00407 #else
00408   Glib::RefPtr<const DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema, const Glib::RefPtr<ParameterList>& params, std::auto_ptr<Glib::Error>& error) const;
00409 #endif //GLIBMM_EXCEPTIONS_ENABLED
00410 
00411 
00412   //TODO: Check that these take a reference, like the generated ones:
00413   Glib::RefPtr<DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema);
00414   Glib::RefPtr<const DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema) const;
00415 
00416   
00422   Glib::ustring value_to_sql_string(const Glib::RefPtr<Connection>& cnc, const Value& from) const;
00423 
00424   
00434   Glib::ustring get_last_insert_id(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<DataModel>& recset) const;
00435 
00436   
00443   Glib::ustring escape_string(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& str);
00444   
00450   Glib::ustring unescape_string(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& str);
00451   
00477   Glib::RefPtr<Gda::Object> execute_query(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<Query>& query, const Glib::RefPtr<ParameterList>& options);
00478 
00479   
00485   Glib::RefPtr<DataHandler> get_data_handler_dbms(const Glib::RefPtr<Connection>& cnc,  const Glib::ustring& for_type);
00486   
00492   Glib::RefPtr<const DataHandler> get_data_handler_dbms(const Glib::RefPtr<Connection>& cnc,  const Glib::ustring& for_type) const;
00493 
00494   //TODO: What about the methods that take a GType argument? Johannes
00495 
00496  //TODO: vfuncs.
00497 
00498 
00499 public:
00500 
00501 public:
00502   //C++ methods used to invoke GTK+ virtual functions:
00503 #ifdef GLIBMM_VFUNCS_ENABLED
00504 #endif //GLIBMM_VFUNCS_ENABLED
00505 
00506 protected:
00507   //GTK+ Virtual Functions (override these to change behaviour):
00508 #ifdef GLIBMM_VFUNCS_ENABLED
00509 #endif //GLIBMM_VFUNCS_ENABLED
00510 
00511   //Default Signal Handlers::
00512 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00513 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00514 
00515 
00516 };
00517 
00518 } // namespace Gda
00519 } // namespace Gnome
00520 
00521 
00522 namespace Glib
00523 {
00529   Glib::RefPtr<Gnome::Gda::ServerProvider> wrap(GdaServerProvider* object, bool take_copy = false);
00530 }
00531 
00532 
00533 #endif /* _LIBGDAMM_SERVERPROVIDER_H */
00534 

Generated on Sat Feb 10 20:06:26 2007 for libgdamm by  doxygen 1.4.7