124 lines
3.5 KiB
C
124 lines
3.5 KiB
C
#ifndef __pg_h
|
|
#define __pg_h
|
|
|
|
#ifdef RUBY_EXTCONF_H
|
|
# include RUBY_EXTCONF_H
|
|
#endif
|
|
|
|
/* System headers */
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#if defined(HAVE_UNISTD_H) && !defined(_WIN32)
|
|
# include <unistd.h>
|
|
#endif /* HAVE_UNISTD_H */
|
|
|
|
/* Ruby headers */
|
|
#include "ruby.h"
|
|
#ifdef HAVE_RUBY_ST_H
|
|
# include "ruby/st.h"
|
|
#elif HAVE_ST_H
|
|
# include "st.h"
|
|
#endif
|
|
|
|
#if defined(HAVE_RUBY_ENCODING_H) && HAVE_RUBY_ENCODING_H
|
|
# include "ruby/encoding.h"
|
|
# define M17N_SUPPORTED
|
|
# define ASSOCIATE_INDEX( obj, index_holder ) rb_enc_associate_index((obj), pg_enc_get_index((index_holder)))
|
|
# ifdef HAVE_RB_ENCDB_ALIAS
|
|
extern int rb_encdb_alias(const char *, const char *);
|
|
# define ENC_ALIAS(name, orig) rb_encdb_alias((name), (orig))
|
|
# elif HAVE_RB_ENC_ALIAS
|
|
extern int rb_enc_alias(const char *, const char *);
|
|
# define ENC_ALIAS(name, orig) rb_enc_alias((name), (orig))
|
|
# else
|
|
extern int rb_enc_alias(const char *alias, const char *orig); /* declaration missing in Ruby 1.9.1 */
|
|
# define ENC_ALIAS(name, orig) rb_enc_alias((name), (orig))
|
|
# endif
|
|
#else
|
|
# define ASSOCIATE_INDEX( obj, index_holder ) /* nothing */
|
|
#endif
|
|
|
|
#if RUBY_VM != 1
|
|
# define RUBY_18_COMPAT
|
|
#endif
|
|
|
|
#ifndef RARRAY_LEN
|
|
# define RARRAY_LEN(x) RARRAY((x))->len
|
|
#endif /* RARRAY_LEN */
|
|
|
|
#ifndef RSTRING_LEN
|
|
# define RSTRING_LEN(x) RSTRING((x))->len
|
|
#endif /* RSTRING_LEN */
|
|
|
|
#ifndef RSTRING_PTR
|
|
# define RSTRING_PTR(x) RSTRING((x))->ptr
|
|
#endif /* RSTRING_PTR */
|
|
|
|
#ifndef StringValuePtr
|
|
# define StringValuePtr(x) STR2CSTR(x)
|
|
#endif /* StringValuePtr */
|
|
|
|
#ifdef RUBY_18_COMPAT
|
|
# define rb_io_stdio_file GetWriteFile
|
|
# include "rubyio.h"
|
|
#else
|
|
# include "ruby/io.h"
|
|
#endif
|
|
|
|
/* PostgreSQL headers */
|
|
#include "libpq-fe.h"
|
|
#include "libpq/libpq-fs.h" /* large-object interface */
|
|
#include "pg_config_manual.h"
|
|
|
|
#if defined(_WIN32)
|
|
# include <fcntl.h>
|
|
__declspec(dllexport)
|
|
typedef long suseconds_t;
|
|
#endif
|
|
|
|
|
|
/***************************************************************************
|
|
* Globals
|
|
**************************************************************************/
|
|
|
|
extern VALUE rb_mPG;
|
|
extern VALUE rb_ePGerror;
|
|
extern VALUE rb_mPGconstants;
|
|
extern VALUE rb_cPGconn;
|
|
extern VALUE rb_cPGresult;
|
|
|
|
|
|
/***************************************************************************
|
|
* MACROS
|
|
**************************************************************************/
|
|
|
|
#define UNUSED(x) ((void)(x))
|
|
#define SINGLETON_ALIAS(klass,new,old) rb_define_alias(rb_singleton_class((klass)),(new),(old))
|
|
|
|
|
|
/***************************************************************************
|
|
* PROTOTYPES
|
|
**************************************************************************/
|
|
void Init_pg_ext _(( void ));
|
|
|
|
void init_pg_connection _(( void ));
|
|
void init_pg_result _(( void ));
|
|
|
|
PGconn *pg_get_pgconn _(( VALUE ));
|
|
|
|
VALUE pg_new_result _(( PGresult *, PGconn * ));
|
|
void pg_check_result _(( VALUE, VALUE ));
|
|
VALUE pg_result_clear _(( VALUE ));
|
|
|
|
#ifdef M17N_SUPPORTED
|
|
rb_encoding * pg_get_pg_encoding_as_rb_encoding _(( int ));
|
|
rb_encoding * pg_get_pg_encname_as_rb_encoding _(( const char * ));
|
|
const char * pg_get_rb_encoding_as_pg_encoding _(( rb_encoding * ));
|
|
int pg_enc_get_index _(( VALUE ));
|
|
rb_encoding *pg_conn_enc_get _(( PGconn * ));
|
|
#endif /* M17N_SUPPORTED */
|
|
|
|
|
|
#endif /* end __pg_h */
|