00001
00002
00003
00004
00005 #ifndef IBIS_CAPI_H
00006 #define IBIS_CAPI_H
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if _MSC_VER >= 1000
00023 #pragma once
00024 #endif // _MSC_VER >= 1000
00025
00026 #if !defined(WITHOUT_FASTBIT_CONFIG_H) && !defined(__MINGW32__) && !defined(_MSC_VER)
00027 #include "fastbit-config.h"
00028 #endif
00029 #if defined(HAVE_SYS_TYPES_H) || defined(__PGI)
00030 # include <sys/types.h>
00031 #endif
00032 #if defined(HAVE_INTTYPES_H) || defined(sun) || defined(__MINGW32__) || defined(__FreeBSD__)
00033 # include <inttypes.h>
00034 #elif defined(HAVE_STDINT_H) || defined(unix) || defined(__APPLE__)
00035 # include <stdint.h>
00036 #elif defined(_WIN32) && defined(_MSC_VER)
00037
00038 # ifndef int16_t
00039 # define int16_t __int16
00040 # endif
00041 # ifndef uint16_t
00042 # define uint16_t unsigned __int16
00043 # endif
00044 # ifndef int32_t
00045 # define int32_t __int32
00046 # endif
00047 # ifndef uint32_t
00048 # define uint32_t unsigned __int32
00049 # endif
00050 # ifndef int64_t
00051 # define int64_t __int64
00052 # endif
00053 # ifndef uint64_t
00054 # define uint64_t unsigned __int64
00055 # endif
00056 #else
00057 #error Do NOT know how to find the exact width data types!
00058 #endif
00059
00060 #if defined(_WIN32) && (defined(_MSC_VER) || defined(__MINGW32__))
00061 # if defined(_USRDLL) || defined(CXX_USE_DLL)
00062 # if defined(DLL_EXPORT)
00063 # define FASTBIT_DLLSPEC __declspec(dllexport)
00064 # else
00065 # define FASTBIT_DLLSPEC __declspec(dllimport)
00066 # endif
00067 # else
00068 # define FASTBIT_DLLSPEC
00069 # endif
00070 #else
00071 # define FASTBIT_DLLSPEC
00072 #endif
00073
00074 #include <stdio.h>
00075
00078 #ifdef __cplusplus
00079 extern "C" {
00080 #endif
00081
00082 FASTBIT_DLLSPEC int
00083 fastbit_build_indexes(const char *indexLocation,
00084 const char *indexOptions);
00086 FASTBIT_DLLSPEC int fastbit_purge_indexes(const char *indexLocation);
00088 FASTBIT_DLLSPEC int
00089 fastbit_build_index(const char *indexLocation, const char* cname,
00090 const char *indexOptions);
00092 FASTBIT_DLLSPEC int
00093 fastbit_purge_index(const char *indexLocation, const char* cname);
00094 FASTBIT_DLLSPEC int fastbit_reorder_partition(const char *dir);
00095
00097 struct FastBitQuery;
00099 typedef struct FastBitQuery* FastBitQueryHandle;
00100
00102 FASTBIT_DLLSPEC FastBitQueryHandle
00103 fastbit_build_query(const char *selectClause, const char *indexLocation,
00104 const char *queryConditions);
00107 FASTBIT_DLLSPEC int fastbit_destroy_query(FastBitQueryHandle query);
00108
00112 FASTBIT_DLLSPEC int fastbit_get_result_rows(FastBitQueryHandle query);
00115 FASTBIT_DLLSPEC int fastbit_get_result_columns(FastBitQueryHandle query);
00117 FASTBIT_DLLSPEC const char*
00118 fastbit_get_select_clause(FastBitQueryHandle query);
00120 FASTBIT_DLLSPEC const char*
00121 fastbit_get_from_clause(FastBitQueryHandle query);
00123 FASTBIT_DLLSPEC const char*
00124 fastbit_get_where_clause(FastBitQueryHandle query);
00125
00135 FASTBIT_DLLSPEC const float*
00136 fastbit_get_qualified_floats(FastBitQueryHandle query,
00137 const char* cname);
00138 FASTBIT_DLLSPEC const double*
00139 fastbit_get_qualified_doubles(FastBitQueryHandle query,
00140 const char* cname);
00141 FASTBIT_DLLSPEC const signed char*
00142 fastbit_get_qualified_bytes(FastBitQueryHandle query,
00143 const char* cname);
00144 FASTBIT_DLLSPEC const int16_t*
00145 fastbit_get_qualified_shorts(FastBitQueryHandle query,
00146 const char* cname);
00147 FASTBIT_DLLSPEC const int32_t*
00148 fastbit_get_qualified_ints(FastBitQueryHandle query,
00149 const char* cname);
00150 FASTBIT_DLLSPEC const int64_t*
00151 fastbit_get_qualified_longs(FastBitQueryHandle query,
00152 const char* cname);
00153 FASTBIT_DLLSPEC const unsigned char*
00154 fastbit_get_qualified_ubytes(FastBitQueryHandle query,
00155 const char* cname);
00156 FASTBIT_DLLSPEC const uint16_t*
00157 fastbit_get_qualified_ushorts(FastBitQueryHandle query,
00158 const char* cname);
00159 FASTBIT_DLLSPEC const uint32_t*
00160 fastbit_get_qualified_uints(FastBitQueryHandle query,
00161 const char* cname);
00162 FASTBIT_DLLSPEC const uint64_t*
00163 fastbit_get_qualified_ulongs(FastBitQueryHandle query,
00164 const char* cname);
00165 FASTBIT_DLLSPEC const char**
00166 fastbit_get_qualified_strings(FastBitQueryHandle query,
00167 const char* cname);
00169
00174 struct FastBitResultSet;
00176 typedef struct FastBitResultSet* FastBitResultSetHandle;
00177
00179 FASTBIT_DLLSPEC FastBitResultSetHandle
00180 fastbit_build_result_set(FastBitQueryHandle query);
00182 FASTBIT_DLLSPEC int
00183 fastbit_destroy_result_set(FastBitResultSetHandle rset);
00184
00186 FASTBIT_DLLSPEC int fastbit_result_set_next(FastBitResultSetHandle);
00188 FASTBIT_DLLSPEC int fastbit_result_set_next_bundle(FastBitResultSetHandle);
00190 FASTBIT_DLLSPEC int
00191 fastbit_result_set_get_int(FastBitResultSetHandle rset, const char *cname);
00193 FASTBIT_DLLSPEC unsigned
00194 fastbit_result_set_get_unsigned(FastBitResultSetHandle rset,
00195 const char *cname);
00197 FASTBIT_DLLSPEC int64_t
00198 fastbit_result_set_get_long(FastBitResultSetHandle rset,
00199 const char *cname);
00202 FASTBIT_DLLSPEC float
00203 fastbit_result_set_get_float(FastBitResultSetHandle rset,
00204 const char *cname);
00207 FASTBIT_DLLSPEC double
00208 fastbit_result_set_get_double(FastBitResultSetHandle rset,
00209 const char *cname);
00211 FASTBIT_DLLSPEC const char*
00212 fastbit_result_set_get_string(FastBitResultSetHandle rset,
00213 const char *cname);
00218 FASTBIT_DLLSPEC int32_t
00219 fastbit_result_set_getInt(FastBitResultSetHandle rset,
00220 unsigned position);
00222 FASTBIT_DLLSPEC uint32_t
00223 fastbit_result_set_getUnsigned(FastBitResultSetHandle rset,
00224 unsigned position);
00226 FASTBIT_DLLSPEC int64_t
00227 fastbit_result_set_getLong(FastBitResultSetHandle rset,
00228 unsigned position);
00231 FASTBIT_DLLSPEC float
00232 fastbit_result_set_getFloat(FastBitResultSetHandle rset,
00233 unsigned position);
00236 FASTBIT_DLLSPEC double
00237 fastbit_result_set_getDouble(FastBitResultSetHandle rset,
00238 unsigned position);
00240 FASTBIT_DLLSPEC const char*
00241 fastbit_result_set_getString(FastBitResultSetHandle rset,
00242 unsigned position);
00244
00246 FASTBIT_DLLSPEC int fastbit_flush_buffer(const char *dir);
00249 FASTBIT_DLLSPEC int
00250 fastbit_add_values(const char *colname, const char *coltype,
00251 void *vals, uint32_t nelem, uint32_t start);
00253 FASTBIT_DLLSPEC int fastbit_rows_in_partition(const char *dir);
00255 FASTBIT_DLLSPEC int fastbit_columns_in_partition(const char *dir);
00256
00258 FASTBIT_DLLSPEC void fastbit_init(const char *rcfile);
00260 FASTBIT_DLLSPEC void fastbit_cleanup(void);
00262 FASTBIT_DLLSPEC int fastbit_set_verbose_level(int v);
00264 FASTBIT_DLLSPEC int fastbit_get_verbose_level(void);
00266 FASTBIT_DLLSPEC int fastbit_set_logfile(const char* filename);
00268 FASTBIT_DLLSPEC const char* fastbit_get_logfile();
00270 FASTBIT_DLLSPEC FILE* fastbit_get_logfilepointer();
00271
00273 FASTBIT_DLLSPEC const char* fastbit_get_version_string();
00275 FASTBIT_DLLSPEC int fastbit_get_version_number();
00276 #ifdef __cplusplus
00277 }
00278 #endif
00279
00280 #endif // ifndef IBIS_CAPI_H