From c69a94344eebd13aece6937dbf0eabfb15d09b4d Mon Sep 17 00:00:00 2001 From: AlexPeshkoff Date: Tue, 13 Aug 2024 13:36:02 +0300 Subject: [PATCH] Implemented #8197: Add generated files for OO API for C language to distribution --- .../linux/makeInstallImage.sh.in | 7 +- .../install/posix-common/posixLibrary.sh.in | 2 +- builds/posix/Makefile.in | 40 +- examples/interfaces/01.create.c | 105 + extern/cloop/src/cloop/Main.cpp | 24 +- src/include/firebird/fb_c_api.hdr | 32 + src/include/gen/fb_c_api.c | 3400 +++++++++++++++++ src/include/gen/fb_c_api.h | 3351 ++++++++++++++++ 8 files changed, 6944 insertions(+), 17 deletions(-) create mode 100644 examples/interfaces/01.create.c create mode 100644 src/include/firebird/fb_c_api.hdr create mode 100644 src/include/gen/fb_c_api.c create mode 100644 src/include/gen/fb_c_api.h diff --git a/builds/install/arch-specific/linux/makeInstallImage.sh.in b/builds/install/arch-specific/linux/makeInstallImage.sh.in index d50f03ca47..781656c87d 100644 --- a/builds/install/arch-specific/linux/makeInstallImage.sh.in +++ b/builds/install/arch-specific/linux/makeInstallImage.sh.in @@ -248,9 +248,9 @@ copyFiles() { #include (.h .pas files) cp $BuiltFBDir/include/*.h ${TargetDir}@FB_INCDIR@ - cp $BuiltFBDir/include/firebird/impl/iberror_c.h ${TargetDir}@FB_INCDIR@/firebird/impl - cp $BuildRootDir/src/include/firebird/*.h ${TargetDir}@FB_INCDIR@/firebird - tar -C $BuildRootDir/src/include/firebird -cf - impl | tar -C ${TargetDir}@FB_INCDIR@/firebird -x +# cp $BuiltFBDir/include/firebird/impl/iberror_c.h ${TargetDir}@FB_INCDIR@/firebird/impl + cp $BuiltFBDir/include/firebird/*.h ${TargetDir}@FB_INCDIR@/firebird + tar -C $BuiltFBDir/include/firebird -cf - impl | tar -C ${TargetDir}@FB_INCDIR@/firebird -x if [ "$CLIENT_ONLY_FLG" = "N" ]; then cp $BuildRootDir/src/include/gen/Firebird.pas ${TargetDir}@FB_INCDIR@/firebird fi @@ -262,6 +262,7 @@ copyFiles() { if [ "$CLIENT_ONLY_FLG" = "N" ]; then cp -f $BuiltFBDir/lib/libib_util.so ${TargetDir}@FB_LIBDIR@/libib_util.so fi + copyIfExists $BuiltFBDir/lib/libfb_c_api.a ${TargetDir}@FB_LIBDIR@ if [ "$TomMathBuild" = "Y" ]; then makeDirs @FB_LIBDIR@/.tm diff --git a/builds/install/posix-common/posixLibrary.sh.in b/builds/install/posix-common/posixLibrary.sh.in index 2318d5f259..39cac61bbb 100644 --- a/builds/install/posix-common/posixLibrary.sh.in +++ b/builds/install/posix-common/posixLibrary.sh.in @@ -596,7 +596,7 @@ createLinksInSystemLib() { origDirLinksInSystemLib=`pwd` cd @FB_LIBDIR@ - Libraries=`echo libfbclient.@SHRLIB_EXT@* libib_util.@SHRLIB_EXT@` + Libraries=`echo libfbclient.@SHRLIB_EXT@* libib_util.@SHRLIB_EXT@ libfb_c_api.a` cd / for l in $Libraries diff --git a/builds/posix/Makefile.in b/builds/posix/Makefile.in index ef54769fc8..0a376de956 100644 --- a/builds/posix/Makefile.in +++ b/builds/posix/Makefile.in @@ -112,17 +112,24 @@ Debug: # .PHONY: updateCloopInterfaces updateBuildNum - -IDL_ROOT=$(SRC_ROOT)/include/firebird +INCLD_ROOT=$(SRC_ROOT)/include +IDL_ROOT=$(INCLD_ROOT)/firebird IDL_FILE=$(IDL_ROOT)/FirebirdInterface.idl API_H_FILE=$(IDL_ROOT)/IdlFbInterfaces.h -API_PAS_FILE=$(SRC_ROOT)/include/gen/Firebird.pas +API_PAS_FILE=$(INCLD_ROOT)/gen/Firebird.pas +API_C_HEADER=fb_c_api.h +API_C_H_FILE=$(FIREBIRD)/include/firebird/$(API_C_HEADER) +API_C_TMP_FILE=$(TMP_ROOT)/fb_c_api.tmp +API_C_IMPL_FILE=$(INCLD_ROOT)/gen/fb_c_api.c +API_C_TEMPLATE=$(IDL_ROOT)/fb_c_api.hdr +API_C_LIBRARY=$(LIB)/libfb_c_api.a +API_C_TMP_OBJ=$(TMP_ROOT)/fb_c_api.obj MISC=$(SRC_ROOT)/misc PAS_ROOT=$(MISC)/pascal PASCAL_SOURCES=$(wildcard $(PAS_ROOT)/*) TMP_FUNCS_PAS=$(TMP_ROOT)/func.pas -XPB_CONSTS=$(SRC_ROOT)/include/firebird/impl/consts_pub.h -INF_CONSTS=$(SRC_ROOT)/include/firebird/impl/inf_pub.h +XPB_CONSTS=$(INCLD_ROOT)/firebird/impl/consts_pub.h +INF_CONSTS=$(INCLD_ROOT)/firebird/impl/inf_pub.h ERR_CONSTS_PAS=$(SRC_ROOT)/misc/pascal/gds_codes.pas RPL_AWK=$(GEN_ROOT)/def_awk RPL_AWK_SRC=$(MISC)/def_awk.c @@ -134,6 +141,15 @@ updateCloopInterfaces : $(API_H_FILE) $(API_PAS_FILE) $(API_H_FILE): $(IDL_FILE) $(CLOOP) $< c++ $@ IDL_FB_INTERFACES_H Firebird I +$(API_C_TMP_FILE): $(IDL_FILE) + $(CLOOP) $< c-header $@ FB_C_API_H I + +$(API_C_H_FILE): $(API_C_TEMPLATE) $(API_C_TMP_FILE) + cat $(API_C_TEMPLATE) $(API_C_TMP_FILE) >$(API_C_H_FILE) + +$(API_C_IMPL_FILE): $(IDL_FILE) + $(CLOOP) $< c-impl $@ $(API_C_HEADER) I + # # This way firebird.pas can be created not using own mini-utilities. # They were added to be able to build on windows, this code is left for reference. @@ -150,7 +166,7 @@ $(RPL_AWK): $(RPL_AWK_SRC) $(RPL_GREP): $(RPL_GREP_SRC) $(CC) -o $@ $^ -$(TMP_ROOT)/iberror.pas: $(BUILD_FILE) $(ERR_CONSTS_PAS) $(SRC_ROOT)/include/firebird/impl/msg/*.h +$(TMP_ROOT)/iberror.pas: $(BUILD_FILE) $(ERR_CONSTS_PAS) $(INCLD_ROOT)/firebird/impl/msg/*.h $(BUILD_FILE) -p $(TMP_ROOT)/iberror_codes.pas cp $(ERR_CONSTS_PAS) $(TMP_ROOT)/iberror.pas cat $(TMP_ROOT)/iberror_codes.pas >> $(TMP_ROOT)/iberror.pas @@ -691,13 +707,13 @@ $(COMPAT_SQL): $(SRC_COMPAT_SQL) # all the rest we need to build # -.PHONY: message_file tzdata gbak_files +.PHONY: message_file tzdata gbak_files api_c_library FDB_FILES := $(SECURITY_FDB) $(FIREBIRD)/examples/empbuild/employee.fdb GBAK_FILES := $(FDB_FILES:.fdb=.gbak) GBAK_FILES := $(subst Native,$(TARGET),$(GBAK_FILES)) -rest: message_file tzdata +rest: tzdata api_c_library cross_rest: tzdata $(MAKE) $(BUILD_FILE) @@ -723,6 +739,14 @@ $(BUILD_FILE): $(BUILD_Objects) gbak_files: $(GBAK_FILES) +api_c_library: $(API_C_LIBRARY) + +$(API_C_LIBRARY): $(API_C_IMPL_FILE) $(API_C_H_FILE) $(FIREBIRD_MSG) # use $(FIREBIRD_MSG) as timemark for iberror_c.h + $(CC) $(WCFLAGS) -I$(FIREBIRD)/include -c $(API_C_IMPL_FILE) -o $(API_C_TMP_OBJ) + -$(RM) $@ + $(STATICLIB_LINK) $@ $(API_C_TMP_OBJ) + + #--------------------------------------------------------------------------- # This target builds the include files for distribution with the release diff --git a/examples/interfaces/01.create.c b/examples/interfaces/01.create.c new file mode 100644 index 0000000000..d70a155d98 --- /dev/null +++ b/examples/interfaces/01.create.c @@ -0,0 +1,105 @@ +/* + * PROGRAM: Object oriented API samples. + * MODULE: 01.create.c + * DESCRIPTION: Minimal sample of using interfaces from plain C. + * + * Run something like this to build: cc 01.create.c -lfb_c_api -lfbclient + * + * The contents of this file are subject to the Initial + * Developer's Public License Version 1.0 (the "License"); + * you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. + * + * Software distributed under the License is distributed AS IS, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. + * See the License for the specific language governing rights + * and limitations under the License. + * + * The Original Code was created by Alexander Peshkoff + * for the Firebird Open Source RDBMS project. + * + * Copyright (c) 2024 Alexander Peshkoff + * and all contributors signed below. + * + * All Rights Reserved. + * Contributor(s): ______________________________________. + */ + +#include "firebird/fb_c_api.h" +#include + +#define CHECK_STATUS(st) if (IStatus_getState(st) & IStatus_STATE_ERRORS) {char buf[256]; IUtil_formatStatus(utl, buf, sizeof buf, st); puts(buf); return 1;} + +int main() +{ + // Here we get access to master interface. This is main interface of firebird, + // and the only one for getting which there is special function in our API. + struct IMaster* master = fb_get_master_interface(); + + // Declare pointers to required interfaces + // IStatus is used to return wide error description to user + // IProvider is needed to start to work with database (or service) + // Status vector, main dispatcher and utility interfaces are returned by IMaster functions + // No error return may happen - these functions always succeed + struct IStatus* st = IMaster_getStatus(master); + struct IProvider* prov = IMaster_getDispatcher(master); + struct IUtil* utl = IMaster_getUtilInterface(master); + + // IAttachment and ITransaction contain methods to work with database attachment + // and transactions + struct IAttachment* att = NULL; + struct ITransaction* tra = NULL; + + // IXpbBuilder is used to access various parameters blocks used in API + struct IXpbBuilder* dpb = NULL; + + // create DPB - use non-default page size 4Kb + dpb = IUtil_getXpbBuilder(utl, st, IXpbBuilder_DPB, NULL, 0); + CHECK_STATUS(st); + IXpbBuilder_insertInt(dpb, st, isc_dpb_page_size, 4 * 1024); + CHECK_STATUS(st); + IXpbBuilder_insertString(dpb, st, isc_dpb_user_name, "sysdba"); + CHECK_STATUS(st); + IXpbBuilder_insertString(dpb, st, isc_dpb_password, "masterkey"); + CHECK_STATUS(st); + + // create empty database + att = IProvider_createDatabase(prov, st, "fbtests.fdb", + IXpbBuilder_getBufferLength(dpb, st), IXpbBuilder_getBuffer(dpb, st)); + CHECK_STATUS(st); + printf("Database fbtests.fdb created\n"); + + // start transaction + tra = IAttachment_startTransaction(att, st, 0, NULL); + CHECK_STATUS(st); + + // create table + IAttachment_execute(att, st, tra, 0, "create table dates_table (d1 date)", 3, + NULL, NULL, NULL, NULL); // Input parameters and output data not used + CHECK_STATUS(st); + + // commit transaction retaining + ITransaction_commitRetaining(tra, st); + CHECK_STATUS(st); + printf("Table dates_table created\n"); + + // insert a record into dates_table + IAttachment_execute(att, st, tra, 0, "insert into dates_table values (CURRENT_DATE)", 3, + NULL, NULL, NULL, NULL); // Input parameters and output data not used + CHECK_STATUS(st); + + // commit transaction (will close interface) + ITransaction_commit(tra, st); + CHECK_STATUS(st); + printf("Record inserted into dates_table\n"); + + // detach from database (will close interface) + IAttachment_detach(att, st); + CHECK_STATUS(st); + + IStatus_dispose(st); + IProvider_release(prov); + + return 0; +} diff --git a/extern/cloop/src/cloop/Main.cpp b/extern/cloop/src/cloop/Main.cpp index 348bae0a0f..9d79260821 100644 --- a/extern/cloop/src/cloop/Main.cpp +++ b/extern/cloop/src/cloop/Main.cpp @@ -35,6 +35,19 @@ using std::exception; using std::string; using std::runtime_error; +static string paramError(const char* generator = nullptr, const char* perGenerator = nullptr) +{ + string text = "Invalid command line parameters. Required format: inputFile "; + text += generator ? generator : "outFormat (one of c-header, c-impl, c++, pascal)"; + text += " outputFile"; + if (perGenerator) + { + text += " "; + text += perGenerator; + } + + return text; +} //-------------------------------------- @@ -42,7 +55,7 @@ using std::runtime_error; static void run(int argc, const char* argv[]) { if (argc < 4) - throw runtime_error("Invalid command line parameters."); + throw runtime_error(paramError()); string inFilename(argv[1]); string outFormat(argv[2]); @@ -58,7 +71,7 @@ static void run(int argc, const char* argv[]) if (outFormat == "c++") { if (argc < 7) - throw runtime_error("Invalid command line parameters for C++ output."); + throw runtime_error(paramError("c++", "headerGuard className prefix")); string headerGuard(argv[4]); string className(argv[5]); @@ -69,7 +82,7 @@ static void run(int argc, const char* argv[]) else if (outFormat == "c-header") { if (argc < 6) - throw runtime_error("Invalid command line parameters for C header output."); + throw runtime_error(paramError("c-header", "headerGuard prefix")); string headerGuard(argv[4]); string prefix(argv[5]); @@ -79,7 +92,7 @@ static void run(int argc, const char* argv[]) else if (outFormat == "c-impl") { if (argc < 6) - throw runtime_error("Invalid command line parameters for C implementation output."); + throw runtime_error(paramError("c-impl", "includeFilename prefix")); string includeFilename(argv[4]); string prefix(argv[5]); @@ -89,7 +102,8 @@ static void run(int argc, const char* argv[]) else if (outFormat == "pascal") { if (argc < 5) - throw runtime_error("Invalid command line parameters for Pascal output."); + throw runtime_error(paramError("pascal", "--uses uses --interfaceFile interfaces-file " + "--implementationFile implementation-file --exceptionClass class-name --prefix prefix --functionsFile functions-file")); string unitName(argv[4]); diff --git a/src/include/firebird/fb_c_api.hdr b/src/include/firebird/fb_c_api.hdr new file mode 100644 index 0000000000..03ee0005f9 --- /dev/null +++ b/src/include/firebird/fb_c_api.hdr @@ -0,0 +1,32 @@ +/* + * PROGRAM: Firebird interface. + * MODULE: fb_c_api.h + * DESCRIPTION: C API file. + * + * The contents of this file are subject to the Initial + * Developer's Public License Version 1.0 (the "License"); + * you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. + * + * Software distributed under the License is distributed AS IS, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. + * See the License for the specific language governing rights + * and limitations under the License. + * + * The Original Code was created by Alex Peshkov + * for the Firebird Open Source RDBMS project. + * + * Copyright (c) 2024 Alex Peshkov + * and all contributors signed below. + * + * All Rights Reserved. + * Contributor(s): ______________________________________. + * + * + */ + +#include + +struct IMaster* ISC_EXPORT fb_get_master_interface(); + diff --git a/src/include/gen/fb_c_api.c b/src/include/gen/fb_c_api.c new file mode 100644 index 0000000000..4bc08e9628 --- /dev/null +++ b/src/include/gen/fb_c_api.c @@ -0,0 +1,3400 @@ +/* This file was autogenerated by cloop - Cross Language Object Oriented Programming */ + +#include "fb_c_api.h" + + +CLOOP_EXTERN_C void IReferenceCounted_addRef(struct IReferenceCounted* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IReferenceCounted_release(struct IReferenceCounted* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IDisposable_dispose(struct IDisposable* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IStatus_dispose(struct IStatus* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IStatus_init(struct IStatus* self) +{ + self->vtable->init(self); +} + +CLOOP_EXTERN_C unsigned IStatus_getState(const struct IStatus* self) +{ + return self->vtable->getState(self); +} + +CLOOP_EXTERN_C void IStatus_setErrors2(struct IStatus* self, unsigned length, const intptr_t* value) +{ + self->vtable->setErrors2(self, length, value); +} + +CLOOP_EXTERN_C void IStatus_setWarnings2(struct IStatus* self, unsigned length, const intptr_t* value) +{ + self->vtable->setWarnings2(self, length, value); +} + +CLOOP_EXTERN_C void IStatus_setErrors(struct IStatus* self, const intptr_t* value) +{ + self->vtable->setErrors(self, value); +} + +CLOOP_EXTERN_C void IStatus_setWarnings(struct IStatus* self, const intptr_t* value) +{ + self->vtable->setWarnings(self, value); +} + +CLOOP_EXTERN_C const intptr_t* IStatus_getErrors(const struct IStatus* self) +{ + return self->vtable->getErrors(self); +} + +CLOOP_EXTERN_C const intptr_t* IStatus_getWarnings(const struct IStatus* self) +{ + return self->vtable->getWarnings(self); +} + +CLOOP_EXTERN_C struct IStatus* IStatus_clone(const struct IStatus* self) +{ + return self->vtable->clone(self); +} + +CLOOP_EXTERN_C struct IStatus* IMaster_getStatus(struct IMaster* self) +{ + return self->vtable->getStatus(self); +} + +CLOOP_EXTERN_C struct IProvider* IMaster_getDispatcher(struct IMaster* self) +{ + return self->vtable->getDispatcher(self); +} + +CLOOP_EXTERN_C struct IPluginManager* IMaster_getPluginManager(struct IMaster* self) +{ + return self->vtable->getPluginManager(self); +} + +CLOOP_EXTERN_C struct ITimerControl* IMaster_getTimerControl(struct IMaster* self) +{ + return self->vtable->getTimerControl(self); +} + +CLOOP_EXTERN_C struct IDtc* IMaster_getDtc(struct IMaster* self) +{ + return self->vtable->getDtc(self); +} + +CLOOP_EXTERN_C struct IAttachment* IMaster_registerAttachment(struct IMaster* self, struct IProvider* provider, struct IAttachment* attachment) +{ + return self->vtable->registerAttachment(self, provider, attachment); +} + +CLOOP_EXTERN_C struct ITransaction* IMaster_registerTransaction(struct IMaster* self, struct IAttachment* attachment, struct ITransaction* transaction) +{ + return self->vtable->registerTransaction(self, attachment, transaction); +} + +CLOOP_EXTERN_C struct IMetadataBuilder* IMaster_getMetadataBuilder(struct IMaster* self, struct IStatus* status, unsigned fieldCount) +{ + return self->vtable->getMetadataBuilder(self, status, fieldCount); +} + +CLOOP_EXTERN_C int IMaster_serverMode(struct IMaster* self, int mode) +{ + return self->vtable->serverMode(self, mode); +} + +CLOOP_EXTERN_C struct IUtil* IMaster_getUtilInterface(struct IMaster* self) +{ + return self->vtable->getUtilInterface(self); +} + +CLOOP_EXTERN_C struct IConfigManager* IMaster_getConfigManager(struct IMaster* self) +{ + return self->vtable->getConfigManager(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN IMaster_getProcessExiting(struct IMaster* self) +{ + return self->vtable->getProcessExiting(self); +} + +CLOOP_EXTERN_C void IPluginBase_addRef(struct IPluginBase* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IPluginBase_release(struct IPluginBase* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IPluginBase_setOwner(struct IPluginBase* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IPluginBase_getOwner(struct IPluginBase* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C void IPluginSet_addRef(struct IPluginSet* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IPluginSet_release(struct IPluginSet* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C const char* IPluginSet_getName(const struct IPluginSet* self) +{ + return self->vtable->getName(self); +} + +CLOOP_EXTERN_C const char* IPluginSet_getModuleName(const struct IPluginSet* self) +{ + return self->vtable->getModuleName(self); +} + +CLOOP_EXTERN_C struct IPluginBase* IPluginSet_getPlugin(struct IPluginSet* self, struct IStatus* status) +{ + return self->vtable->getPlugin(self, status); +} + +CLOOP_EXTERN_C void IPluginSet_next(struct IPluginSet* self, struct IStatus* status) +{ + self->vtable->next(self, status); +} + +CLOOP_EXTERN_C void IPluginSet_set(struct IPluginSet* self, struct IStatus* status, const char* s) +{ + self->vtable->set(self, status, s); +} + +CLOOP_EXTERN_C void IConfigEntry_addRef(struct IConfigEntry* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IConfigEntry_release(struct IConfigEntry* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C const char* IConfigEntry_getName(struct IConfigEntry* self) +{ + return self->vtable->getName(self); +} + +CLOOP_EXTERN_C const char* IConfigEntry_getValue(struct IConfigEntry* self) +{ + return self->vtable->getValue(self); +} + +CLOOP_EXTERN_C ISC_INT64 IConfigEntry_getIntValue(struct IConfigEntry* self) +{ + return self->vtable->getIntValue(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN IConfigEntry_getBoolValue(struct IConfigEntry* self) +{ + return self->vtable->getBoolValue(self); +} + +CLOOP_EXTERN_C struct IConfig* IConfigEntry_getSubConfig(struct IConfigEntry* self, struct IStatus* status) +{ + return self->vtable->getSubConfig(self, status); +} + +CLOOP_EXTERN_C void IConfig_addRef(struct IConfig* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IConfig_release(struct IConfig* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C struct IConfigEntry* IConfig_find(struct IConfig* self, struct IStatus* status, const char* name) +{ + return self->vtable->find(self, status, name); +} + +CLOOP_EXTERN_C struct IConfigEntry* IConfig_findValue(struct IConfig* self, struct IStatus* status, const char* name, const char* value) +{ + return self->vtable->findValue(self, status, name, value); +} + +CLOOP_EXTERN_C struct IConfigEntry* IConfig_findPos(struct IConfig* self, struct IStatus* status, const char* name, unsigned pos) +{ + return self->vtable->findPos(self, status, name, pos); +} + +CLOOP_EXTERN_C void IFirebirdConf_addRef(struct IFirebirdConf* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IFirebirdConf_release(struct IFirebirdConf* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C unsigned IFirebirdConf_getKey(struct IFirebirdConf* self, const char* name) +{ + return self->vtable->getKey(self, name); +} + +CLOOP_EXTERN_C ISC_INT64 IFirebirdConf_asInteger(struct IFirebirdConf* self, unsigned key) +{ + return self->vtable->asInteger(self, key); +} + +CLOOP_EXTERN_C const char* IFirebirdConf_asString(struct IFirebirdConf* self, unsigned key) +{ + return self->vtable->asString(self, key); +} + +CLOOP_EXTERN_C FB_BOOLEAN IFirebirdConf_asBoolean(struct IFirebirdConf* self, unsigned key) +{ + return self->vtable->asBoolean(self, key); +} + +CLOOP_EXTERN_C unsigned IFirebirdConf_getVersion(struct IFirebirdConf* self, struct IStatus* status) +{ + return self->vtable->getVersion(self, status); +} + +CLOOP_EXTERN_C void IPluginConfig_addRef(struct IPluginConfig* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IPluginConfig_release(struct IPluginConfig* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C const char* IPluginConfig_getConfigFileName(struct IPluginConfig* self) +{ + return self->vtable->getConfigFileName(self); +} + +CLOOP_EXTERN_C struct IConfig* IPluginConfig_getDefaultConfig(struct IPluginConfig* self, struct IStatus* status) +{ + return self->vtable->getDefaultConfig(self, status); +} + +CLOOP_EXTERN_C struct IFirebirdConf* IPluginConfig_getFirebirdConf(struct IPluginConfig* self, struct IStatus* status) +{ + return self->vtable->getFirebirdConf(self, status); +} + +CLOOP_EXTERN_C void IPluginConfig_setReleaseDelay(struct IPluginConfig* self, struct IStatus* status, ISC_UINT64 microSeconds) +{ + self->vtable->setReleaseDelay(self, status, microSeconds); +} + +CLOOP_EXTERN_C struct IPluginBase* IPluginFactory_createPlugin(struct IPluginFactory* self, struct IStatus* status, struct IPluginConfig* factoryParameter) +{ + return self->vtable->createPlugin(self, status, factoryParameter); +} + +CLOOP_EXTERN_C void IPluginModule_doClean(struct IPluginModule* self) +{ + self->vtable->doClean(self); +} + +CLOOP_EXTERN_C void IPluginModule_threadDetach(struct IPluginModule* self) +{ + self->vtable->threadDetach(self); +} + +CLOOP_EXTERN_C void IPluginManager_registerPluginFactory(struct IPluginManager* self, unsigned pluginType, const char* defaultName, struct IPluginFactory* factory) +{ + self->vtable->registerPluginFactory(self, pluginType, defaultName, factory); +} + +CLOOP_EXTERN_C void IPluginManager_registerModule(struct IPluginManager* self, struct IPluginModule* cleanup) +{ + self->vtable->registerModule(self, cleanup); +} + +CLOOP_EXTERN_C void IPluginManager_unregisterModule(struct IPluginManager* self, struct IPluginModule* cleanup) +{ + self->vtable->unregisterModule(self, cleanup); +} + +CLOOP_EXTERN_C struct IPluginSet* IPluginManager_getPlugins(struct IPluginManager* self, struct IStatus* status, unsigned pluginType, const char* namesList, struct IFirebirdConf* firebirdConf) +{ + return self->vtable->getPlugins(self, status, pluginType, namesList, firebirdConf); +} + +CLOOP_EXTERN_C struct IConfig* IPluginManager_getConfig(struct IPluginManager* self, struct IStatus* status, const char* filename) +{ + return self->vtable->getConfig(self, status, filename); +} + +CLOOP_EXTERN_C void IPluginManager_releasePlugin(struct IPluginManager* self, struct IPluginBase* plugin) +{ + self->vtable->releasePlugin(self, plugin); +} + +CLOOP_EXTERN_C void ICryptKey_setSymmetric(struct ICryptKey* self, struct IStatus* status, const char* type, unsigned keyLength, const void* key) +{ + self->vtable->setSymmetric(self, status, type, keyLength, key); +} + +CLOOP_EXTERN_C void ICryptKey_setAsymmetric(struct ICryptKey* self, struct IStatus* status, const char* type, unsigned encryptKeyLength, const void* encryptKey, unsigned decryptKeyLength, const void* decryptKey) +{ + self->vtable->setAsymmetric(self, status, type, encryptKeyLength, encryptKey, decryptKeyLength, decryptKey); +} + +CLOOP_EXTERN_C const void* ICryptKey_getEncryptKey(struct ICryptKey* self, unsigned* length) +{ + return self->vtable->getEncryptKey(self, length); +} + +CLOOP_EXTERN_C const void* ICryptKey_getDecryptKey(struct ICryptKey* self, unsigned* length) +{ + return self->vtable->getDecryptKey(self, length); +} + +CLOOP_EXTERN_C const char* IConfigManager_getDirectory(struct IConfigManager* self, unsigned code) +{ + return self->vtable->getDirectory(self, code); +} + +CLOOP_EXTERN_C struct IFirebirdConf* IConfigManager_getFirebirdConf(struct IConfigManager* self) +{ + return self->vtable->getFirebirdConf(self); +} + +CLOOP_EXTERN_C struct IFirebirdConf* IConfigManager_getDatabaseConf(struct IConfigManager* self, const char* dbName) +{ + return self->vtable->getDatabaseConf(self, dbName); +} + +CLOOP_EXTERN_C struct IConfig* IConfigManager_getPluginConfig(struct IConfigManager* self, const char* configuredPlugin) +{ + return self->vtable->getPluginConfig(self, configuredPlugin); +} + +CLOOP_EXTERN_C const char* IConfigManager_getInstallDirectory(struct IConfigManager* self) +{ + return self->vtable->getInstallDirectory(self); +} + +CLOOP_EXTERN_C const char* IConfigManager_getRootDirectory(struct IConfigManager* self) +{ + return self->vtable->getRootDirectory(self); +} + +CLOOP_EXTERN_C const char* IConfigManager_getDefaultSecurityDb(struct IConfigManager* self) +{ + return self->vtable->getDefaultSecurityDb(self); +} + +CLOOP_EXTERN_C void IEventCallback_addRef(struct IEventCallback* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IEventCallback_release(struct IEventCallback* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IEventCallback_eventCallbackFunction(struct IEventCallback* self, unsigned length, const unsigned char* events) +{ + self->vtable->eventCallbackFunction(self, length, events); +} + +CLOOP_EXTERN_C void IBlob_addRef(struct IBlob* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IBlob_release(struct IBlob* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IBlob_getInfo(struct IBlob* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer) +{ + self->vtable->getInfo(self, status, itemsLength, items, bufferLength, buffer); +} + +CLOOP_EXTERN_C int IBlob_getSegment(struct IBlob* self, struct IStatus* status, unsigned bufferLength, void* buffer, unsigned* segmentLength) +{ + return self->vtable->getSegment(self, status, bufferLength, buffer, segmentLength); +} + +CLOOP_EXTERN_C void IBlob_putSegment(struct IBlob* self, struct IStatus* status, unsigned length, const void* buffer) +{ + self->vtable->putSegment(self, status, length, buffer); +} + +CLOOP_EXTERN_C void IBlob_deprecatedCancel(struct IBlob* self, struct IStatus* status) +{ + self->vtable->deprecatedCancel(self, status); +} + +CLOOP_EXTERN_C void IBlob_deprecatedClose(struct IBlob* self, struct IStatus* status) +{ + self->vtable->deprecatedClose(self, status); +} + +CLOOP_EXTERN_C int IBlob_seek(struct IBlob* self, struct IStatus* status, int mode, int offset) +{ + return self->vtable->seek(self, status, mode, offset); +} + +CLOOP_EXTERN_C void IBlob_cancel(struct IBlob* self, struct IStatus* status) +{ + self->vtable->cancel(self, status); +} + +CLOOP_EXTERN_C void IBlob_close(struct IBlob* self, struct IStatus* status) +{ + self->vtable->close(self, status); +} + +CLOOP_EXTERN_C void ITransaction_addRef(struct ITransaction* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int ITransaction_release(struct ITransaction* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void ITransaction_getInfo(struct ITransaction* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer) +{ + self->vtable->getInfo(self, status, itemsLength, items, bufferLength, buffer); +} + +CLOOP_EXTERN_C void ITransaction_prepare(struct ITransaction* self, struct IStatus* status, unsigned msgLength, const unsigned char* message) +{ + self->vtable->prepare(self, status, msgLength, message); +} + +CLOOP_EXTERN_C void ITransaction_deprecatedCommit(struct ITransaction* self, struct IStatus* status) +{ + self->vtable->deprecatedCommit(self, status); +} + +CLOOP_EXTERN_C void ITransaction_commitRetaining(struct ITransaction* self, struct IStatus* status) +{ + self->vtable->commitRetaining(self, status); +} + +CLOOP_EXTERN_C void ITransaction_deprecatedRollback(struct ITransaction* self, struct IStatus* status) +{ + self->vtable->deprecatedRollback(self, status); +} + +CLOOP_EXTERN_C void ITransaction_rollbackRetaining(struct ITransaction* self, struct IStatus* status) +{ + self->vtable->rollbackRetaining(self, status); +} + +CLOOP_EXTERN_C void ITransaction_deprecatedDisconnect(struct ITransaction* self, struct IStatus* status) +{ + self->vtable->deprecatedDisconnect(self, status); +} + +CLOOP_EXTERN_C struct ITransaction* ITransaction_join(struct ITransaction* self, struct IStatus* status, struct ITransaction* transaction) +{ + return self->vtable->join(self, status, transaction); +} + +CLOOP_EXTERN_C struct ITransaction* ITransaction_validate(struct ITransaction* self, struct IStatus* status, struct IAttachment* attachment) +{ + return self->vtable->validate(self, status, attachment); +} + +CLOOP_EXTERN_C struct ITransaction* ITransaction_enterDtc(struct ITransaction* self, struct IStatus* status) +{ + return self->vtable->enterDtc(self, status); +} + +CLOOP_EXTERN_C void ITransaction_commit(struct ITransaction* self, struct IStatus* status) +{ + self->vtable->commit(self, status); +} + +CLOOP_EXTERN_C void ITransaction_rollback(struct ITransaction* self, struct IStatus* status) +{ + self->vtable->rollback(self, status); +} + +CLOOP_EXTERN_C void ITransaction_disconnect(struct ITransaction* self, struct IStatus* status) +{ + self->vtable->disconnect(self, status); +} + +CLOOP_EXTERN_C void IMessageMetadata_addRef(struct IMessageMetadata* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IMessageMetadata_release(struct IMessageMetadata* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getCount(struct IMessageMetadata* self, struct IStatus* status) +{ + return self->vtable->getCount(self, status); +} + +CLOOP_EXTERN_C const char* IMessageMetadata_getField(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getField(self, status, index); +} + +CLOOP_EXTERN_C const char* IMessageMetadata_getRelation(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getRelation(self, status, index); +} + +CLOOP_EXTERN_C const char* IMessageMetadata_getOwner(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getOwner(self, status, index); +} + +CLOOP_EXTERN_C const char* IMessageMetadata_getAlias(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getAlias(self, status, index); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getType(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getType(self, status, index); +} + +CLOOP_EXTERN_C FB_BOOLEAN IMessageMetadata_isNullable(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->isNullable(self, status, index); +} + +CLOOP_EXTERN_C int IMessageMetadata_getSubType(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getSubType(self, status, index); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getLength(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getLength(self, status, index); +} + +CLOOP_EXTERN_C int IMessageMetadata_getScale(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getScale(self, status, index); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getCharSet(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getCharSet(self, status, index); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getOffset(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getOffset(self, status, index); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getNullOffset(struct IMessageMetadata* self, struct IStatus* status, unsigned index) +{ + return self->vtable->getNullOffset(self, status, index); +} + +CLOOP_EXTERN_C struct IMetadataBuilder* IMessageMetadata_getBuilder(struct IMessageMetadata* self, struct IStatus* status) +{ + return self->vtable->getBuilder(self, status); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getMessageLength(struct IMessageMetadata* self, struct IStatus* status) +{ + return self->vtable->getMessageLength(self, status); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getAlignment(struct IMessageMetadata* self, struct IStatus* status) +{ + return self->vtable->getAlignment(self, status); +} + +CLOOP_EXTERN_C unsigned IMessageMetadata_getAlignedLength(struct IMessageMetadata* self, struct IStatus* status) +{ + return self->vtable->getAlignedLength(self, status); +} + +CLOOP_EXTERN_C void IMetadataBuilder_addRef(struct IMetadataBuilder* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IMetadataBuilder_release(struct IMetadataBuilder* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setType(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned type) +{ + self->vtable->setType(self, status, index, type); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setSubType(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, int subType) +{ + self->vtable->setSubType(self, status, index, subType); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setLength(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned length) +{ + self->vtable->setLength(self, status, index, length); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setCharSet(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned charSet) +{ + self->vtable->setCharSet(self, status, index, charSet); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setScale(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, int scale) +{ + self->vtable->setScale(self, status, index, scale); +} + +CLOOP_EXTERN_C void IMetadataBuilder_truncate(struct IMetadataBuilder* self, struct IStatus* status, unsigned count) +{ + self->vtable->truncate(self, status, count); +} + +CLOOP_EXTERN_C void IMetadataBuilder_moveNameToIndex(struct IMetadataBuilder* self, struct IStatus* status, const char* name, unsigned index) +{ + self->vtable->moveNameToIndex(self, status, name, index); +} + +CLOOP_EXTERN_C void IMetadataBuilder_remove(struct IMetadataBuilder* self, struct IStatus* status, unsigned index) +{ + self->vtable->remove(self, status, index); +} + +CLOOP_EXTERN_C unsigned IMetadataBuilder_addField(struct IMetadataBuilder* self, struct IStatus* status) +{ + return self->vtable->addField(self, status); +} + +CLOOP_EXTERN_C struct IMessageMetadata* IMetadataBuilder_getMetadata(struct IMetadataBuilder* self, struct IStatus* status) +{ + return self->vtable->getMetadata(self, status); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setField(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* field) +{ + self->vtable->setField(self, status, index, field); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setRelation(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* relation) +{ + self->vtable->setRelation(self, status, index, relation); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setOwner(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* owner) +{ + self->vtable->setOwner(self, status, index, owner); +} + +CLOOP_EXTERN_C void IMetadataBuilder_setAlias(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* alias) +{ + self->vtable->setAlias(self, status, index, alias); +} + +CLOOP_EXTERN_C void IResultSet_addRef(struct IResultSet* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IResultSet_release(struct IResultSet* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C int IResultSet_fetchNext(struct IResultSet* self, struct IStatus* status, void* message) +{ + return self->vtable->fetchNext(self, status, message); +} + +CLOOP_EXTERN_C int IResultSet_fetchPrior(struct IResultSet* self, struct IStatus* status, void* message) +{ + return self->vtable->fetchPrior(self, status, message); +} + +CLOOP_EXTERN_C int IResultSet_fetchFirst(struct IResultSet* self, struct IStatus* status, void* message) +{ + return self->vtable->fetchFirst(self, status, message); +} + +CLOOP_EXTERN_C int IResultSet_fetchLast(struct IResultSet* self, struct IStatus* status, void* message) +{ + return self->vtable->fetchLast(self, status, message); +} + +CLOOP_EXTERN_C int IResultSet_fetchAbsolute(struct IResultSet* self, struct IStatus* status, int position, void* message) +{ + return self->vtable->fetchAbsolute(self, status, position, message); +} + +CLOOP_EXTERN_C int IResultSet_fetchRelative(struct IResultSet* self, struct IStatus* status, int offset, void* message) +{ + return self->vtable->fetchRelative(self, status, offset, message); +} + +CLOOP_EXTERN_C FB_BOOLEAN IResultSet_isEof(struct IResultSet* self, struct IStatus* status) +{ + return self->vtable->isEof(self, status); +} + +CLOOP_EXTERN_C FB_BOOLEAN IResultSet_isBof(struct IResultSet* self, struct IStatus* status) +{ + return self->vtable->isBof(self, status); +} + +CLOOP_EXTERN_C struct IMessageMetadata* IResultSet_getMetadata(struct IResultSet* self, struct IStatus* status) +{ + return self->vtable->getMetadata(self, status); +} + +CLOOP_EXTERN_C void IResultSet_deprecatedClose(struct IResultSet* self, struct IStatus* status) +{ + self->vtable->deprecatedClose(self, status); +} + +CLOOP_EXTERN_C void IResultSet_setDelayedOutputFormat(struct IResultSet* self, struct IStatus* status, struct IMessageMetadata* format) +{ + self->vtable->setDelayedOutputFormat(self, status, format); +} + +CLOOP_EXTERN_C void IResultSet_close(struct IResultSet* self, struct IStatus* status) +{ + self->vtable->close(self, status); +} + +CLOOP_EXTERN_C void IResultSet_getInfo(struct IResultSet* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer) +{ + self->vtable->getInfo(self, status, itemsLength, items, bufferLength, buffer); +} + +CLOOP_EXTERN_C void IStatement_addRef(struct IStatement* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IStatement_release(struct IStatement* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IStatement_getInfo(struct IStatement* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer) +{ + self->vtable->getInfo(self, status, itemsLength, items, bufferLength, buffer); +} + +CLOOP_EXTERN_C unsigned IStatement_getType(struct IStatement* self, struct IStatus* status) +{ + return self->vtable->getType(self, status); +} + +CLOOP_EXTERN_C const char* IStatement_getPlan(struct IStatement* self, struct IStatus* status, FB_BOOLEAN detailed) +{ + return self->vtable->getPlan(self, status, detailed); +} + +CLOOP_EXTERN_C ISC_UINT64 IStatement_getAffectedRecords(struct IStatement* self, struct IStatus* status) +{ + return self->vtable->getAffectedRecords(self, status); +} + +CLOOP_EXTERN_C struct IMessageMetadata* IStatement_getInputMetadata(struct IStatement* self, struct IStatus* status) +{ + return self->vtable->getInputMetadata(self, status); +} + +CLOOP_EXTERN_C struct IMessageMetadata* IStatement_getOutputMetadata(struct IStatement* self, struct IStatus* status) +{ + return self->vtable->getOutputMetadata(self, status); +} + +CLOOP_EXTERN_C struct ITransaction* IStatement_execute(struct IStatement* self, struct IStatus* status, struct ITransaction* transaction, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, void* outBuffer) +{ + return self->vtable->execute(self, status, transaction, inMetadata, inBuffer, outMetadata, outBuffer); +} + +CLOOP_EXTERN_C struct IResultSet* IStatement_openCursor(struct IStatement* self, struct IStatus* status, struct ITransaction* transaction, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, unsigned flags) +{ + return self->vtable->openCursor(self, status, transaction, inMetadata, inBuffer, outMetadata, flags); +} + +CLOOP_EXTERN_C void IStatement_setCursorName(struct IStatement* self, struct IStatus* status, const char* name) +{ + self->vtable->setCursorName(self, status, name); +} + +CLOOP_EXTERN_C void IStatement_deprecatedFree(struct IStatement* self, struct IStatus* status) +{ + self->vtable->deprecatedFree(self, status); +} + +CLOOP_EXTERN_C unsigned IStatement_getFlags(struct IStatement* self, struct IStatus* status) +{ + return self->vtable->getFlags(self, status); +} + +CLOOP_EXTERN_C unsigned IStatement_getTimeout(struct IStatement* self, struct IStatus* status) +{ + return self->vtable->getTimeout(self, status); +} + +CLOOP_EXTERN_C void IStatement_setTimeout(struct IStatement* self, struct IStatus* status, unsigned timeOut) +{ + self->vtable->setTimeout(self, status, timeOut); +} + +CLOOP_EXTERN_C struct IBatch* IStatement_createBatch(struct IStatement* self, struct IStatus* status, struct IMessageMetadata* inMetadata, unsigned parLength, const unsigned char* par) +{ + return self->vtable->createBatch(self, status, inMetadata, parLength, par); +} + +CLOOP_EXTERN_C void IStatement_free(struct IStatement* self, struct IStatus* status) +{ + self->vtable->free(self, status); +} + +CLOOP_EXTERN_C void IBatch_addRef(struct IBatch* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IBatch_release(struct IBatch* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IBatch_add(struct IBatch* self, struct IStatus* status, unsigned count, const void* inBuffer) +{ + self->vtable->add(self, status, count, inBuffer); +} + +CLOOP_EXTERN_C void IBatch_addBlob(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer, ISC_QUAD* blobId, unsigned parLength, const unsigned char* par) +{ + self->vtable->addBlob(self, status, length, inBuffer, blobId, parLength, par); +} + +CLOOP_EXTERN_C void IBatch_appendBlobData(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer) +{ + self->vtable->appendBlobData(self, status, length, inBuffer); +} + +CLOOP_EXTERN_C void IBatch_addBlobStream(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer) +{ + self->vtable->addBlobStream(self, status, length, inBuffer); +} + +CLOOP_EXTERN_C void IBatch_registerBlob(struct IBatch* self, struct IStatus* status, const ISC_QUAD* existingBlob, ISC_QUAD* blobId) +{ + self->vtable->registerBlob(self, status, existingBlob, blobId); +} + +CLOOP_EXTERN_C struct IBatchCompletionState* IBatch_execute(struct IBatch* self, struct IStatus* status, struct ITransaction* transaction) +{ + return self->vtable->execute(self, status, transaction); +} + +CLOOP_EXTERN_C void IBatch_cancel(struct IBatch* self, struct IStatus* status) +{ + self->vtable->cancel(self, status); +} + +CLOOP_EXTERN_C unsigned IBatch_getBlobAlignment(struct IBatch* self, struct IStatus* status) +{ + return self->vtable->getBlobAlignment(self, status); +} + +CLOOP_EXTERN_C struct IMessageMetadata* IBatch_getMetadata(struct IBatch* self, struct IStatus* status) +{ + return self->vtable->getMetadata(self, status); +} + +CLOOP_EXTERN_C void IBatch_setDefaultBpb(struct IBatch* self, struct IStatus* status, unsigned parLength, const unsigned char* par) +{ + self->vtable->setDefaultBpb(self, status, parLength, par); +} + +CLOOP_EXTERN_C void IBatch_deprecatedClose(struct IBatch* self, struct IStatus* status) +{ + self->vtable->deprecatedClose(self, status); +} + +CLOOP_EXTERN_C void IBatch_close(struct IBatch* self, struct IStatus* status) +{ + self->vtable->close(self, status); +} + +CLOOP_EXTERN_C void IBatch_getInfo(struct IBatch* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer) +{ + self->vtable->getInfo(self, status, itemsLength, items, bufferLength, buffer); +} + +CLOOP_EXTERN_C void IBatchCompletionState_dispose(struct IBatchCompletionState* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C unsigned IBatchCompletionState_getSize(struct IBatchCompletionState* self, struct IStatus* status) +{ + return self->vtable->getSize(self, status); +} + +CLOOP_EXTERN_C int IBatchCompletionState_getState(struct IBatchCompletionState* self, struct IStatus* status, unsigned pos) +{ + return self->vtable->getState(self, status, pos); +} + +CLOOP_EXTERN_C unsigned IBatchCompletionState_findError(struct IBatchCompletionState* self, struct IStatus* status, unsigned pos) +{ + return self->vtable->findError(self, status, pos); +} + +CLOOP_EXTERN_C void IBatchCompletionState_getStatus(struct IBatchCompletionState* self, struct IStatus* status, struct IStatus* to, unsigned pos) +{ + self->vtable->getStatus(self, status, to, pos); +} + +CLOOP_EXTERN_C void IReplicator_addRef(struct IReplicator* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IReplicator_release(struct IReplicator* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IReplicator_process(struct IReplicator* self, struct IStatus* status, unsigned length, const unsigned char* data) +{ + self->vtable->process(self, status, length, data); +} + +CLOOP_EXTERN_C void IReplicator_deprecatedClose(struct IReplicator* self, struct IStatus* status) +{ + self->vtable->deprecatedClose(self, status); +} + +CLOOP_EXTERN_C void IReplicator_close(struct IReplicator* self, struct IStatus* status) +{ + self->vtable->close(self, status); +} + +CLOOP_EXTERN_C void IRequest_addRef(struct IRequest* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IRequest_release(struct IRequest* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IRequest_receive(struct IRequest* self, struct IStatus* status, int level, unsigned msgType, unsigned length, void* message) +{ + self->vtable->receive(self, status, level, msgType, length, message); +} + +CLOOP_EXTERN_C void IRequest_send(struct IRequest* self, struct IStatus* status, int level, unsigned msgType, unsigned length, const void* message) +{ + self->vtable->send(self, status, level, msgType, length, message); +} + +CLOOP_EXTERN_C void IRequest_getInfo(struct IRequest* self, struct IStatus* status, int level, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer) +{ + self->vtable->getInfo(self, status, level, itemsLength, items, bufferLength, buffer); +} + +CLOOP_EXTERN_C void IRequest_start(struct IRequest* self, struct IStatus* status, struct ITransaction* tra, int level) +{ + self->vtable->start(self, status, tra, level); +} + +CLOOP_EXTERN_C void IRequest_startAndSend(struct IRequest* self, struct IStatus* status, struct ITransaction* tra, int level, unsigned msgType, unsigned length, const void* message) +{ + self->vtable->startAndSend(self, status, tra, level, msgType, length, message); +} + +CLOOP_EXTERN_C void IRequest_unwind(struct IRequest* self, struct IStatus* status, int level) +{ + self->vtable->unwind(self, status, level); +} + +CLOOP_EXTERN_C void IRequest_deprecatedFree(struct IRequest* self, struct IStatus* status) +{ + self->vtable->deprecatedFree(self, status); +} + +CLOOP_EXTERN_C void IRequest_free(struct IRequest* self, struct IStatus* status) +{ + self->vtable->free(self, status); +} + +CLOOP_EXTERN_C void IEvents_addRef(struct IEvents* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IEvents_release(struct IEvents* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IEvents_deprecatedCancel(struct IEvents* self, struct IStatus* status) +{ + self->vtable->deprecatedCancel(self, status); +} + +CLOOP_EXTERN_C void IEvents_cancel(struct IEvents* self, struct IStatus* status) +{ + self->vtable->cancel(self, status); +} + +CLOOP_EXTERN_C void IAttachment_addRef(struct IAttachment* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IAttachment_release(struct IAttachment* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IAttachment_getInfo(struct IAttachment* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer) +{ + self->vtable->getInfo(self, status, itemsLength, items, bufferLength, buffer); +} + +CLOOP_EXTERN_C struct ITransaction* IAttachment_startTransaction(struct IAttachment* self, struct IStatus* status, unsigned tpbLength, const unsigned char* tpb) +{ + return self->vtable->startTransaction(self, status, tpbLength, tpb); +} + +CLOOP_EXTERN_C struct ITransaction* IAttachment_reconnectTransaction(struct IAttachment* self, struct IStatus* status, unsigned length, const unsigned char* id) +{ + return self->vtable->reconnectTransaction(self, status, length, id); +} + +CLOOP_EXTERN_C struct IRequest* IAttachment_compileRequest(struct IAttachment* self, struct IStatus* status, unsigned blrLength, const unsigned char* blr) +{ + return self->vtable->compileRequest(self, status, blrLength, blr); +} + +CLOOP_EXTERN_C void IAttachment_transactRequest(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned blrLength, const unsigned char* blr, unsigned inMsgLength, const unsigned char* inMsg, unsigned outMsgLength, unsigned char* outMsg) +{ + self->vtable->transactRequest(self, status, transaction, blrLength, blr, inMsgLength, inMsg, outMsgLength, outMsg); +} + +CLOOP_EXTERN_C struct IBlob* IAttachment_createBlob(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned bpbLength, const unsigned char* bpb) +{ + return self->vtable->createBlob(self, status, transaction, id, bpbLength, bpb); +} + +CLOOP_EXTERN_C struct IBlob* IAttachment_openBlob(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned bpbLength, const unsigned char* bpb) +{ + return self->vtable->openBlob(self, status, transaction, id, bpbLength, bpb); +} + +CLOOP_EXTERN_C int IAttachment_getSlice(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned sdlLength, const unsigned char* sdl, unsigned paramLength, const unsigned char* param, int sliceLength, unsigned char* slice) +{ + return self->vtable->getSlice(self, status, transaction, id, sdlLength, sdl, paramLength, param, sliceLength, slice); +} + +CLOOP_EXTERN_C void IAttachment_putSlice(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned sdlLength, const unsigned char* sdl, unsigned paramLength, const unsigned char* param, int sliceLength, unsigned char* slice) +{ + self->vtable->putSlice(self, status, transaction, id, sdlLength, sdl, paramLength, param, sliceLength, slice); +} + +CLOOP_EXTERN_C void IAttachment_executeDyn(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned length, const unsigned char* dyn) +{ + self->vtable->executeDyn(self, status, transaction, length, dyn); +} + +CLOOP_EXTERN_C struct IStatement* IAttachment_prepare(struct IAttachment* self, struct IStatus* status, struct ITransaction* tra, unsigned stmtLength, const char* sqlStmt, unsigned dialect, unsigned flags) +{ + return self->vtable->prepare(self, status, tra, stmtLength, sqlStmt, dialect, flags); +} + +CLOOP_EXTERN_C struct ITransaction* IAttachment_execute(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, void* outBuffer) +{ + return self->vtable->execute(self, status, transaction, stmtLength, sqlStmt, dialect, inMetadata, inBuffer, outMetadata, outBuffer); +} + +CLOOP_EXTERN_C struct IResultSet* IAttachment_openCursor(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, const char* cursorName, unsigned cursorFlags) +{ + return self->vtable->openCursor(self, status, transaction, stmtLength, sqlStmt, dialect, inMetadata, inBuffer, outMetadata, cursorName, cursorFlags); +} + +CLOOP_EXTERN_C struct IEvents* IAttachment_queEvents(struct IAttachment* self, struct IStatus* status, struct IEventCallback* callback, unsigned length, const unsigned char* events) +{ + return self->vtable->queEvents(self, status, callback, length, events); +} + +CLOOP_EXTERN_C void IAttachment_cancelOperation(struct IAttachment* self, struct IStatus* status, int option) +{ + self->vtable->cancelOperation(self, status, option); +} + +CLOOP_EXTERN_C void IAttachment_ping(struct IAttachment* self, struct IStatus* status) +{ + self->vtable->ping(self, status); +} + +CLOOP_EXTERN_C void IAttachment_deprecatedDetach(struct IAttachment* self, struct IStatus* status) +{ + self->vtable->deprecatedDetach(self, status); +} + +CLOOP_EXTERN_C void IAttachment_deprecatedDropDatabase(struct IAttachment* self, struct IStatus* status) +{ + self->vtable->deprecatedDropDatabase(self, status); +} + +CLOOP_EXTERN_C unsigned IAttachment_getIdleTimeout(struct IAttachment* self, struct IStatus* status) +{ + return self->vtable->getIdleTimeout(self, status); +} + +CLOOP_EXTERN_C void IAttachment_setIdleTimeout(struct IAttachment* self, struct IStatus* status, unsigned timeOut) +{ + self->vtable->setIdleTimeout(self, status, timeOut); +} + +CLOOP_EXTERN_C unsigned IAttachment_getStatementTimeout(struct IAttachment* self, struct IStatus* status) +{ + return self->vtable->getStatementTimeout(self, status); +} + +CLOOP_EXTERN_C void IAttachment_setStatementTimeout(struct IAttachment* self, struct IStatus* status, unsigned timeOut) +{ + self->vtable->setStatementTimeout(self, status, timeOut); +} + +CLOOP_EXTERN_C struct IBatch* IAttachment_createBatch(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, unsigned parLength, const unsigned char* par) +{ + return self->vtable->createBatch(self, status, transaction, stmtLength, sqlStmt, dialect, inMetadata, parLength, par); +} + +CLOOP_EXTERN_C struct IReplicator* IAttachment_createReplicator(struct IAttachment* self, struct IStatus* status) +{ + return self->vtable->createReplicator(self, status); +} + +CLOOP_EXTERN_C void IAttachment_detach(struct IAttachment* self, struct IStatus* status) +{ + self->vtable->detach(self, status); +} + +CLOOP_EXTERN_C void IAttachment_dropDatabase(struct IAttachment* self, struct IStatus* status) +{ + self->vtable->dropDatabase(self, status); +} + +CLOOP_EXTERN_C void IService_addRef(struct IService* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IService_release(struct IService* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IService_deprecatedDetach(struct IService* self, struct IStatus* status) +{ + self->vtable->deprecatedDetach(self, status); +} + +CLOOP_EXTERN_C void IService_query(struct IService* self, struct IStatus* status, unsigned sendLength, const unsigned char* sendItems, unsigned receiveLength, const unsigned char* receiveItems, unsigned bufferLength, unsigned char* buffer) +{ + self->vtable->query(self, status, sendLength, sendItems, receiveLength, receiveItems, bufferLength, buffer); +} + +CLOOP_EXTERN_C void IService_start(struct IService* self, struct IStatus* status, unsigned spbLength, const unsigned char* spb) +{ + self->vtable->start(self, status, spbLength, spb); +} + +CLOOP_EXTERN_C void IService_detach(struct IService* self, struct IStatus* status) +{ + self->vtable->detach(self, status); +} + +CLOOP_EXTERN_C void IService_cancel(struct IService* self, struct IStatus* status) +{ + self->vtable->cancel(self, status); +} + +CLOOP_EXTERN_C void IProvider_addRef(struct IProvider* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IProvider_release(struct IProvider* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IProvider_setOwner(struct IProvider* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IProvider_getOwner(struct IProvider* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C struct IAttachment* IProvider_attachDatabase(struct IProvider* self, struct IStatus* status, const char* fileName, unsigned dpbLength, const unsigned char* dpb) +{ + return self->vtable->attachDatabase(self, status, fileName, dpbLength, dpb); +} + +CLOOP_EXTERN_C struct IAttachment* IProvider_createDatabase(struct IProvider* self, struct IStatus* status, const char* fileName, unsigned dpbLength, const unsigned char* dpb) +{ + return self->vtable->createDatabase(self, status, fileName, dpbLength, dpb); +} + +CLOOP_EXTERN_C struct IService* IProvider_attachServiceManager(struct IProvider* self, struct IStatus* status, const char* service, unsigned spbLength, const unsigned char* spb) +{ + return self->vtable->attachServiceManager(self, status, service, spbLength, spb); +} + +CLOOP_EXTERN_C void IProvider_shutdown(struct IProvider* self, struct IStatus* status, unsigned timeout, const int reason) +{ + self->vtable->shutdown(self, status, timeout, reason); +} + +CLOOP_EXTERN_C void IProvider_setDbCryptCallback(struct IProvider* self, struct IStatus* status, struct ICryptKeyCallback* cryptCallback) +{ + self->vtable->setDbCryptCallback(self, status, cryptCallback); +} + +CLOOP_EXTERN_C void IDtcStart_dispose(struct IDtcStart* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IDtcStart_addAttachment(struct IDtcStart* self, struct IStatus* status, struct IAttachment* att) +{ + self->vtable->addAttachment(self, status, att); +} + +CLOOP_EXTERN_C void IDtcStart_addWithTpb(struct IDtcStart* self, struct IStatus* status, struct IAttachment* att, unsigned length, const unsigned char* tpb) +{ + self->vtable->addWithTpb(self, status, att, length, tpb); +} + +CLOOP_EXTERN_C struct ITransaction* IDtcStart_start(struct IDtcStart* self, struct IStatus* status) +{ + return self->vtable->start(self, status); +} + +CLOOP_EXTERN_C struct ITransaction* IDtc_join(struct IDtc* self, struct IStatus* status, struct ITransaction* one, struct ITransaction* two) +{ + return self->vtable->join(self, status, one, two); +} + +CLOOP_EXTERN_C struct IDtcStart* IDtc_startBuilder(struct IDtc* self, struct IStatus* status) +{ + return self->vtable->startBuilder(self, status); +} + +CLOOP_EXTERN_C void IAuth_addRef(struct IAuth* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IAuth_release(struct IAuth* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IAuth_setOwner(struct IAuth* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IAuth_getOwner(struct IAuth* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C void IWriter_reset(struct IWriter* self) +{ + self->vtable->reset(self); +} + +CLOOP_EXTERN_C void IWriter_add(struct IWriter* self, struct IStatus* status, const char* name) +{ + self->vtable->add(self, status, name); +} + +CLOOP_EXTERN_C void IWriter_setType(struct IWriter* self, struct IStatus* status, const char* value) +{ + self->vtable->setType(self, status, value); +} + +CLOOP_EXTERN_C void IWriter_setDb(struct IWriter* self, struct IStatus* status, const char* value) +{ + self->vtable->setDb(self, status, value); +} + +CLOOP_EXTERN_C const char* IServerBlock_getLogin(struct IServerBlock* self) +{ + return self->vtable->getLogin(self); +} + +CLOOP_EXTERN_C const unsigned char* IServerBlock_getData(struct IServerBlock* self, unsigned* length) +{ + return self->vtable->getData(self, length); +} + +CLOOP_EXTERN_C void IServerBlock_putData(struct IServerBlock* self, struct IStatus* status, unsigned length, const void* data) +{ + self->vtable->putData(self, status, length, data); +} + +CLOOP_EXTERN_C struct ICryptKey* IServerBlock_newKey(struct IServerBlock* self, struct IStatus* status) +{ + return self->vtable->newKey(self, status); +} + +CLOOP_EXTERN_C void IClientBlock_addRef(struct IClientBlock* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IClientBlock_release(struct IClientBlock* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C const char* IClientBlock_getLogin(struct IClientBlock* self) +{ + return self->vtable->getLogin(self); +} + +CLOOP_EXTERN_C const char* IClientBlock_getPassword(struct IClientBlock* self) +{ + return self->vtable->getPassword(self); +} + +CLOOP_EXTERN_C const unsigned char* IClientBlock_getData(struct IClientBlock* self, unsigned* length) +{ + return self->vtable->getData(self, length); +} + +CLOOP_EXTERN_C void IClientBlock_putData(struct IClientBlock* self, struct IStatus* status, unsigned length, const void* data) +{ + self->vtable->putData(self, status, length, data); +} + +CLOOP_EXTERN_C struct ICryptKey* IClientBlock_newKey(struct IClientBlock* self, struct IStatus* status) +{ + return self->vtable->newKey(self, status); +} + +CLOOP_EXTERN_C struct IAuthBlock* IClientBlock_getAuthBlock(struct IClientBlock* self, struct IStatus* status) +{ + return self->vtable->getAuthBlock(self, status); +} + +CLOOP_EXTERN_C void IServer_addRef(struct IServer* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IServer_release(struct IServer* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IServer_setOwner(struct IServer* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IServer_getOwner(struct IServer* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C int IServer_authenticate(struct IServer* self, struct IStatus* status, struct IServerBlock* sBlock, struct IWriter* writerInterface) +{ + return self->vtable->authenticate(self, status, sBlock, writerInterface); +} + +CLOOP_EXTERN_C void IServer_setDbCryptCallback(struct IServer* self, struct IStatus* status, struct ICryptKeyCallback* cryptCallback) +{ + self->vtable->setDbCryptCallback(self, status, cryptCallback); +} + +CLOOP_EXTERN_C void IClient_addRef(struct IClient* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IClient_release(struct IClient* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IClient_setOwner(struct IClient* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IClient_getOwner(struct IClient* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C int IClient_authenticate(struct IClient* self, struct IStatus* status, struct IClientBlock* cBlock) +{ + return self->vtable->authenticate(self, status, cBlock); +} + +CLOOP_EXTERN_C int IUserField_entered(struct IUserField* self) +{ + return self->vtable->entered(self); +} + +CLOOP_EXTERN_C int IUserField_specified(struct IUserField* self) +{ + return self->vtable->specified(self); +} + +CLOOP_EXTERN_C void IUserField_setEntered(struct IUserField* self, struct IStatus* status, int newValue) +{ + self->vtable->setEntered(self, status, newValue); +} + +CLOOP_EXTERN_C int ICharUserField_entered(struct ICharUserField* self) +{ + return self->vtable->entered(self); +} + +CLOOP_EXTERN_C int ICharUserField_specified(struct ICharUserField* self) +{ + return self->vtable->specified(self); +} + +CLOOP_EXTERN_C void ICharUserField_setEntered(struct ICharUserField* self, struct IStatus* status, int newValue) +{ + self->vtable->setEntered(self, status, newValue); +} + +CLOOP_EXTERN_C const char* ICharUserField_get(struct ICharUserField* self) +{ + return self->vtable->get(self); +} + +CLOOP_EXTERN_C void ICharUserField_set(struct ICharUserField* self, struct IStatus* status, const char* newValue) +{ + self->vtable->set(self, status, newValue); +} + +CLOOP_EXTERN_C int IIntUserField_entered(struct IIntUserField* self) +{ + return self->vtable->entered(self); +} + +CLOOP_EXTERN_C int IIntUserField_specified(struct IIntUserField* self) +{ + return self->vtable->specified(self); +} + +CLOOP_EXTERN_C void IIntUserField_setEntered(struct IIntUserField* self, struct IStatus* status, int newValue) +{ + self->vtable->setEntered(self, status, newValue); +} + +CLOOP_EXTERN_C int IIntUserField_get(struct IIntUserField* self) +{ + return self->vtable->get(self); +} + +CLOOP_EXTERN_C void IIntUserField_set(struct IIntUserField* self, struct IStatus* status, int newValue) +{ + self->vtable->set(self, status, newValue); +} + +CLOOP_EXTERN_C unsigned IUser_operation(struct IUser* self) +{ + return self->vtable->operation(self); +} + +CLOOP_EXTERN_C struct ICharUserField* IUser_userName(struct IUser* self) +{ + return self->vtable->userName(self); +} + +CLOOP_EXTERN_C struct ICharUserField* IUser_password(struct IUser* self) +{ + return self->vtable->password(self); +} + +CLOOP_EXTERN_C struct ICharUserField* IUser_firstName(struct IUser* self) +{ + return self->vtable->firstName(self); +} + +CLOOP_EXTERN_C struct ICharUserField* IUser_lastName(struct IUser* self) +{ + return self->vtable->lastName(self); +} + +CLOOP_EXTERN_C struct ICharUserField* IUser_middleName(struct IUser* self) +{ + return self->vtable->middleName(self); +} + +CLOOP_EXTERN_C struct ICharUserField* IUser_comment(struct IUser* self) +{ + return self->vtable->comment(self); +} + +CLOOP_EXTERN_C struct ICharUserField* IUser_attributes(struct IUser* self) +{ + return self->vtable->attributes(self); +} + +CLOOP_EXTERN_C struct IIntUserField* IUser_active(struct IUser* self) +{ + return self->vtable->active(self); +} + +CLOOP_EXTERN_C struct IIntUserField* IUser_admin(struct IUser* self) +{ + return self->vtable->admin(self); +} + +CLOOP_EXTERN_C void IUser_clear(struct IUser* self, struct IStatus* status) +{ + self->vtable->clear(self, status); +} + +CLOOP_EXTERN_C void IListUsers_list(struct IListUsers* self, struct IStatus* status, struct IUser* user) +{ + self->vtable->list(self, status, user); +} + +CLOOP_EXTERN_C const char* ILogonInfo_name(struct ILogonInfo* self) +{ + return self->vtable->name(self); +} + +CLOOP_EXTERN_C const char* ILogonInfo_role(struct ILogonInfo* self) +{ + return self->vtable->role(self); +} + +CLOOP_EXTERN_C const char* ILogonInfo_networkProtocol(struct ILogonInfo* self) +{ + return self->vtable->networkProtocol(self); +} + +CLOOP_EXTERN_C const char* ILogonInfo_remoteAddress(struct ILogonInfo* self) +{ + return self->vtable->remoteAddress(self); +} + +CLOOP_EXTERN_C const unsigned char* ILogonInfo_authBlock(struct ILogonInfo* self, unsigned* length) +{ + return self->vtable->authBlock(self, length); +} + +CLOOP_EXTERN_C struct IAttachment* ILogonInfo_attachment(struct ILogonInfo* self, struct IStatus* status) +{ + return self->vtable->attachment(self, status); +} + +CLOOP_EXTERN_C struct ITransaction* ILogonInfo_transaction(struct ILogonInfo* self, struct IStatus* status) +{ + return self->vtable->transaction(self, status); +} + +CLOOP_EXTERN_C void IManagement_addRef(struct IManagement* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IManagement_release(struct IManagement* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IManagement_setOwner(struct IManagement* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IManagement_getOwner(struct IManagement* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C void IManagement_start(struct IManagement* self, struct IStatus* status, struct ILogonInfo* logonInfo) +{ + self->vtable->start(self, status, logonInfo); +} + +CLOOP_EXTERN_C int IManagement_execute(struct IManagement* self, struct IStatus* status, struct IUser* user, struct IListUsers* callback) +{ + return self->vtable->execute(self, status, user, callback); +} + +CLOOP_EXTERN_C void IManagement_commit(struct IManagement* self, struct IStatus* status) +{ + self->vtable->commit(self, status); +} + +CLOOP_EXTERN_C void IManagement_rollback(struct IManagement* self, struct IStatus* status) +{ + self->vtable->rollback(self, status); +} + +CLOOP_EXTERN_C const char* IAuthBlock_getType(struct IAuthBlock* self) +{ + return self->vtable->getType(self); +} + +CLOOP_EXTERN_C const char* IAuthBlock_getName(struct IAuthBlock* self) +{ + return self->vtable->getName(self); +} + +CLOOP_EXTERN_C const char* IAuthBlock_getPlugin(struct IAuthBlock* self) +{ + return self->vtable->getPlugin(self); +} + +CLOOP_EXTERN_C const char* IAuthBlock_getSecurityDb(struct IAuthBlock* self) +{ + return self->vtable->getSecurityDb(self); +} + +CLOOP_EXTERN_C const char* IAuthBlock_getOriginalPlugin(struct IAuthBlock* self) +{ + return self->vtable->getOriginalPlugin(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN IAuthBlock_next(struct IAuthBlock* self, struct IStatus* status) +{ + return self->vtable->next(self, status); +} + +CLOOP_EXTERN_C FB_BOOLEAN IAuthBlock_first(struct IAuthBlock* self, struct IStatus* status) +{ + return self->vtable->first(self, status); +} + +CLOOP_EXTERN_C void IWireCryptPlugin_addRef(struct IWireCryptPlugin* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IWireCryptPlugin_release(struct IWireCryptPlugin* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IWireCryptPlugin_setOwner(struct IWireCryptPlugin* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IWireCryptPlugin_getOwner(struct IWireCryptPlugin* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C const char* IWireCryptPlugin_getKnownTypes(struct IWireCryptPlugin* self, struct IStatus* status) +{ + return self->vtable->getKnownTypes(self, status); +} + +CLOOP_EXTERN_C void IWireCryptPlugin_setKey(struct IWireCryptPlugin* self, struct IStatus* status, struct ICryptKey* key) +{ + self->vtable->setKey(self, status, key); +} + +CLOOP_EXTERN_C void IWireCryptPlugin_encrypt(struct IWireCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to) +{ + self->vtable->encrypt(self, status, length, from, to); +} + +CLOOP_EXTERN_C void IWireCryptPlugin_decrypt(struct IWireCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to) +{ + self->vtable->decrypt(self, status, length, from, to); +} + +CLOOP_EXTERN_C const unsigned char* IWireCryptPlugin_getSpecificData(struct IWireCryptPlugin* self, struct IStatus* status, const char* keyType, unsigned* length) +{ + return self->vtable->getSpecificData(self, status, keyType, length); +} + +CLOOP_EXTERN_C void IWireCryptPlugin_setSpecificData(struct IWireCryptPlugin* self, struct IStatus* status, const char* keyType, unsigned length, const unsigned char* data) +{ + self->vtable->setSpecificData(self, status, keyType, length, data); +} + +CLOOP_EXTERN_C unsigned ICryptKeyCallback_callback(struct ICryptKeyCallback* self, unsigned dataLength, const void* data, unsigned bufferLength, void* buffer) +{ + return self->vtable->callback(self, dataLength, data, bufferLength, buffer); +} + +CLOOP_EXTERN_C unsigned ICryptKeyCallback_afterAttach(struct ICryptKeyCallback* self, struct IStatus* status, const char* dbName, const struct IStatus* attStatus) +{ + return self->vtable->afterAttach(self, status, dbName, attStatus); +} + +CLOOP_EXTERN_C void ICryptKeyCallback_dispose(struct ICryptKeyCallback* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IKeyHolderPlugin_addRef(struct IKeyHolderPlugin* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IKeyHolderPlugin_release(struct IKeyHolderPlugin* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IKeyHolderPlugin_setOwner(struct IKeyHolderPlugin* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IKeyHolderPlugin_getOwner(struct IKeyHolderPlugin* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C int IKeyHolderPlugin_keyCallback(struct IKeyHolderPlugin* self, struct IStatus* status, struct ICryptKeyCallback* callback) +{ + return self->vtable->keyCallback(self, status, callback); +} + +CLOOP_EXTERN_C struct ICryptKeyCallback* IKeyHolderPlugin_keyHandle(struct IKeyHolderPlugin* self, struct IStatus* status, const char* keyName) +{ + return self->vtable->keyHandle(self, status, keyName); +} + +CLOOP_EXTERN_C FB_BOOLEAN IKeyHolderPlugin_useOnlyOwnKeys(struct IKeyHolderPlugin* self, struct IStatus* status) +{ + return self->vtable->useOnlyOwnKeys(self, status); +} + +CLOOP_EXTERN_C struct ICryptKeyCallback* IKeyHolderPlugin_chainHandle(struct IKeyHolderPlugin* self, struct IStatus* status) +{ + return self->vtable->chainHandle(self, status); +} + +CLOOP_EXTERN_C void IDbCryptInfo_addRef(struct IDbCryptInfo* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IDbCryptInfo_release(struct IDbCryptInfo* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C const char* IDbCryptInfo_getDatabaseFullPath(struct IDbCryptInfo* self, struct IStatus* status) +{ + return self->vtable->getDatabaseFullPath(self, status); +} + +CLOOP_EXTERN_C void IDbCryptPlugin_addRef(struct IDbCryptPlugin* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IDbCryptPlugin_release(struct IDbCryptPlugin* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IDbCryptPlugin_setOwner(struct IDbCryptPlugin* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IDbCryptPlugin_getOwner(struct IDbCryptPlugin* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C void IDbCryptPlugin_setKey(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, struct IKeyHolderPlugin** sources, const char* keyName) +{ + self->vtable->setKey(self, status, length, sources, keyName); +} + +CLOOP_EXTERN_C void IDbCryptPlugin_encrypt(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to) +{ + self->vtable->encrypt(self, status, length, from, to); +} + +CLOOP_EXTERN_C void IDbCryptPlugin_decrypt(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to) +{ + self->vtable->decrypt(self, status, length, from, to); +} + +CLOOP_EXTERN_C void IDbCryptPlugin_setInfo(struct IDbCryptPlugin* self, struct IStatus* status, struct IDbCryptInfo* info) +{ + self->vtable->setInfo(self, status, info); +} + +CLOOP_EXTERN_C struct IMaster* IExternalContext_getMaster(struct IExternalContext* self) +{ + return self->vtable->getMaster(self); +} + +CLOOP_EXTERN_C struct IExternalEngine* IExternalContext_getEngine(struct IExternalContext* self, struct IStatus* status) +{ + return self->vtable->getEngine(self, status); +} + +CLOOP_EXTERN_C struct IAttachment* IExternalContext_getAttachment(struct IExternalContext* self, struct IStatus* status) +{ + return self->vtable->getAttachment(self, status); +} + +CLOOP_EXTERN_C struct ITransaction* IExternalContext_getTransaction(struct IExternalContext* self, struct IStatus* status) +{ + return self->vtable->getTransaction(self, status); +} + +CLOOP_EXTERN_C const char* IExternalContext_getUserName(struct IExternalContext* self) +{ + return self->vtable->getUserName(self); +} + +CLOOP_EXTERN_C const char* IExternalContext_getDatabaseName(struct IExternalContext* self) +{ + return self->vtable->getDatabaseName(self); +} + +CLOOP_EXTERN_C const char* IExternalContext_getClientCharSet(struct IExternalContext* self) +{ + return self->vtable->getClientCharSet(self); +} + +CLOOP_EXTERN_C int IExternalContext_obtainInfoCode(struct IExternalContext* self) +{ + return self->vtable->obtainInfoCode(self); +} + +CLOOP_EXTERN_C void* IExternalContext_getInfo(struct IExternalContext* self, int code) +{ + return self->vtable->getInfo(self, code); +} + +CLOOP_EXTERN_C void* IExternalContext_setInfo(struct IExternalContext* self, int code, void* value) +{ + return self->vtable->setInfo(self, code, value); +} + +CLOOP_EXTERN_C void IExternalResultSet_dispose(struct IExternalResultSet* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN IExternalResultSet_fetch(struct IExternalResultSet* self, struct IStatus* status) +{ + return self->vtable->fetch(self, status); +} + +CLOOP_EXTERN_C void IExternalFunction_dispose(struct IExternalFunction* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IExternalFunction_getCharSet(struct IExternalFunction* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize) +{ + self->vtable->getCharSet(self, status, context, name, nameSize); +} + +CLOOP_EXTERN_C void IExternalFunction_execute(struct IExternalFunction* self, struct IStatus* status, struct IExternalContext* context, void* inMsg, void* outMsg) +{ + self->vtable->execute(self, status, context, inMsg, outMsg); +} + +CLOOP_EXTERN_C void IExternalProcedure_dispose(struct IExternalProcedure* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IExternalProcedure_getCharSet(struct IExternalProcedure* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize) +{ + self->vtable->getCharSet(self, status, context, name, nameSize); +} + +CLOOP_EXTERN_C struct IExternalResultSet* IExternalProcedure_open(struct IExternalProcedure* self, struct IStatus* status, struct IExternalContext* context, void* inMsg, void* outMsg) +{ + return self->vtable->open(self, status, context, inMsg, outMsg); +} + +CLOOP_EXTERN_C void IExternalTrigger_dispose(struct IExternalTrigger* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IExternalTrigger_getCharSet(struct IExternalTrigger* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize) +{ + self->vtable->getCharSet(self, status, context, name, nameSize); +} + +CLOOP_EXTERN_C void IExternalTrigger_execute(struct IExternalTrigger* self, struct IStatus* status, struct IExternalContext* context, unsigned action, void* oldMsg, void* newMsg) +{ + self->vtable->execute(self, status, context, action, oldMsg, newMsg); +} + +CLOOP_EXTERN_C const char* IRoutineMetadata_getPackage(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getPackage(self, status); +} + +CLOOP_EXTERN_C const char* IRoutineMetadata_getName(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getName(self, status); +} + +CLOOP_EXTERN_C const char* IRoutineMetadata_getEntryPoint(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getEntryPoint(self, status); +} + +CLOOP_EXTERN_C const char* IRoutineMetadata_getBody(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getBody(self, status); +} + +CLOOP_EXTERN_C struct IMessageMetadata* IRoutineMetadata_getInputMetadata(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getInputMetadata(self, status); +} + +CLOOP_EXTERN_C struct IMessageMetadata* IRoutineMetadata_getOutputMetadata(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getOutputMetadata(self, status); +} + +CLOOP_EXTERN_C struct IMessageMetadata* IRoutineMetadata_getTriggerMetadata(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getTriggerMetadata(self, status); +} + +CLOOP_EXTERN_C const char* IRoutineMetadata_getTriggerTable(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getTriggerTable(self, status); +} + +CLOOP_EXTERN_C unsigned IRoutineMetadata_getTriggerType(const struct IRoutineMetadata* self, struct IStatus* status) +{ + return self->vtable->getTriggerType(self, status); +} + +CLOOP_EXTERN_C void IExternalEngine_addRef(struct IExternalEngine* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IExternalEngine_release(struct IExternalEngine* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IExternalEngine_setOwner(struct IExternalEngine* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IExternalEngine_getOwner(struct IExternalEngine* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C void IExternalEngine_open(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, char* charSet, unsigned charSetSize) +{ + self->vtable->open(self, status, context, charSet, charSetSize); +} + +CLOOP_EXTERN_C void IExternalEngine_openAttachment(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context) +{ + self->vtable->openAttachment(self, status, context); +} + +CLOOP_EXTERN_C void IExternalEngine_closeAttachment(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context) +{ + self->vtable->closeAttachment(self, status, context); +} + +CLOOP_EXTERN_C struct IExternalFunction* IExternalEngine_makeFunction(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder) +{ + return self->vtable->makeFunction(self, status, context, metadata, inBuilder, outBuilder); +} + +CLOOP_EXTERN_C struct IExternalProcedure* IExternalEngine_makeProcedure(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder) +{ + return self->vtable->makeProcedure(self, status, context, metadata, inBuilder, outBuilder); +} + +CLOOP_EXTERN_C struct IExternalTrigger* IExternalEngine_makeTrigger(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* fieldsBuilder) +{ + return self->vtable->makeTrigger(self, status, context, metadata, fieldsBuilder); +} + +CLOOP_EXTERN_C void ITimer_addRef(struct ITimer* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int ITimer_release(struct ITimer* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void ITimer_handler(struct ITimer* self) +{ + self->vtable->handler(self); +} + +CLOOP_EXTERN_C void ITimerControl_start(struct ITimerControl* self, struct IStatus* status, struct ITimer* timer, ISC_UINT64 microSeconds) +{ + self->vtable->start(self, status, timer, microSeconds); +} + +CLOOP_EXTERN_C void ITimerControl_stop(struct ITimerControl* self, struct IStatus* status, struct ITimer* timer) +{ + self->vtable->stop(self, status, timer); +} + +CLOOP_EXTERN_C void IVersionCallback_callback(struct IVersionCallback* self, struct IStatus* status, const char* text) +{ + self->vtable->callback(self, status, text); +} + +CLOOP_EXTERN_C void IUtil_getFbVersion(struct IUtil* self, struct IStatus* status, struct IAttachment* att, struct IVersionCallback* callback) +{ + self->vtable->getFbVersion(self, status, att, callback); +} + +CLOOP_EXTERN_C void IUtil_loadBlob(struct IUtil* self, struct IStatus* status, ISC_QUAD* blobId, struct IAttachment* att, struct ITransaction* tra, const char* file, FB_BOOLEAN txt) +{ + self->vtable->loadBlob(self, status, blobId, att, tra, file, txt); +} + +CLOOP_EXTERN_C void IUtil_dumpBlob(struct IUtil* self, struct IStatus* status, ISC_QUAD* blobId, struct IAttachment* att, struct ITransaction* tra, const char* file, FB_BOOLEAN txt) +{ + self->vtable->dumpBlob(self, status, blobId, att, tra, file, txt); +} + +CLOOP_EXTERN_C void IUtil_getPerfCounters(struct IUtil* self, struct IStatus* status, struct IAttachment* att, const char* countersSet, ISC_INT64* counters) +{ + self->vtable->getPerfCounters(self, status, att, countersSet, counters); +} + +CLOOP_EXTERN_C struct IAttachment* IUtil_executeCreateDatabase(struct IUtil* self, struct IStatus* status, unsigned stmtLength, const char* creatDBstatement, unsigned dialect, FB_BOOLEAN* stmtIsCreateDb) +{ + return self->vtable->executeCreateDatabase(self, status, stmtLength, creatDBstatement, dialect, stmtIsCreateDb); +} + +CLOOP_EXTERN_C void IUtil_decodeDate(struct IUtil* self, ISC_DATE date, unsigned* year, unsigned* month, unsigned* day) +{ + self->vtable->decodeDate(self, date, year, month, day); +} + +CLOOP_EXTERN_C void IUtil_decodeTime(struct IUtil* self, ISC_TIME time, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions) +{ + self->vtable->decodeTime(self, time, hours, minutes, seconds, fractions); +} + +CLOOP_EXTERN_C ISC_DATE IUtil_encodeDate(struct IUtil* self, unsigned year, unsigned month, unsigned day) +{ + return self->vtable->encodeDate(self, year, month, day); +} + +CLOOP_EXTERN_C ISC_TIME IUtil_encodeTime(struct IUtil* self, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions) +{ + return self->vtable->encodeTime(self, hours, minutes, seconds, fractions); +} + +CLOOP_EXTERN_C unsigned IUtil_formatStatus(struct IUtil* self, char* buffer, unsigned bufferSize, struct IStatus* status) +{ + return self->vtable->formatStatus(self, buffer, bufferSize, status); +} + +CLOOP_EXTERN_C unsigned IUtil_getClientVersion(struct IUtil* self) +{ + return self->vtable->getClientVersion(self); +} + +CLOOP_EXTERN_C struct IXpbBuilder* IUtil_getXpbBuilder(struct IUtil* self, struct IStatus* status, unsigned kind, const unsigned char* buf, unsigned len) +{ + return self->vtable->getXpbBuilder(self, status, kind, buf, len); +} + +CLOOP_EXTERN_C unsigned IUtil_setOffsets(struct IUtil* self, struct IStatus* status, struct IMessageMetadata* metadata, struct IOffsetsCallback* callback) +{ + return self->vtable->setOffsets(self, status, metadata, callback); +} + +CLOOP_EXTERN_C struct IDecFloat16* IUtil_getDecFloat16(struct IUtil* self, struct IStatus* status) +{ + return self->vtable->getDecFloat16(self, status); +} + +CLOOP_EXTERN_C struct IDecFloat34* IUtil_getDecFloat34(struct IUtil* self, struct IStatus* status) +{ + return self->vtable->getDecFloat34(self, status); +} + +CLOOP_EXTERN_C void IUtil_decodeTimeTz(struct IUtil* self, struct IStatus* status, const ISC_TIME_TZ* timeTz, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer) +{ + self->vtable->decodeTimeTz(self, status, timeTz, hours, minutes, seconds, fractions, timeZoneBufferLength, timeZoneBuffer); +} + +CLOOP_EXTERN_C void IUtil_decodeTimeStampTz(struct IUtil* self, struct IStatus* status, const ISC_TIMESTAMP_TZ* timeStampTz, unsigned* year, unsigned* month, unsigned* day, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer) +{ + self->vtable->decodeTimeStampTz(self, status, timeStampTz, year, month, day, hours, minutes, seconds, fractions, timeZoneBufferLength, timeZoneBuffer); +} + +CLOOP_EXTERN_C void IUtil_encodeTimeTz(struct IUtil* self, struct IStatus* status, ISC_TIME_TZ* timeTz, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions, const char* timeZone) +{ + self->vtable->encodeTimeTz(self, status, timeTz, hours, minutes, seconds, fractions, timeZone); +} + +CLOOP_EXTERN_C void IUtil_encodeTimeStampTz(struct IUtil* self, struct IStatus* status, ISC_TIMESTAMP_TZ* timeStampTz, unsigned year, unsigned month, unsigned day, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions, const char* timeZone) +{ + self->vtable->encodeTimeStampTz(self, status, timeStampTz, year, month, day, hours, minutes, seconds, fractions, timeZone); +} + +CLOOP_EXTERN_C struct IInt128* IUtil_getInt128(struct IUtil* self, struct IStatus* status) +{ + return self->vtable->getInt128(self, status); +} + +CLOOP_EXTERN_C void IUtil_decodeTimeTzEx(struct IUtil* self, struct IStatus* status, const ISC_TIME_TZ_EX* timeTz, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer) +{ + self->vtable->decodeTimeTzEx(self, status, timeTz, hours, minutes, seconds, fractions, timeZoneBufferLength, timeZoneBuffer); +} + +CLOOP_EXTERN_C void IUtil_decodeTimeStampTzEx(struct IUtil* self, struct IStatus* status, const ISC_TIMESTAMP_TZ_EX* timeStampTz, unsigned* year, unsigned* month, unsigned* day, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer) +{ + self->vtable->decodeTimeStampTzEx(self, status, timeStampTz, year, month, day, hours, minutes, seconds, fractions, timeZoneBufferLength, timeZoneBuffer); +} + +CLOOP_EXTERN_C void IOffsetsCallback_setOffset(struct IOffsetsCallback* self, struct IStatus* status, unsigned index, unsigned offset, unsigned nullOffset) +{ + self->vtable->setOffset(self, status, index, offset, nullOffset); +} + +CLOOP_EXTERN_C void IXpbBuilder_dispose(struct IXpbBuilder* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IXpbBuilder_clear(struct IXpbBuilder* self, struct IStatus* status) +{ + self->vtable->clear(self, status); +} + +CLOOP_EXTERN_C void IXpbBuilder_removeCurrent(struct IXpbBuilder* self, struct IStatus* status) +{ + self->vtable->removeCurrent(self, status); +} + +CLOOP_EXTERN_C void IXpbBuilder_insertInt(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, int value) +{ + self->vtable->insertInt(self, status, tag, value); +} + +CLOOP_EXTERN_C void IXpbBuilder_insertBigInt(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, ISC_INT64 value) +{ + self->vtable->insertBigInt(self, status, tag, value); +} + +CLOOP_EXTERN_C void IXpbBuilder_insertBytes(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, const void* bytes, unsigned length) +{ + self->vtable->insertBytes(self, status, tag, bytes, length); +} + +CLOOP_EXTERN_C void IXpbBuilder_insertString(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, const char* str) +{ + self->vtable->insertString(self, status, tag, str); +} + +CLOOP_EXTERN_C void IXpbBuilder_insertTag(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag) +{ + self->vtable->insertTag(self, status, tag); +} + +CLOOP_EXTERN_C FB_BOOLEAN IXpbBuilder_isEof(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->isEof(self, status); +} + +CLOOP_EXTERN_C void IXpbBuilder_moveNext(struct IXpbBuilder* self, struct IStatus* status) +{ + self->vtable->moveNext(self, status); +} + +CLOOP_EXTERN_C void IXpbBuilder_rewind(struct IXpbBuilder* self, struct IStatus* status) +{ + self->vtable->rewind(self, status); +} + +CLOOP_EXTERN_C FB_BOOLEAN IXpbBuilder_findFirst(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag) +{ + return self->vtable->findFirst(self, status, tag); +} + +CLOOP_EXTERN_C FB_BOOLEAN IXpbBuilder_findNext(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->findNext(self, status); +} + +CLOOP_EXTERN_C unsigned char IXpbBuilder_getTag(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->getTag(self, status); +} + +CLOOP_EXTERN_C unsigned IXpbBuilder_getLength(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->getLength(self, status); +} + +CLOOP_EXTERN_C int IXpbBuilder_getInt(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->getInt(self, status); +} + +CLOOP_EXTERN_C ISC_INT64 IXpbBuilder_getBigInt(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->getBigInt(self, status); +} + +CLOOP_EXTERN_C const char* IXpbBuilder_getString(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->getString(self, status); +} + +CLOOP_EXTERN_C const unsigned char* IXpbBuilder_getBytes(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->getBytes(self, status); +} + +CLOOP_EXTERN_C unsigned IXpbBuilder_getBufferLength(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->getBufferLength(self, status); +} + +CLOOP_EXTERN_C const unsigned char* IXpbBuilder_getBuffer(struct IXpbBuilder* self, struct IStatus* status) +{ + return self->vtable->getBuffer(self, status); +} + +CLOOP_EXTERN_C unsigned ITraceConnection_getKind(struct ITraceConnection* self) +{ + return self->vtable->getKind(self); +} + +CLOOP_EXTERN_C int ITraceConnection_getProcessID(struct ITraceConnection* self) +{ + return self->vtable->getProcessID(self); +} + +CLOOP_EXTERN_C const char* ITraceConnection_getUserName(struct ITraceConnection* self) +{ + return self->vtable->getUserName(self); +} + +CLOOP_EXTERN_C const char* ITraceConnection_getRoleName(struct ITraceConnection* self) +{ + return self->vtable->getRoleName(self); +} + +CLOOP_EXTERN_C const char* ITraceConnection_getCharSet(struct ITraceConnection* self) +{ + return self->vtable->getCharSet(self); +} + +CLOOP_EXTERN_C const char* ITraceConnection_getRemoteProtocol(struct ITraceConnection* self) +{ + return self->vtable->getRemoteProtocol(self); +} + +CLOOP_EXTERN_C const char* ITraceConnection_getRemoteAddress(struct ITraceConnection* self) +{ + return self->vtable->getRemoteAddress(self); +} + +CLOOP_EXTERN_C int ITraceConnection_getRemoteProcessID(struct ITraceConnection* self) +{ + return self->vtable->getRemoteProcessID(self); +} + +CLOOP_EXTERN_C const char* ITraceConnection_getRemoteProcessName(struct ITraceConnection* self) +{ + return self->vtable->getRemoteProcessName(self); +} + +CLOOP_EXTERN_C unsigned ITraceDatabaseConnection_getKind(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getKind(self); +} + +CLOOP_EXTERN_C int ITraceDatabaseConnection_getProcessID(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getProcessID(self); +} + +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getUserName(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getUserName(self); +} + +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getRoleName(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getRoleName(self); +} + +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getCharSet(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getCharSet(self); +} + +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getRemoteProtocol(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getRemoteProtocol(self); +} + +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getRemoteAddress(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getRemoteAddress(self); +} + +CLOOP_EXTERN_C int ITraceDatabaseConnection_getRemoteProcessID(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getRemoteProcessID(self); +} + +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getRemoteProcessName(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getRemoteProcessName(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceDatabaseConnection_getConnectionID(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getConnectionID(self); +} + +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getDatabaseName(struct ITraceDatabaseConnection* self) +{ + return self->vtable->getDatabaseName(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceTransaction_getTransactionID(struct ITraceTransaction* self) +{ + return self->vtable->getTransactionID(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITraceTransaction_getReadOnly(struct ITraceTransaction* self) +{ + return self->vtable->getReadOnly(self); +} + +CLOOP_EXTERN_C int ITraceTransaction_getWait(struct ITraceTransaction* self) +{ + return self->vtable->getWait(self); +} + +CLOOP_EXTERN_C unsigned ITraceTransaction_getIsolation(struct ITraceTransaction* self) +{ + return self->vtable->getIsolation(self); +} + +CLOOP_EXTERN_C struct PerformanceInfo* ITraceTransaction_getPerf(struct ITraceTransaction* self) +{ + return self->vtable->getPerf(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceTransaction_getInitialID(struct ITraceTransaction* self) +{ + return self->vtable->getInitialID(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceTransaction_getPreviousID(struct ITraceTransaction* self) +{ + return self->vtable->getPreviousID(self); +} + +CLOOP_EXTERN_C unsigned ITraceParams_getCount(struct ITraceParams* self) +{ + return self->vtable->getCount(self); +} + +CLOOP_EXTERN_C const struct dsc* ITraceParams_getParam(struct ITraceParams* self, unsigned idx) +{ + return self->vtable->getParam(self, idx); +} + +CLOOP_EXTERN_C const char* ITraceParams_getTextUTF8(struct ITraceParams* self, struct IStatus* status, unsigned idx) +{ + return self->vtable->getTextUTF8(self, status, idx); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceStatement_getStmtID(struct ITraceStatement* self) +{ + return self->vtable->getStmtID(self); +} + +CLOOP_EXTERN_C struct PerformanceInfo* ITraceStatement_getPerf(struct ITraceStatement* self) +{ + return self->vtable->getPerf(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceSQLStatement_getStmtID(struct ITraceSQLStatement* self) +{ + return self->vtable->getStmtID(self); +} + +CLOOP_EXTERN_C struct PerformanceInfo* ITraceSQLStatement_getPerf(struct ITraceSQLStatement* self) +{ + return self->vtable->getPerf(self); +} + +CLOOP_EXTERN_C const char* ITraceSQLStatement_getText(struct ITraceSQLStatement* self) +{ + return self->vtable->getText(self); +} + +CLOOP_EXTERN_C const char* ITraceSQLStatement_getPlan(struct ITraceSQLStatement* self) +{ + return self->vtable->getPlan(self); +} + +CLOOP_EXTERN_C struct ITraceParams* ITraceSQLStatement_getInputs(struct ITraceSQLStatement* self) +{ + return self->vtable->getInputs(self); +} + +CLOOP_EXTERN_C const char* ITraceSQLStatement_getTextUTF8(struct ITraceSQLStatement* self) +{ + return self->vtable->getTextUTF8(self); +} + +CLOOP_EXTERN_C const char* ITraceSQLStatement_getExplainedPlan(struct ITraceSQLStatement* self) +{ + return self->vtable->getExplainedPlan(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceBLRStatement_getStmtID(struct ITraceBLRStatement* self) +{ + return self->vtable->getStmtID(self); +} + +CLOOP_EXTERN_C struct PerformanceInfo* ITraceBLRStatement_getPerf(struct ITraceBLRStatement* self) +{ + return self->vtable->getPerf(self); +} + +CLOOP_EXTERN_C const unsigned char* ITraceBLRStatement_getData(struct ITraceBLRStatement* self) +{ + return self->vtable->getData(self); +} + +CLOOP_EXTERN_C unsigned ITraceBLRStatement_getDataLength(struct ITraceBLRStatement* self) +{ + return self->vtable->getDataLength(self); +} + +CLOOP_EXTERN_C const char* ITraceBLRStatement_getText(struct ITraceBLRStatement* self) +{ + return self->vtable->getText(self); +} + +CLOOP_EXTERN_C const unsigned char* ITraceDYNRequest_getData(struct ITraceDYNRequest* self) +{ + return self->vtable->getData(self); +} + +CLOOP_EXTERN_C unsigned ITraceDYNRequest_getDataLength(struct ITraceDYNRequest* self) +{ + return self->vtable->getDataLength(self); +} + +CLOOP_EXTERN_C const char* ITraceDYNRequest_getText(struct ITraceDYNRequest* self) +{ + return self->vtable->getText(self); +} + +CLOOP_EXTERN_C const char* ITraceContextVariable_getNameSpace(struct ITraceContextVariable* self) +{ + return self->vtable->getNameSpace(self); +} + +CLOOP_EXTERN_C const char* ITraceContextVariable_getVarName(struct ITraceContextVariable* self) +{ + return self->vtable->getVarName(self); +} + +CLOOP_EXTERN_C const char* ITraceContextVariable_getVarValue(struct ITraceContextVariable* self) +{ + return self->vtable->getVarValue(self); +} + +CLOOP_EXTERN_C const char* ITraceProcedure_getProcName(struct ITraceProcedure* self) +{ + return self->vtable->getProcName(self); +} + +CLOOP_EXTERN_C struct ITraceParams* ITraceProcedure_getInputs(struct ITraceProcedure* self) +{ + return self->vtable->getInputs(self); +} + +CLOOP_EXTERN_C struct PerformanceInfo* ITraceProcedure_getPerf(struct ITraceProcedure* self) +{ + return self->vtable->getPerf(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceProcedure_getStmtID(struct ITraceProcedure* self) +{ + return self->vtable->getStmtID(self); +} + +CLOOP_EXTERN_C const char* ITraceProcedure_getPlan(struct ITraceProcedure* self) +{ + return self->vtable->getPlan(self); +} + +CLOOP_EXTERN_C const char* ITraceProcedure_getExplainedPlan(struct ITraceProcedure* self) +{ + return self->vtable->getExplainedPlan(self); +} + +CLOOP_EXTERN_C const char* ITraceFunction_getFuncName(struct ITraceFunction* self) +{ + return self->vtable->getFuncName(self); +} + +CLOOP_EXTERN_C struct ITraceParams* ITraceFunction_getInputs(struct ITraceFunction* self) +{ + return self->vtable->getInputs(self); +} + +CLOOP_EXTERN_C struct ITraceParams* ITraceFunction_getResult(struct ITraceFunction* self) +{ + return self->vtable->getResult(self); +} + +CLOOP_EXTERN_C struct PerformanceInfo* ITraceFunction_getPerf(struct ITraceFunction* self) +{ + return self->vtable->getPerf(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceFunction_getStmtID(struct ITraceFunction* self) +{ + return self->vtable->getStmtID(self); +} + +CLOOP_EXTERN_C const char* ITraceFunction_getPlan(struct ITraceFunction* self) +{ + return self->vtable->getPlan(self); +} + +CLOOP_EXTERN_C const char* ITraceFunction_getExplainedPlan(struct ITraceFunction* self) +{ + return self->vtable->getExplainedPlan(self); +} + +CLOOP_EXTERN_C const char* ITraceTrigger_getTriggerName(struct ITraceTrigger* self) +{ + return self->vtable->getTriggerName(self); +} + +CLOOP_EXTERN_C const char* ITraceTrigger_getRelationName(struct ITraceTrigger* self) +{ + return self->vtable->getRelationName(self); +} + +CLOOP_EXTERN_C int ITraceTrigger_getAction(struct ITraceTrigger* self) +{ + return self->vtable->getAction(self); +} + +CLOOP_EXTERN_C int ITraceTrigger_getWhich(struct ITraceTrigger* self) +{ + return self->vtable->getWhich(self); +} + +CLOOP_EXTERN_C struct PerformanceInfo* ITraceTrigger_getPerf(struct ITraceTrigger* self) +{ + return self->vtable->getPerf(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceTrigger_getStmtID(struct ITraceTrigger* self) +{ + return self->vtable->getStmtID(self); +} + +CLOOP_EXTERN_C const char* ITraceTrigger_getPlan(struct ITraceTrigger* self) +{ + return self->vtable->getPlan(self); +} + +CLOOP_EXTERN_C const char* ITraceTrigger_getExplainedPlan(struct ITraceTrigger* self) +{ + return self->vtable->getExplainedPlan(self); +} + +CLOOP_EXTERN_C unsigned ITraceServiceConnection_getKind(struct ITraceServiceConnection* self) +{ + return self->vtable->getKind(self); +} + +CLOOP_EXTERN_C int ITraceServiceConnection_getProcessID(struct ITraceServiceConnection* self) +{ + return self->vtable->getProcessID(self); +} + +CLOOP_EXTERN_C const char* ITraceServiceConnection_getUserName(struct ITraceServiceConnection* self) +{ + return self->vtable->getUserName(self); +} + +CLOOP_EXTERN_C const char* ITraceServiceConnection_getRoleName(struct ITraceServiceConnection* self) +{ + return self->vtable->getRoleName(self); +} + +CLOOP_EXTERN_C const char* ITraceServiceConnection_getCharSet(struct ITraceServiceConnection* self) +{ + return self->vtable->getCharSet(self); +} + +CLOOP_EXTERN_C const char* ITraceServiceConnection_getRemoteProtocol(struct ITraceServiceConnection* self) +{ + return self->vtable->getRemoteProtocol(self); +} + +CLOOP_EXTERN_C const char* ITraceServiceConnection_getRemoteAddress(struct ITraceServiceConnection* self) +{ + return self->vtable->getRemoteAddress(self); +} + +CLOOP_EXTERN_C int ITraceServiceConnection_getRemoteProcessID(struct ITraceServiceConnection* self) +{ + return self->vtable->getRemoteProcessID(self); +} + +CLOOP_EXTERN_C const char* ITraceServiceConnection_getRemoteProcessName(struct ITraceServiceConnection* self) +{ + return self->vtable->getRemoteProcessName(self); +} + +CLOOP_EXTERN_C void* ITraceServiceConnection_getServiceID(struct ITraceServiceConnection* self) +{ + return self->vtable->getServiceID(self); +} + +CLOOP_EXTERN_C const char* ITraceServiceConnection_getServiceMgr(struct ITraceServiceConnection* self) +{ + return self->vtable->getServiceMgr(self); +} + +CLOOP_EXTERN_C const char* ITraceServiceConnection_getServiceName(struct ITraceServiceConnection* self) +{ + return self->vtable->getServiceName(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITraceStatusVector_hasError(struct ITraceStatusVector* self) +{ + return self->vtable->hasError(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITraceStatusVector_hasWarning(struct ITraceStatusVector* self) +{ + return self->vtable->hasWarning(self); +} + +CLOOP_EXTERN_C struct IStatus* ITraceStatusVector_getStatus(struct ITraceStatusVector* self) +{ + return self->vtable->getStatus(self); +} + +CLOOP_EXTERN_C const char* ITraceStatusVector_getText(struct ITraceStatusVector* self) +{ + return self->vtable->getText(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceSweepInfo_getOIT(struct ITraceSweepInfo* self) +{ + return self->vtable->getOIT(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceSweepInfo_getOST(struct ITraceSweepInfo* self) +{ + return self->vtable->getOST(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceSweepInfo_getOAT(struct ITraceSweepInfo* self) +{ + return self->vtable->getOAT(self); +} + +CLOOP_EXTERN_C ISC_INT64 ITraceSweepInfo_getNext(struct ITraceSweepInfo* self) +{ + return self->vtable->getNext(self); +} + +CLOOP_EXTERN_C struct PerformanceInfo* ITraceSweepInfo_getPerf(struct ITraceSweepInfo* self) +{ + return self->vtable->getPerf(self); +} + +CLOOP_EXTERN_C void ITraceLogWriter_addRef(struct ITraceLogWriter* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int ITraceLogWriter_release(struct ITraceLogWriter* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C unsigned ITraceLogWriter_write(struct ITraceLogWriter* self, const void* buf, unsigned size) +{ + return self->vtable->write(self, buf, size); +} + +CLOOP_EXTERN_C unsigned ITraceLogWriter_write_s(struct ITraceLogWriter* self, struct IStatus* status, const void* buf, unsigned size) +{ + return self->vtable->write_s(self, status, buf, size); +} + +CLOOP_EXTERN_C const char* ITraceInitInfo_getConfigText(struct ITraceInitInfo* self) +{ + return self->vtable->getConfigText(self); +} + +CLOOP_EXTERN_C int ITraceInitInfo_getTraceSessionID(struct ITraceInitInfo* self) +{ + return self->vtable->getTraceSessionID(self); +} + +CLOOP_EXTERN_C const char* ITraceInitInfo_getTraceSessionName(struct ITraceInitInfo* self) +{ + return self->vtable->getTraceSessionName(self); +} + +CLOOP_EXTERN_C const char* ITraceInitInfo_getFirebirdRootDirectory(struct ITraceInitInfo* self) +{ + return self->vtable->getFirebirdRootDirectory(self); +} + +CLOOP_EXTERN_C const char* ITraceInitInfo_getDatabaseName(struct ITraceInitInfo* self) +{ + return self->vtable->getDatabaseName(self); +} + +CLOOP_EXTERN_C struct ITraceDatabaseConnection* ITraceInitInfo_getConnection(struct ITraceInitInfo* self) +{ + return self->vtable->getConnection(self); +} + +CLOOP_EXTERN_C struct ITraceLogWriter* ITraceInitInfo_getLogWriter(struct ITraceInitInfo* self) +{ + return self->vtable->getLogWriter(self); +} + +CLOOP_EXTERN_C void ITracePlugin_addRef(struct ITracePlugin* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int ITracePlugin_release(struct ITracePlugin* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C const char* ITracePlugin_trace_get_error(struct ITracePlugin* self) +{ + return self->vtable->trace_get_error(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_attach(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, FB_BOOLEAN create_db, unsigned att_result) +{ + return self->vtable->trace_attach(self, connection, create_db, att_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_detach(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, FB_BOOLEAN drop_db) +{ + return self->vtable->trace_detach(self, connection, drop_db); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_transaction_start(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, unsigned tpb_length, const unsigned char* tpb, unsigned tra_result) +{ + return self->vtable->trace_transaction_start(self, connection, transaction, tpb_length, tpb, tra_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_transaction_end(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, FB_BOOLEAN commit, FB_BOOLEAN retain_context, unsigned tra_result) +{ + return self->vtable->trace_transaction_end(self, connection, transaction, commit, retain_context, tra_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_proc_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceProcedure* procedure, FB_BOOLEAN started, unsigned proc_result) +{ + return self->vtable->trace_proc_execute(self, connection, transaction, procedure, started, proc_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_trigger_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceTrigger* trigger, FB_BOOLEAN started, unsigned trig_result) +{ + return self->vtable->trace_trigger_execute(self, connection, transaction, trigger, started, trig_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_set_context(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceContextVariable* variable) +{ + return self->vtable->trace_set_context(self, connection, transaction, variable); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dsql_prepare(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, ISC_INT64 time_millis, unsigned req_result) +{ + return self->vtable->trace_dsql_prepare(self, connection, transaction, statement, time_millis, req_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dsql_free(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceSQLStatement* statement, unsigned option) +{ + return self->vtable->trace_dsql_free(self, connection, statement, option); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dsql_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, FB_BOOLEAN started, unsigned req_result) +{ + return self->vtable->trace_dsql_execute(self, connection, transaction, statement, started, req_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_blr_compile(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceBLRStatement* statement, ISC_INT64 time_millis, unsigned req_result) +{ + return self->vtable->trace_blr_compile(self, connection, transaction, statement, time_millis, req_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_blr_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceBLRStatement* statement, unsigned req_result) +{ + return self->vtable->trace_blr_execute(self, connection, transaction, statement, req_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dyn_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceDYNRequest* request, ISC_INT64 time_millis, unsigned req_result) +{ + return self->vtable->trace_dyn_execute(self, connection, transaction, request, time_millis, req_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_service_attach(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned att_result) +{ + return self->vtable->trace_service_attach(self, service, att_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_service_start(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned switches_length, const char* switches, unsigned start_result) +{ + return self->vtable->trace_service_start(self, service, switches_length, switches, start_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_service_query(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned send_item_length, const unsigned char* send_items, unsigned recv_item_length, const unsigned char* recv_items, unsigned query_result) +{ + return self->vtable->trace_service_query(self, service, send_item_length, send_items, recv_item_length, recv_items, query_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_service_detach(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned detach_result) +{ + return self->vtable->trace_service_detach(self, service, detach_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_event_error(struct ITracePlugin* self, struct ITraceConnection* connection, struct ITraceStatusVector* status, const char* function) +{ + return self->vtable->trace_event_error(self, connection, status, function); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_event_sweep(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceSweepInfo* sweep, unsigned sweep_state) +{ + return self->vtable->trace_event_sweep(self, connection, sweep, sweep_state); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_func_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceFunction* function, FB_BOOLEAN started, unsigned func_result) +{ + return self->vtable->trace_func_execute(self, connection, transaction, function, started, func_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dsql_restart(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, unsigned number) +{ + return self->vtable->trace_dsql_restart(self, connection, transaction, statement, number); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_proc_compile(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceProcedure* procedure, ISC_INT64 time_millis, unsigned proc_result) +{ + return self->vtable->trace_proc_compile(self, connection, procedure, time_millis, proc_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_func_compile(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceFunction* function, ISC_INT64 time_millis, unsigned func_result) +{ + return self->vtable->trace_func_compile(self, connection, function, time_millis, func_result); +} + +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_trigger_compile(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTrigger* trigger, ISC_INT64 time_millis, unsigned trig_result) +{ + return self->vtable->trace_trigger_compile(self, connection, trigger, time_millis, trig_result); +} + +CLOOP_EXTERN_C void ITraceFactory_addRef(struct ITraceFactory* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int ITraceFactory_release(struct ITraceFactory* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void ITraceFactory_setOwner(struct ITraceFactory* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* ITraceFactory_getOwner(struct ITraceFactory* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C ISC_UINT64 ITraceFactory_trace_needs(struct ITraceFactory* self) +{ + return self->vtable->trace_needs(self); +} + +CLOOP_EXTERN_C struct ITracePlugin* ITraceFactory_trace_create(struct ITraceFactory* self, struct IStatus* status, struct ITraceInitInfo* init_info) +{ + return self->vtable->trace_create(self, status, init_info); +} + +CLOOP_EXTERN_C void IUdrFunctionFactory_dispose(struct IUdrFunctionFactory* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IUdrFunctionFactory_setup(struct IUdrFunctionFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder) +{ + self->vtable->setup(self, status, context, metadata, inBuilder, outBuilder); +} + +CLOOP_EXTERN_C struct IExternalFunction* IUdrFunctionFactory_newItem(struct IUdrFunctionFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata) +{ + return self->vtable->newItem(self, status, context, metadata); +} + +CLOOP_EXTERN_C void IUdrProcedureFactory_dispose(struct IUdrProcedureFactory* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IUdrProcedureFactory_setup(struct IUdrProcedureFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder) +{ + self->vtable->setup(self, status, context, metadata, inBuilder, outBuilder); +} + +CLOOP_EXTERN_C struct IExternalProcedure* IUdrProcedureFactory_newItem(struct IUdrProcedureFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata) +{ + return self->vtable->newItem(self, status, context, metadata); +} + +CLOOP_EXTERN_C void IUdrTriggerFactory_dispose(struct IUdrTriggerFactory* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IUdrTriggerFactory_setup(struct IUdrTriggerFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* fieldsBuilder) +{ + self->vtable->setup(self, status, context, metadata, fieldsBuilder); +} + +CLOOP_EXTERN_C struct IExternalTrigger* IUdrTriggerFactory_newItem(struct IUdrTriggerFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata) +{ + return self->vtable->newItem(self, status, context, metadata); +} + +CLOOP_EXTERN_C struct IMaster* IUdrPlugin_getMaster(struct IUdrPlugin* self) +{ + return self->vtable->getMaster(self); +} + +CLOOP_EXTERN_C void IUdrPlugin_registerFunction(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrFunctionFactory* factory) +{ + self->vtable->registerFunction(self, status, name, factory); +} + +CLOOP_EXTERN_C void IUdrPlugin_registerProcedure(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrProcedureFactory* factory) +{ + self->vtable->registerProcedure(self, status, name, factory); +} + +CLOOP_EXTERN_C void IUdrPlugin_registerTrigger(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrTriggerFactory* factory) +{ + self->vtable->registerTrigger(self, status, name, factory); +} + +CLOOP_EXTERN_C void IDecFloat16_toBcd(struct IDecFloat16* self, const FB_DEC16* from, int* sign, unsigned char* bcd, int* exp) +{ + self->vtable->toBcd(self, from, sign, bcd, exp); +} + +CLOOP_EXTERN_C void IDecFloat16_toString(struct IDecFloat16* self, struct IStatus* status, const FB_DEC16* from, unsigned bufferLength, char* buffer) +{ + self->vtable->toString(self, status, from, bufferLength, buffer); +} + +CLOOP_EXTERN_C void IDecFloat16_fromBcd(struct IDecFloat16* self, int sign, const unsigned char* bcd, int exp, FB_DEC16* to) +{ + self->vtable->fromBcd(self, sign, bcd, exp, to); +} + +CLOOP_EXTERN_C void IDecFloat16_fromString(struct IDecFloat16* self, struct IStatus* status, const char* from, FB_DEC16* to) +{ + self->vtable->fromString(self, status, from, to); +} + +CLOOP_EXTERN_C void IDecFloat34_toBcd(struct IDecFloat34* self, const FB_DEC34* from, int* sign, unsigned char* bcd, int* exp) +{ + self->vtable->toBcd(self, from, sign, bcd, exp); +} + +CLOOP_EXTERN_C void IDecFloat34_toString(struct IDecFloat34* self, struct IStatus* status, const FB_DEC34* from, unsigned bufferLength, char* buffer) +{ + self->vtable->toString(self, status, from, bufferLength, buffer); +} + +CLOOP_EXTERN_C void IDecFloat34_fromBcd(struct IDecFloat34* self, int sign, const unsigned char* bcd, int exp, FB_DEC34* to) +{ + self->vtable->fromBcd(self, sign, bcd, exp, to); +} + +CLOOP_EXTERN_C void IDecFloat34_fromString(struct IDecFloat34* self, struct IStatus* status, const char* from, FB_DEC34* to) +{ + self->vtable->fromString(self, status, from, to); +} + +CLOOP_EXTERN_C void IInt128_toString(struct IInt128* self, struct IStatus* status, const FB_I128* from, int scale, unsigned bufferLength, char* buffer) +{ + self->vtable->toString(self, status, from, scale, bufferLength, buffer); +} + +CLOOP_EXTERN_C void IInt128_fromString(struct IInt128* self, struct IStatus* status, int scale, const char* from, FB_I128* to) +{ + self->vtable->fromString(self, status, scale, from, to); +} + +CLOOP_EXTERN_C const char* IReplicatedField_getName(struct IReplicatedField* self) +{ + return self->vtable->getName(self); +} + +CLOOP_EXTERN_C unsigned IReplicatedField_getType(struct IReplicatedField* self) +{ + return self->vtable->getType(self); +} + +CLOOP_EXTERN_C int IReplicatedField_getSubType(struct IReplicatedField* self) +{ + return self->vtable->getSubType(self); +} + +CLOOP_EXTERN_C int IReplicatedField_getScale(struct IReplicatedField* self) +{ + return self->vtable->getScale(self); +} + +CLOOP_EXTERN_C unsigned IReplicatedField_getLength(struct IReplicatedField* self) +{ + return self->vtable->getLength(self); +} + +CLOOP_EXTERN_C unsigned IReplicatedField_getCharSet(struct IReplicatedField* self) +{ + return self->vtable->getCharSet(self); +} + +CLOOP_EXTERN_C const void* IReplicatedField_getData(struct IReplicatedField* self) +{ + return self->vtable->getData(self); +} + +CLOOP_EXTERN_C unsigned IReplicatedRecord_getCount(struct IReplicatedRecord* self) +{ + return self->vtable->getCount(self); +} + +CLOOP_EXTERN_C struct IReplicatedField* IReplicatedRecord_getField(struct IReplicatedRecord* self, unsigned index) +{ + return self->vtable->getField(self, index); +} + +CLOOP_EXTERN_C unsigned IReplicatedRecord_getRawLength(struct IReplicatedRecord* self) +{ + return self->vtable->getRawLength(self); +} + +CLOOP_EXTERN_C const unsigned char* IReplicatedRecord_getRawData(struct IReplicatedRecord* self) +{ + return self->vtable->getRawData(self); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_dispose(struct IReplicatedTransaction* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_prepare(struct IReplicatedTransaction* self, struct IStatus* status) +{ + self->vtable->prepare(self, status); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_commit(struct IReplicatedTransaction* self, struct IStatus* status) +{ + self->vtable->commit(self, status); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_rollback(struct IReplicatedTransaction* self, struct IStatus* status) +{ + self->vtable->rollback(self, status); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_startSavepoint(struct IReplicatedTransaction* self, struct IStatus* status) +{ + self->vtable->startSavepoint(self, status); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_releaseSavepoint(struct IReplicatedTransaction* self, struct IStatus* status) +{ + self->vtable->releaseSavepoint(self, status); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_rollbackSavepoint(struct IReplicatedTransaction* self, struct IStatus* status) +{ + self->vtable->rollbackSavepoint(self, status); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_insertRecord(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* record) +{ + self->vtable->insertRecord(self, status, name, record); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_updateRecord(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* orgRecord, struct IReplicatedRecord* newRecord) +{ + self->vtable->updateRecord(self, status, name, orgRecord, newRecord); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_deleteRecord(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* record) +{ + self->vtable->deleteRecord(self, status, name, record); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_executeSql(struct IReplicatedTransaction* self, struct IStatus* status, const char* sql) +{ + self->vtable->executeSql(self, status, sql); +} + +CLOOP_EXTERN_C void IReplicatedTransaction_executeSqlIntl(struct IReplicatedTransaction* self, struct IStatus* status, unsigned charset, const char* sql) +{ + self->vtable->executeSqlIntl(self, status, charset, sql); +} + +CLOOP_EXTERN_C void IReplicatedSession_addRef(struct IReplicatedSession* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IReplicatedSession_release(struct IReplicatedSession* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IReplicatedSession_setOwner(struct IReplicatedSession* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IReplicatedSession_getOwner(struct IReplicatedSession* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C FB_BOOLEAN IReplicatedSession_init(struct IReplicatedSession* self, struct IStatus* status, struct IAttachment* attachment) +{ + return self->vtable->init(self, status, attachment); +} + +CLOOP_EXTERN_C struct IReplicatedTransaction* IReplicatedSession_startTransaction(struct IReplicatedSession* self, struct IStatus* status, struct ITransaction* transaction, ISC_INT64 number) +{ + return self->vtable->startTransaction(self, status, transaction, number); +} + +CLOOP_EXTERN_C void IReplicatedSession_cleanupTransaction(struct IReplicatedSession* self, struct IStatus* status, ISC_INT64 number) +{ + self->vtable->cleanupTransaction(self, status, number); +} + +CLOOP_EXTERN_C void IReplicatedSession_setSequence(struct IReplicatedSession* self, struct IStatus* status, const char* name, ISC_INT64 value) +{ + self->vtable->setSequence(self, status, name, value); +} + +CLOOP_EXTERN_C void IProfilerPlugin_addRef(struct IProfilerPlugin* self) +{ + self->vtable->addRef(self); +} + +CLOOP_EXTERN_C int IProfilerPlugin_release(struct IProfilerPlugin* self) +{ + return self->vtable->release(self); +} + +CLOOP_EXTERN_C void IProfilerPlugin_setOwner(struct IProfilerPlugin* self, struct IReferenceCounted* r) +{ + self->vtable->setOwner(self, r); +} + +CLOOP_EXTERN_C struct IReferenceCounted* IProfilerPlugin_getOwner(struct IProfilerPlugin* self) +{ + return self->vtable->getOwner(self); +} + +CLOOP_EXTERN_C void IProfilerPlugin_init(struct IProfilerPlugin* self, struct IStatus* status, struct IAttachment* attachment, ISC_UINT64 ticksFrequency) +{ + self->vtable->init(self, status, attachment, ticksFrequency); +} + +CLOOP_EXTERN_C struct IProfilerSession* IProfilerPlugin_startSession(struct IProfilerPlugin* self, struct IStatus* status, const char* description, const char* options, ISC_TIMESTAMP_TZ timestamp) +{ + return self->vtable->startSession(self, status, description, options, timestamp); +} + +CLOOP_EXTERN_C void IProfilerPlugin_flush(struct IProfilerPlugin* self, struct IStatus* status) +{ + self->vtable->flush(self, status); +} + +CLOOP_EXTERN_C void IProfilerSession_dispose(struct IProfilerSession* self) +{ + self->vtable->dispose(self); +} + +CLOOP_EXTERN_C ISC_INT64 IProfilerSession_getId(struct IProfilerSession* self) +{ + return self->vtable->getId(self); +} + +CLOOP_EXTERN_C unsigned IProfilerSession_getFlags(struct IProfilerSession* self) +{ + return self->vtable->getFlags(self); +} + +CLOOP_EXTERN_C void IProfilerSession_cancel(struct IProfilerSession* self, struct IStatus* status) +{ + self->vtable->cancel(self, status); +} + +CLOOP_EXTERN_C void IProfilerSession_finish(struct IProfilerSession* self, struct IStatus* status, ISC_TIMESTAMP_TZ timestamp) +{ + self->vtable->finish(self, status, timestamp); +} + +CLOOP_EXTERN_C void IProfilerSession_defineStatement(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 parentStatementId, const char* type, const char* packageName, const char* routineName, const char* sqlText) +{ + self->vtable->defineStatement(self, status, statementId, parentStatementId, type, packageName, routineName, sqlText); +} + +CLOOP_EXTERN_C void IProfilerSession_defineCursor(struct IProfilerSession* self, ISC_INT64 statementId, unsigned cursorId, const char* name, unsigned line, unsigned column) +{ + self->vtable->defineCursor(self, statementId, cursorId, name, line, column); +} + +CLOOP_EXTERN_C void IProfilerSession_defineRecordSource(struct IProfilerSession* self, ISC_INT64 statementId, unsigned cursorId, unsigned recSourceId, unsigned level, const char* accessPath, unsigned parentRecSourceId) +{ + self->vtable->defineRecordSource(self, statementId, cursorId, recSourceId, level, accessPath, parentRecSourceId); +} + +CLOOP_EXTERN_C void IProfilerSession_onRequestStart(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 requestId, ISC_INT64 callerStatementId, ISC_INT64 callerRequestId, ISC_TIMESTAMP_TZ timestamp) +{ + self->vtable->onRequestStart(self, status, statementId, requestId, callerStatementId, callerRequestId, timestamp); +} + +CLOOP_EXTERN_C void IProfilerSession_onRequestFinish(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 requestId, ISC_TIMESTAMP_TZ timestamp, struct IProfilerStats* stats) +{ + self->vtable->onRequestFinish(self, status, statementId, requestId, timestamp, stats); +} + +CLOOP_EXTERN_C void IProfilerSession_beforePsqlLineColumn(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned line, unsigned column) +{ + self->vtable->beforePsqlLineColumn(self, statementId, requestId, line, column); +} + +CLOOP_EXTERN_C void IProfilerSession_afterPsqlLineColumn(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned line, unsigned column, struct IProfilerStats* stats) +{ + self->vtable->afterPsqlLineColumn(self, statementId, requestId, line, column, stats); +} + +CLOOP_EXTERN_C void IProfilerSession_beforeRecordSourceOpen(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId) +{ + self->vtable->beforeRecordSourceOpen(self, statementId, requestId, cursorId, recSourceId); +} + +CLOOP_EXTERN_C void IProfilerSession_afterRecordSourceOpen(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId, struct IProfilerStats* stats) +{ + self->vtable->afterRecordSourceOpen(self, statementId, requestId, cursorId, recSourceId, stats); +} + +CLOOP_EXTERN_C void IProfilerSession_beforeRecordSourceGetRecord(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId) +{ + self->vtable->beforeRecordSourceGetRecord(self, statementId, requestId, cursorId, recSourceId); +} + +CLOOP_EXTERN_C void IProfilerSession_afterRecordSourceGetRecord(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId, struct IProfilerStats* stats) +{ + self->vtable->afterRecordSourceGetRecord(self, statementId, requestId, cursorId, recSourceId, stats); +} + +CLOOP_EXTERN_C ISC_UINT64 IProfilerStats_getElapsedTicks(struct IProfilerStats* self) +{ + return self->vtable->getElapsedTicks(self); +} + diff --git a/src/include/gen/fb_c_api.h b/src/include/gen/fb_c_api.h new file mode 100644 index 0000000000..4ff3fd3967 --- /dev/null +++ b/src/include/gen/fb_c_api.h @@ -0,0 +1,3351 @@ +/* + * PROGRAM: Firebird interface. + * MODULE: fb_c_api.h + * DESCRIPTION: C API file. + * + * The contents of this file are subject to the Initial + * Developer's Public License Version 1.0 (the "License"); + * you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. + * + * Software distributed under the License is distributed AS IS, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. + * See the License for the specific language governing rights + * and limitations under the License. + * + * The Original Code was created by Alex Peshkov + * for the Firebird Open Source RDBMS project. + * + * Copyright (c) 2024 Alex Peshkov + * and all contributors signed below. + * + * All Rights Reserved. + * Contributor(s): ______________________________________. + * + * + */ + +#include + +struct IMaster* ISC_EXPORT fb_get_master_interface(); + +/* This file was autogenerated by cloop - Cross Language Object Oriented Programming */ + +#ifndef FB_C_API_H +#define FB_C_API_H + +#include + +#ifndef CLOOP_EXTERN_C +#ifdef __cplusplus +#define CLOOP_EXTERN_C extern "C" +#else +#define CLOOP_EXTERN_C +#endif +#endif + + +struct IVersioned; +struct IReferenceCounted; +struct IDisposable; +struct IStatus; +struct IMaster; +struct IPluginBase; +struct IPluginSet; +struct IConfigEntry; +struct IConfig; +struct IFirebirdConf; +struct IPluginConfig; +struct IPluginFactory; +struct IPluginModule; +struct IPluginManager; +struct ICryptKey; +struct IConfigManager; +struct IEventCallback; +struct IBlob; +struct ITransaction; +struct IMessageMetadata; +struct IMetadataBuilder; +struct IResultSet; +struct IStatement; +struct IBatch; +struct IBatchCompletionState; +struct IReplicator; +struct IRequest; +struct IEvents; +struct IAttachment; +struct IService; +struct IProvider; +struct IDtcStart; +struct IDtc; +struct IAuth; +struct IWriter; +struct IServerBlock; +struct IClientBlock; +struct IServer; +struct IClient; +struct IUserField; +struct ICharUserField; +struct IIntUserField; +struct IUser; +struct IListUsers; +struct ILogonInfo; +struct IManagement; +struct IAuthBlock; +struct IWireCryptPlugin; +struct ICryptKeyCallback; +struct IKeyHolderPlugin; +struct IDbCryptInfo; +struct IDbCryptPlugin; +struct IExternalContext; +struct IExternalResultSet; +struct IExternalFunction; +struct IExternalProcedure; +struct IExternalTrigger; +struct IRoutineMetadata; +struct IExternalEngine; +struct ITimer; +struct ITimerControl; +struct IVersionCallback; +struct IUtil; +struct IOffsetsCallback; +struct IXpbBuilder; +struct ITraceConnection; +struct ITraceDatabaseConnection; +struct ITraceTransaction; +struct ITraceParams; +struct ITraceStatement; +struct ITraceSQLStatement; +struct ITraceBLRStatement; +struct ITraceDYNRequest; +struct ITraceContextVariable; +struct ITraceProcedure; +struct ITraceFunction; +struct ITraceTrigger; +struct ITraceServiceConnection; +struct ITraceStatusVector; +struct ITraceSweepInfo; +struct ITraceLogWriter; +struct ITraceInitInfo; +struct ITracePlugin; +struct ITraceFactory; +struct IUdrFunctionFactory; +struct IUdrProcedureFactory; +struct IUdrTriggerFactory; +struct IUdrPlugin; +struct IDecFloat16; +struct IDecFloat34; +struct IInt128; +struct IReplicatedField; +struct IReplicatedRecord; +struct IReplicatedTransaction; +struct IReplicatedSession; +struct IProfilerPlugin; +struct IProfilerSession; +struct IProfilerStats; + + +#define IVersioned_VERSION 1 + +struct IVersioned; + +struct IVersionedVTable +{ + void* cloopDummy[1]; + uintptr_t version; +}; + +struct IVersioned +{ + void* cloopDummy[1]; + struct IVersionedVTable* vtable; +}; + + +#define IReferenceCounted_VERSION 2 + +struct IReferenceCounted; + +struct IReferenceCountedVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IReferenceCounted* self); + int (*release)(struct IReferenceCounted* self); +}; + +struct IReferenceCounted +{ + void* cloopDummy[1]; + struct IReferenceCountedVTable* vtable; +}; + +CLOOP_EXTERN_C void IReferenceCounted_addRef(struct IReferenceCounted* self); +CLOOP_EXTERN_C int IReferenceCounted_release(struct IReferenceCounted* self); + +#define IDisposable_VERSION 2 + +struct IDisposable; + +struct IDisposableVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IDisposable* self); +}; + +struct IDisposable +{ + void* cloopDummy[1]; + struct IDisposableVTable* vtable; +}; + +CLOOP_EXTERN_C void IDisposable_dispose(struct IDisposable* self); + +#define IStatus_VERSION 3 + +#define IStatus_STATE_WARNINGS ((unsigned) (0x1)) +#define IStatus_STATE_ERRORS ((unsigned) (0x2)) +#define IStatus_RESULT_ERROR ((int) (-1)) +#define IStatus_RESULT_OK ((int) (0)) +#define IStatus_RESULT_NO_DATA ((int) (1)) +#define IStatus_RESULT_SEGMENT ((int) (2)) + +struct IStatus; + +struct IStatusVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IStatus* self); + void (*init)(struct IStatus* self); + unsigned (*getState)(const struct IStatus* self); + void (*setErrors2)(struct IStatus* self, unsigned length, const intptr_t* value); + void (*setWarnings2)(struct IStatus* self, unsigned length, const intptr_t* value); + void (*setErrors)(struct IStatus* self, const intptr_t* value); + void (*setWarnings)(struct IStatus* self, const intptr_t* value); + const intptr_t* (*getErrors)(const struct IStatus* self); + const intptr_t* (*getWarnings)(const struct IStatus* self); + struct IStatus* (*clone)(const struct IStatus* self); +}; + +struct IStatus +{ + void* cloopDummy[1]; + struct IStatusVTable* vtable; +}; + +CLOOP_EXTERN_C void IStatus_dispose(struct IStatus* self); +CLOOP_EXTERN_C void IStatus_init(struct IStatus* self); +CLOOP_EXTERN_C unsigned IStatus_getState(const struct IStatus* self); +CLOOP_EXTERN_C void IStatus_setErrors2(struct IStatus* self, unsigned length, const intptr_t* value); +CLOOP_EXTERN_C void IStatus_setWarnings2(struct IStatus* self, unsigned length, const intptr_t* value); +CLOOP_EXTERN_C void IStatus_setErrors(struct IStatus* self, const intptr_t* value); +CLOOP_EXTERN_C void IStatus_setWarnings(struct IStatus* self, const intptr_t* value); +CLOOP_EXTERN_C const intptr_t* IStatus_getErrors(const struct IStatus* self); +CLOOP_EXTERN_C const intptr_t* IStatus_getWarnings(const struct IStatus* self); +CLOOP_EXTERN_C struct IStatus* IStatus_clone(const struct IStatus* self); + +#define IMaster_VERSION 2 + +struct IMaster; + +struct IMasterVTable +{ + void* cloopDummy[1]; + uintptr_t version; + struct IStatus* (*getStatus)(struct IMaster* self); + struct IProvider* (*getDispatcher)(struct IMaster* self); + struct IPluginManager* (*getPluginManager)(struct IMaster* self); + struct ITimerControl* (*getTimerControl)(struct IMaster* self); + struct IDtc* (*getDtc)(struct IMaster* self); + struct IAttachment* (*registerAttachment)(struct IMaster* self, struct IProvider* provider, struct IAttachment* attachment); + struct ITransaction* (*registerTransaction)(struct IMaster* self, struct IAttachment* attachment, struct ITransaction* transaction); + struct IMetadataBuilder* (*getMetadataBuilder)(struct IMaster* self, struct IStatus* status, unsigned fieldCount); + int (*serverMode)(struct IMaster* self, int mode); + struct IUtil* (*getUtilInterface)(struct IMaster* self); + struct IConfigManager* (*getConfigManager)(struct IMaster* self); + FB_BOOLEAN (*getProcessExiting)(struct IMaster* self); +}; + +struct IMaster +{ + void* cloopDummy[1]; + struct IMasterVTable* vtable; +}; + +CLOOP_EXTERN_C struct IStatus* IMaster_getStatus(struct IMaster* self); +CLOOP_EXTERN_C struct IProvider* IMaster_getDispatcher(struct IMaster* self); +CLOOP_EXTERN_C struct IPluginManager* IMaster_getPluginManager(struct IMaster* self); +CLOOP_EXTERN_C struct ITimerControl* IMaster_getTimerControl(struct IMaster* self); +CLOOP_EXTERN_C struct IDtc* IMaster_getDtc(struct IMaster* self); +CLOOP_EXTERN_C struct IAttachment* IMaster_registerAttachment(struct IMaster* self, struct IProvider* provider, struct IAttachment* attachment); +CLOOP_EXTERN_C struct ITransaction* IMaster_registerTransaction(struct IMaster* self, struct IAttachment* attachment, struct ITransaction* transaction); +CLOOP_EXTERN_C struct IMetadataBuilder* IMaster_getMetadataBuilder(struct IMaster* self, struct IStatus* status, unsigned fieldCount); +CLOOP_EXTERN_C int IMaster_serverMode(struct IMaster* self, int mode); +CLOOP_EXTERN_C struct IUtil* IMaster_getUtilInterface(struct IMaster* self); +CLOOP_EXTERN_C struct IConfigManager* IMaster_getConfigManager(struct IMaster* self); +CLOOP_EXTERN_C FB_BOOLEAN IMaster_getProcessExiting(struct IMaster* self); + +#define IPluginBase_VERSION 3 + +struct IPluginBase; + +struct IPluginBaseVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IPluginBase* self); + int (*release)(struct IPluginBase* self); + void (*setOwner)(struct IPluginBase* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IPluginBase* self); +}; + +struct IPluginBase +{ + void* cloopDummy[1]; + struct IPluginBaseVTable* vtable; +}; + +CLOOP_EXTERN_C void IPluginBase_addRef(struct IPluginBase* self); +CLOOP_EXTERN_C int IPluginBase_release(struct IPluginBase* self); +CLOOP_EXTERN_C void IPluginBase_setOwner(struct IPluginBase* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IPluginBase_getOwner(struct IPluginBase* self); + +#define IPluginSet_VERSION 3 + +struct IPluginSet; + +struct IPluginSetVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IPluginSet* self); + int (*release)(struct IPluginSet* self); + const char* (*getName)(const struct IPluginSet* self); + const char* (*getModuleName)(const struct IPluginSet* self); + struct IPluginBase* (*getPlugin)(struct IPluginSet* self, struct IStatus* status); + void (*next)(struct IPluginSet* self, struct IStatus* status); + void (*set)(struct IPluginSet* self, struct IStatus* status, const char* s); +}; + +struct IPluginSet +{ + void* cloopDummy[1]; + struct IPluginSetVTable* vtable; +}; + +CLOOP_EXTERN_C void IPluginSet_addRef(struct IPluginSet* self); +CLOOP_EXTERN_C int IPluginSet_release(struct IPluginSet* self); +CLOOP_EXTERN_C const char* IPluginSet_getName(const struct IPluginSet* self); +CLOOP_EXTERN_C const char* IPluginSet_getModuleName(const struct IPluginSet* self); +CLOOP_EXTERN_C struct IPluginBase* IPluginSet_getPlugin(struct IPluginSet* self, struct IStatus* status); +CLOOP_EXTERN_C void IPluginSet_next(struct IPluginSet* self, struct IStatus* status); +CLOOP_EXTERN_C void IPluginSet_set(struct IPluginSet* self, struct IStatus* status, const char* s); + +#define IConfigEntry_VERSION 3 + +struct IConfigEntry; + +struct IConfigEntryVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IConfigEntry* self); + int (*release)(struct IConfigEntry* self); + const char* (*getName)(struct IConfigEntry* self); + const char* (*getValue)(struct IConfigEntry* self); + ISC_INT64 (*getIntValue)(struct IConfigEntry* self); + FB_BOOLEAN (*getBoolValue)(struct IConfigEntry* self); + struct IConfig* (*getSubConfig)(struct IConfigEntry* self, struct IStatus* status); +}; + +struct IConfigEntry +{ + void* cloopDummy[1]; + struct IConfigEntryVTable* vtable; +}; + +CLOOP_EXTERN_C void IConfigEntry_addRef(struct IConfigEntry* self); +CLOOP_EXTERN_C int IConfigEntry_release(struct IConfigEntry* self); +CLOOP_EXTERN_C const char* IConfigEntry_getName(struct IConfigEntry* self); +CLOOP_EXTERN_C const char* IConfigEntry_getValue(struct IConfigEntry* self); +CLOOP_EXTERN_C ISC_INT64 IConfigEntry_getIntValue(struct IConfigEntry* self); +CLOOP_EXTERN_C FB_BOOLEAN IConfigEntry_getBoolValue(struct IConfigEntry* self); +CLOOP_EXTERN_C struct IConfig* IConfigEntry_getSubConfig(struct IConfigEntry* self, struct IStatus* status); + +#define IConfig_VERSION 3 + +struct IConfig; + +struct IConfigVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IConfig* self); + int (*release)(struct IConfig* self); + struct IConfigEntry* (*find)(struct IConfig* self, struct IStatus* status, const char* name); + struct IConfigEntry* (*findValue)(struct IConfig* self, struct IStatus* status, const char* name, const char* value); + struct IConfigEntry* (*findPos)(struct IConfig* self, struct IStatus* status, const char* name, unsigned pos); +}; + +struct IConfig +{ + void* cloopDummy[1]; + struct IConfigVTable* vtable; +}; + +CLOOP_EXTERN_C void IConfig_addRef(struct IConfig* self); +CLOOP_EXTERN_C int IConfig_release(struct IConfig* self); +CLOOP_EXTERN_C struct IConfigEntry* IConfig_find(struct IConfig* self, struct IStatus* status, const char* name); +CLOOP_EXTERN_C struct IConfigEntry* IConfig_findValue(struct IConfig* self, struct IStatus* status, const char* name, const char* value); +CLOOP_EXTERN_C struct IConfigEntry* IConfig_findPos(struct IConfig* self, struct IStatus* status, const char* name, unsigned pos); + +#define IFirebirdConf_VERSION 4 + +struct IFirebirdConf; + +struct IFirebirdConfVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IFirebirdConf* self); + int (*release)(struct IFirebirdConf* self); + unsigned (*getKey)(struct IFirebirdConf* self, const char* name); + ISC_INT64 (*asInteger)(struct IFirebirdConf* self, unsigned key); + const char* (*asString)(struct IFirebirdConf* self, unsigned key); + FB_BOOLEAN (*asBoolean)(struct IFirebirdConf* self, unsigned key); + unsigned (*getVersion)(struct IFirebirdConf* self, struct IStatus* status); +}; + +struct IFirebirdConf +{ + void* cloopDummy[1]; + struct IFirebirdConfVTable* vtable; +}; + +CLOOP_EXTERN_C void IFirebirdConf_addRef(struct IFirebirdConf* self); +CLOOP_EXTERN_C int IFirebirdConf_release(struct IFirebirdConf* self); +CLOOP_EXTERN_C unsigned IFirebirdConf_getKey(struct IFirebirdConf* self, const char* name); +CLOOP_EXTERN_C ISC_INT64 IFirebirdConf_asInteger(struct IFirebirdConf* self, unsigned key); +CLOOP_EXTERN_C const char* IFirebirdConf_asString(struct IFirebirdConf* self, unsigned key); +CLOOP_EXTERN_C FB_BOOLEAN IFirebirdConf_asBoolean(struct IFirebirdConf* self, unsigned key); +CLOOP_EXTERN_C unsigned IFirebirdConf_getVersion(struct IFirebirdConf* self, struct IStatus* status); + +#define IPluginConfig_VERSION 3 + +struct IPluginConfig; + +struct IPluginConfigVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IPluginConfig* self); + int (*release)(struct IPluginConfig* self); + const char* (*getConfigFileName)(struct IPluginConfig* self); + struct IConfig* (*getDefaultConfig)(struct IPluginConfig* self, struct IStatus* status); + struct IFirebirdConf* (*getFirebirdConf)(struct IPluginConfig* self, struct IStatus* status); + void (*setReleaseDelay)(struct IPluginConfig* self, struct IStatus* status, ISC_UINT64 microSeconds); +}; + +struct IPluginConfig +{ + void* cloopDummy[1]; + struct IPluginConfigVTable* vtable; +}; + +CLOOP_EXTERN_C void IPluginConfig_addRef(struct IPluginConfig* self); +CLOOP_EXTERN_C int IPluginConfig_release(struct IPluginConfig* self); +CLOOP_EXTERN_C const char* IPluginConfig_getConfigFileName(struct IPluginConfig* self); +CLOOP_EXTERN_C struct IConfig* IPluginConfig_getDefaultConfig(struct IPluginConfig* self, struct IStatus* status); +CLOOP_EXTERN_C struct IFirebirdConf* IPluginConfig_getFirebirdConf(struct IPluginConfig* self, struct IStatus* status); +CLOOP_EXTERN_C void IPluginConfig_setReleaseDelay(struct IPluginConfig* self, struct IStatus* status, ISC_UINT64 microSeconds); + +#define IPluginFactory_VERSION 2 + +struct IPluginFactory; + +struct IPluginFactoryVTable +{ + void* cloopDummy[1]; + uintptr_t version; + struct IPluginBase* (*createPlugin)(struct IPluginFactory* self, struct IStatus* status, struct IPluginConfig* factoryParameter); +}; + +struct IPluginFactory +{ + void* cloopDummy[1]; + struct IPluginFactoryVTable* vtable; +}; + +CLOOP_EXTERN_C struct IPluginBase* IPluginFactory_createPlugin(struct IPluginFactory* self, struct IStatus* status, struct IPluginConfig* factoryParameter); + +#define IPluginModule_VERSION 3 + +struct IPluginModule; + +struct IPluginModuleVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*doClean)(struct IPluginModule* self); + void (*threadDetach)(struct IPluginModule* self); +}; + +struct IPluginModule +{ + void* cloopDummy[1]; + struct IPluginModuleVTable* vtable; +}; + +CLOOP_EXTERN_C void IPluginModule_doClean(struct IPluginModule* self); +CLOOP_EXTERN_C void IPluginModule_threadDetach(struct IPluginModule* self); + +#define IPluginManager_VERSION 2 + +#define IPluginManager_TYPE_PROVIDER ((unsigned) (1)) +#define IPluginManager_TYPE_FIRST_NON_LIB ((unsigned) (2)) +#define IPluginManager_TYPE_AUTH_SERVER ((unsigned) (3)) +#define IPluginManager_TYPE_AUTH_CLIENT ((unsigned) (4)) +#define IPluginManager_TYPE_AUTH_USER_MANAGEMENT ((unsigned) (5)) +#define IPluginManager_TYPE_EXTERNAL_ENGINE ((unsigned) (6)) +#define IPluginManager_TYPE_TRACE ((unsigned) (7)) +#define IPluginManager_TYPE_WIRE_CRYPT ((unsigned) (8)) +#define IPluginManager_TYPE_DB_CRYPT ((unsigned) (9)) +#define IPluginManager_TYPE_KEY_HOLDER ((unsigned) (10)) +#define IPluginManager_TYPE_REPLICATOR ((unsigned) (11)) +#define IPluginManager_TYPE_PROFILER ((unsigned) (12)) +#define IPluginManager_TYPE_COUNT ((unsigned) (13)) + +struct IPluginManager; + +struct IPluginManagerVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*registerPluginFactory)(struct IPluginManager* self, unsigned pluginType, const char* defaultName, struct IPluginFactory* factory); + void (*registerModule)(struct IPluginManager* self, struct IPluginModule* cleanup); + void (*unregisterModule)(struct IPluginManager* self, struct IPluginModule* cleanup); + struct IPluginSet* (*getPlugins)(struct IPluginManager* self, struct IStatus* status, unsigned pluginType, const char* namesList, struct IFirebirdConf* firebirdConf); + struct IConfig* (*getConfig)(struct IPluginManager* self, struct IStatus* status, const char* filename); + void (*releasePlugin)(struct IPluginManager* self, struct IPluginBase* plugin); +}; + +struct IPluginManager +{ + void* cloopDummy[1]; + struct IPluginManagerVTable* vtable; +}; + +CLOOP_EXTERN_C void IPluginManager_registerPluginFactory(struct IPluginManager* self, unsigned pluginType, const char* defaultName, struct IPluginFactory* factory); +CLOOP_EXTERN_C void IPluginManager_registerModule(struct IPluginManager* self, struct IPluginModule* cleanup); +CLOOP_EXTERN_C void IPluginManager_unregisterModule(struct IPluginManager* self, struct IPluginModule* cleanup); +CLOOP_EXTERN_C struct IPluginSet* IPluginManager_getPlugins(struct IPluginManager* self, struct IStatus* status, unsigned pluginType, const char* namesList, struct IFirebirdConf* firebirdConf); +CLOOP_EXTERN_C struct IConfig* IPluginManager_getConfig(struct IPluginManager* self, struct IStatus* status, const char* filename); +CLOOP_EXTERN_C void IPluginManager_releasePlugin(struct IPluginManager* self, struct IPluginBase* plugin); + +#define ICryptKey_VERSION 2 + +struct ICryptKey; + +struct ICryptKeyVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*setSymmetric)(struct ICryptKey* self, struct IStatus* status, const char* type, unsigned keyLength, const void* key); + void (*setAsymmetric)(struct ICryptKey* self, struct IStatus* status, const char* type, unsigned encryptKeyLength, const void* encryptKey, unsigned decryptKeyLength, const void* decryptKey); + const void* (*getEncryptKey)(struct ICryptKey* self, unsigned* length); + const void* (*getDecryptKey)(struct ICryptKey* self, unsigned* length); +}; + +struct ICryptKey +{ + void* cloopDummy[1]; + struct ICryptKeyVTable* vtable; +}; + +CLOOP_EXTERN_C void ICryptKey_setSymmetric(struct ICryptKey* self, struct IStatus* status, const char* type, unsigned keyLength, const void* key); +CLOOP_EXTERN_C void ICryptKey_setAsymmetric(struct ICryptKey* self, struct IStatus* status, const char* type, unsigned encryptKeyLength, const void* encryptKey, unsigned decryptKeyLength, const void* decryptKey); +CLOOP_EXTERN_C const void* ICryptKey_getEncryptKey(struct ICryptKey* self, unsigned* length); +CLOOP_EXTERN_C const void* ICryptKey_getDecryptKey(struct ICryptKey* self, unsigned* length); + +#define IConfigManager_VERSION 3 + +#define IConfigManager_DIR_BIN ((unsigned) (0)) +#define IConfigManager_DIR_SBIN ((unsigned) (1)) +#define IConfigManager_DIR_CONF ((unsigned) (2)) +#define IConfigManager_DIR_LIB ((unsigned) (3)) +#define IConfigManager_DIR_INC ((unsigned) (4)) +#define IConfigManager_DIR_DOC ((unsigned) (5)) +#define IConfigManager_DIR_UDF ((unsigned) (6)) +#define IConfigManager_DIR_SAMPLE ((unsigned) (7)) +#define IConfigManager_DIR_SAMPLEDB ((unsigned) (8)) +#define IConfigManager_DIR_HELP ((unsigned) (9)) +#define IConfigManager_DIR_INTL ((unsigned) (10)) +#define IConfigManager_DIR_MISC ((unsigned) (11)) +#define IConfigManager_DIR_SECDB ((unsigned) (12)) +#define IConfigManager_DIR_MSG ((unsigned) (13)) +#define IConfigManager_DIR_LOG ((unsigned) (14)) +#define IConfigManager_DIR_GUARD ((unsigned) (15)) +#define IConfigManager_DIR_PLUGINS ((unsigned) (16)) +#define IConfigManager_DIR_TZDATA ((unsigned) (17)) +#define IConfigManager_DIR_COUNT ((unsigned) (18)) + +struct IConfigManager; + +struct IConfigManagerVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getDirectory)(struct IConfigManager* self, unsigned code); + struct IFirebirdConf* (*getFirebirdConf)(struct IConfigManager* self); + struct IFirebirdConf* (*getDatabaseConf)(struct IConfigManager* self, const char* dbName); + struct IConfig* (*getPluginConfig)(struct IConfigManager* self, const char* configuredPlugin); + const char* (*getInstallDirectory)(struct IConfigManager* self); + const char* (*getRootDirectory)(struct IConfigManager* self); + const char* (*getDefaultSecurityDb)(struct IConfigManager* self); +}; + +struct IConfigManager +{ + void* cloopDummy[1]; + struct IConfigManagerVTable* vtable; +}; + +CLOOP_EXTERN_C const char* IConfigManager_getDirectory(struct IConfigManager* self, unsigned code); +CLOOP_EXTERN_C struct IFirebirdConf* IConfigManager_getFirebirdConf(struct IConfigManager* self); +CLOOP_EXTERN_C struct IFirebirdConf* IConfigManager_getDatabaseConf(struct IConfigManager* self, const char* dbName); +CLOOP_EXTERN_C struct IConfig* IConfigManager_getPluginConfig(struct IConfigManager* self, const char* configuredPlugin); +CLOOP_EXTERN_C const char* IConfigManager_getInstallDirectory(struct IConfigManager* self); +CLOOP_EXTERN_C const char* IConfigManager_getRootDirectory(struct IConfigManager* self); +CLOOP_EXTERN_C const char* IConfigManager_getDefaultSecurityDb(struct IConfigManager* self); + +#define IEventCallback_VERSION 3 + +struct IEventCallback; + +struct IEventCallbackVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IEventCallback* self); + int (*release)(struct IEventCallback* self); + void (*eventCallbackFunction)(struct IEventCallback* self, unsigned length, const unsigned char* events); +}; + +struct IEventCallback +{ + void* cloopDummy[1]; + struct IEventCallbackVTable* vtable; +}; + +CLOOP_EXTERN_C void IEventCallback_addRef(struct IEventCallback* self); +CLOOP_EXTERN_C int IEventCallback_release(struct IEventCallback* self); +CLOOP_EXTERN_C void IEventCallback_eventCallbackFunction(struct IEventCallback* self, unsigned length, const unsigned char* events); + +#define IBlob_VERSION 4 + +struct IBlob; + +struct IBlobVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IBlob* self); + int (*release)(struct IBlob* self); + void (*getInfo)(struct IBlob* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); + int (*getSegment)(struct IBlob* self, struct IStatus* status, unsigned bufferLength, void* buffer, unsigned* segmentLength); + void (*putSegment)(struct IBlob* self, struct IStatus* status, unsigned length, const void* buffer); + void (*deprecatedCancel)(struct IBlob* self, struct IStatus* status); + void (*deprecatedClose)(struct IBlob* self, struct IStatus* status); + int (*seek)(struct IBlob* self, struct IStatus* status, int mode, int offset); + void (*cancel)(struct IBlob* self, struct IStatus* status); + void (*close)(struct IBlob* self, struct IStatus* status); +}; + +struct IBlob +{ + void* cloopDummy[1]; + struct IBlobVTable* vtable; +}; + +CLOOP_EXTERN_C void IBlob_addRef(struct IBlob* self); +CLOOP_EXTERN_C int IBlob_release(struct IBlob* self); +CLOOP_EXTERN_C void IBlob_getInfo(struct IBlob* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); +CLOOP_EXTERN_C int IBlob_getSegment(struct IBlob* self, struct IStatus* status, unsigned bufferLength, void* buffer, unsigned* segmentLength); +CLOOP_EXTERN_C void IBlob_putSegment(struct IBlob* self, struct IStatus* status, unsigned length, const void* buffer); +CLOOP_EXTERN_C void IBlob_deprecatedCancel(struct IBlob* self, struct IStatus* status); +CLOOP_EXTERN_C void IBlob_deprecatedClose(struct IBlob* self, struct IStatus* status); +CLOOP_EXTERN_C int IBlob_seek(struct IBlob* self, struct IStatus* status, int mode, int offset); +CLOOP_EXTERN_C void IBlob_cancel(struct IBlob* self, struct IStatus* status); +CLOOP_EXTERN_C void IBlob_close(struct IBlob* self, struct IStatus* status); + +#define ITransaction_VERSION 4 + +struct ITransaction; + +struct ITransactionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct ITransaction* self); + int (*release)(struct ITransaction* self); + void (*getInfo)(struct ITransaction* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); + void (*prepare)(struct ITransaction* self, struct IStatus* status, unsigned msgLength, const unsigned char* message); + void (*deprecatedCommit)(struct ITransaction* self, struct IStatus* status); + void (*commitRetaining)(struct ITransaction* self, struct IStatus* status); + void (*deprecatedRollback)(struct ITransaction* self, struct IStatus* status); + void (*rollbackRetaining)(struct ITransaction* self, struct IStatus* status); + void (*deprecatedDisconnect)(struct ITransaction* self, struct IStatus* status); + struct ITransaction* (*join)(struct ITransaction* self, struct IStatus* status, struct ITransaction* transaction); + struct ITransaction* (*validate)(struct ITransaction* self, struct IStatus* status, struct IAttachment* attachment); + struct ITransaction* (*enterDtc)(struct ITransaction* self, struct IStatus* status); + void (*commit)(struct ITransaction* self, struct IStatus* status); + void (*rollback)(struct ITransaction* self, struct IStatus* status); + void (*disconnect)(struct ITransaction* self, struct IStatus* status); +}; + +struct ITransaction +{ + void* cloopDummy[1]; + struct ITransactionVTable* vtable; +}; + +CLOOP_EXTERN_C void ITransaction_addRef(struct ITransaction* self); +CLOOP_EXTERN_C int ITransaction_release(struct ITransaction* self); +CLOOP_EXTERN_C void ITransaction_getInfo(struct ITransaction* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); +CLOOP_EXTERN_C void ITransaction_prepare(struct ITransaction* self, struct IStatus* status, unsigned msgLength, const unsigned char* message); +CLOOP_EXTERN_C void ITransaction_deprecatedCommit(struct ITransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void ITransaction_commitRetaining(struct ITransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void ITransaction_deprecatedRollback(struct ITransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void ITransaction_rollbackRetaining(struct ITransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void ITransaction_deprecatedDisconnect(struct ITransaction* self, struct IStatus* status); +CLOOP_EXTERN_C struct ITransaction* ITransaction_join(struct ITransaction* self, struct IStatus* status, struct ITransaction* transaction); +CLOOP_EXTERN_C struct ITransaction* ITransaction_validate(struct ITransaction* self, struct IStatus* status, struct IAttachment* attachment); +CLOOP_EXTERN_C struct ITransaction* ITransaction_enterDtc(struct ITransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void ITransaction_commit(struct ITransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void ITransaction_rollback(struct ITransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void ITransaction_disconnect(struct ITransaction* self, struct IStatus* status); + +#define IMessageMetadata_VERSION 4 + +struct IMessageMetadata; + +struct IMessageMetadataVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IMessageMetadata* self); + int (*release)(struct IMessageMetadata* self); + unsigned (*getCount)(struct IMessageMetadata* self, struct IStatus* status); + const char* (*getField)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + const char* (*getRelation)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + const char* (*getOwner)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + const char* (*getAlias)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + unsigned (*getType)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + FB_BOOLEAN (*isNullable)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + int (*getSubType)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + unsigned (*getLength)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + int (*getScale)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + unsigned (*getCharSet)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + unsigned (*getOffset)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + unsigned (*getNullOffset)(struct IMessageMetadata* self, struct IStatus* status, unsigned index); + struct IMetadataBuilder* (*getBuilder)(struct IMessageMetadata* self, struct IStatus* status); + unsigned (*getMessageLength)(struct IMessageMetadata* self, struct IStatus* status); + unsigned (*getAlignment)(struct IMessageMetadata* self, struct IStatus* status); + unsigned (*getAlignedLength)(struct IMessageMetadata* self, struct IStatus* status); +}; + +struct IMessageMetadata +{ + void* cloopDummy[1]; + struct IMessageMetadataVTable* vtable; +}; + +CLOOP_EXTERN_C void IMessageMetadata_addRef(struct IMessageMetadata* self); +CLOOP_EXTERN_C int IMessageMetadata_release(struct IMessageMetadata* self); +CLOOP_EXTERN_C unsigned IMessageMetadata_getCount(struct IMessageMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C const char* IMessageMetadata_getField(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C const char* IMessageMetadata_getRelation(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C const char* IMessageMetadata_getOwner(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C const char* IMessageMetadata_getAlias(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C unsigned IMessageMetadata_getType(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C FB_BOOLEAN IMessageMetadata_isNullable(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C int IMessageMetadata_getSubType(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C unsigned IMessageMetadata_getLength(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C int IMessageMetadata_getScale(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C unsigned IMessageMetadata_getCharSet(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C unsigned IMessageMetadata_getOffset(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C unsigned IMessageMetadata_getNullOffset(struct IMessageMetadata* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C struct IMetadataBuilder* IMessageMetadata_getBuilder(struct IMessageMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IMessageMetadata_getMessageLength(struct IMessageMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IMessageMetadata_getAlignment(struct IMessageMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IMessageMetadata_getAlignedLength(struct IMessageMetadata* self, struct IStatus* status); + +#define IMetadataBuilder_VERSION 4 + +struct IMetadataBuilder; + +struct IMetadataBuilderVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IMetadataBuilder* self); + int (*release)(struct IMetadataBuilder* self); + void (*setType)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned type); + void (*setSubType)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, int subType); + void (*setLength)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned length); + void (*setCharSet)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned charSet); + void (*setScale)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, int scale); + void (*truncate)(struct IMetadataBuilder* self, struct IStatus* status, unsigned count); + void (*moveNameToIndex)(struct IMetadataBuilder* self, struct IStatus* status, const char* name, unsigned index); + void (*remove)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index); + unsigned (*addField)(struct IMetadataBuilder* self, struct IStatus* status); + struct IMessageMetadata* (*getMetadata)(struct IMetadataBuilder* self, struct IStatus* status); + void (*setField)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* field); + void (*setRelation)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* relation); + void (*setOwner)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* owner); + void (*setAlias)(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* alias); +}; + +struct IMetadataBuilder +{ + void* cloopDummy[1]; + struct IMetadataBuilderVTable* vtable; +}; + +CLOOP_EXTERN_C void IMetadataBuilder_addRef(struct IMetadataBuilder* self); +CLOOP_EXTERN_C int IMetadataBuilder_release(struct IMetadataBuilder* self); +CLOOP_EXTERN_C void IMetadataBuilder_setType(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned type); +CLOOP_EXTERN_C void IMetadataBuilder_setSubType(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, int subType); +CLOOP_EXTERN_C void IMetadataBuilder_setLength(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned length); +CLOOP_EXTERN_C void IMetadataBuilder_setCharSet(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, unsigned charSet); +CLOOP_EXTERN_C void IMetadataBuilder_setScale(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, int scale); +CLOOP_EXTERN_C void IMetadataBuilder_truncate(struct IMetadataBuilder* self, struct IStatus* status, unsigned count); +CLOOP_EXTERN_C void IMetadataBuilder_moveNameToIndex(struct IMetadataBuilder* self, struct IStatus* status, const char* name, unsigned index); +CLOOP_EXTERN_C void IMetadataBuilder_remove(struct IMetadataBuilder* self, struct IStatus* status, unsigned index); +CLOOP_EXTERN_C unsigned IMetadataBuilder_addField(struct IMetadataBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C struct IMessageMetadata* IMetadataBuilder_getMetadata(struct IMetadataBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C void IMetadataBuilder_setField(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* field); +CLOOP_EXTERN_C void IMetadataBuilder_setRelation(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* relation); +CLOOP_EXTERN_C void IMetadataBuilder_setOwner(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* owner); +CLOOP_EXTERN_C void IMetadataBuilder_setAlias(struct IMetadataBuilder* self, struct IStatus* status, unsigned index, const char* alias); + +#define IResultSet_VERSION 5 + +#define IResultSet_INF_RECORD_COUNT ((unsigned char) (10)) + +struct IResultSet; + +struct IResultSetVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IResultSet* self); + int (*release)(struct IResultSet* self); + int (*fetchNext)(struct IResultSet* self, struct IStatus* status, void* message); + int (*fetchPrior)(struct IResultSet* self, struct IStatus* status, void* message); + int (*fetchFirst)(struct IResultSet* self, struct IStatus* status, void* message); + int (*fetchLast)(struct IResultSet* self, struct IStatus* status, void* message); + int (*fetchAbsolute)(struct IResultSet* self, struct IStatus* status, int position, void* message); + int (*fetchRelative)(struct IResultSet* self, struct IStatus* status, int offset, void* message); + FB_BOOLEAN (*isEof)(struct IResultSet* self, struct IStatus* status); + FB_BOOLEAN (*isBof)(struct IResultSet* self, struct IStatus* status); + struct IMessageMetadata* (*getMetadata)(struct IResultSet* self, struct IStatus* status); + void (*deprecatedClose)(struct IResultSet* self, struct IStatus* status); + void (*setDelayedOutputFormat)(struct IResultSet* self, struct IStatus* status, struct IMessageMetadata* format); + void (*close)(struct IResultSet* self, struct IStatus* status); + void (*getInfo)(struct IResultSet* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); +}; + +struct IResultSet +{ + void* cloopDummy[1]; + struct IResultSetVTable* vtable; +}; + +CLOOP_EXTERN_C void IResultSet_addRef(struct IResultSet* self); +CLOOP_EXTERN_C int IResultSet_release(struct IResultSet* self); +CLOOP_EXTERN_C int IResultSet_fetchNext(struct IResultSet* self, struct IStatus* status, void* message); +CLOOP_EXTERN_C int IResultSet_fetchPrior(struct IResultSet* self, struct IStatus* status, void* message); +CLOOP_EXTERN_C int IResultSet_fetchFirst(struct IResultSet* self, struct IStatus* status, void* message); +CLOOP_EXTERN_C int IResultSet_fetchLast(struct IResultSet* self, struct IStatus* status, void* message); +CLOOP_EXTERN_C int IResultSet_fetchAbsolute(struct IResultSet* self, struct IStatus* status, int position, void* message); +CLOOP_EXTERN_C int IResultSet_fetchRelative(struct IResultSet* self, struct IStatus* status, int offset, void* message); +CLOOP_EXTERN_C FB_BOOLEAN IResultSet_isEof(struct IResultSet* self, struct IStatus* status); +CLOOP_EXTERN_C FB_BOOLEAN IResultSet_isBof(struct IResultSet* self, struct IStatus* status); +CLOOP_EXTERN_C struct IMessageMetadata* IResultSet_getMetadata(struct IResultSet* self, struct IStatus* status); +CLOOP_EXTERN_C void IResultSet_deprecatedClose(struct IResultSet* self, struct IStatus* status); +CLOOP_EXTERN_C void IResultSet_setDelayedOutputFormat(struct IResultSet* self, struct IStatus* status, struct IMessageMetadata* format); +CLOOP_EXTERN_C void IResultSet_close(struct IResultSet* self, struct IStatus* status); +CLOOP_EXTERN_C void IResultSet_getInfo(struct IResultSet* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); + +#define IStatement_VERSION 5 + +#define IStatement_PREPARE_PREFETCH_NONE ((unsigned) (0x0)) +#define IStatement_PREPARE_PREFETCH_TYPE ((unsigned) (0x1)) +#define IStatement_PREPARE_PREFETCH_INPUT_PARAMETERS ((unsigned) (0x2)) +#define IStatement_PREPARE_PREFETCH_OUTPUT_PARAMETERS ((unsigned) (0x4)) +#define IStatement_PREPARE_PREFETCH_LEGACY_PLAN ((unsigned) (0x8)) +#define IStatement_PREPARE_PREFETCH_DETAILED_PLAN ((unsigned) (0x10)) +#define IStatement_PREPARE_PREFETCH_AFFECTED_RECORDS ((unsigned) (0x20)) +#define IStatement_PREPARE_PREFETCH_FLAGS ((unsigned) (0x40)) +#define IStatement_PREPARE_REQUIRE_SEMICOLON ((unsigned) (0x80)) +#define IStatement_PREPARE_PREFETCH_METADATA ((unsigned) (IStatement_PREPARE_PREFETCH_TYPE | IStatement_PREPARE_PREFETCH_FLAGS | IStatement_PREPARE_PREFETCH_INPUT_PARAMETERS | IStatement_PREPARE_PREFETCH_OUTPUT_PARAMETERS)) +#define IStatement_PREPARE_PREFETCH_ALL ((unsigned) (IStatement_PREPARE_PREFETCH_METADATA | IStatement_PREPARE_PREFETCH_LEGACY_PLAN | IStatement_PREPARE_PREFETCH_DETAILED_PLAN | IStatement_PREPARE_PREFETCH_AFFECTED_RECORDS)) +#define IStatement_FLAG_HAS_CURSOR ((unsigned) (0x1)) +#define IStatement_FLAG_REPEAT_EXECUTE ((unsigned) (0x2)) +#define IStatement_CURSOR_TYPE_SCROLLABLE ((unsigned) (0x1)) + +struct IStatement; + +struct IStatementVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IStatement* self); + int (*release)(struct IStatement* self); + void (*getInfo)(struct IStatement* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); + unsigned (*getType)(struct IStatement* self, struct IStatus* status); + const char* (*getPlan)(struct IStatement* self, struct IStatus* status, FB_BOOLEAN detailed); + ISC_UINT64 (*getAffectedRecords)(struct IStatement* self, struct IStatus* status); + struct IMessageMetadata* (*getInputMetadata)(struct IStatement* self, struct IStatus* status); + struct IMessageMetadata* (*getOutputMetadata)(struct IStatement* self, struct IStatus* status); + struct ITransaction* (*execute)(struct IStatement* self, struct IStatus* status, struct ITransaction* transaction, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, void* outBuffer); + struct IResultSet* (*openCursor)(struct IStatement* self, struct IStatus* status, struct ITransaction* transaction, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, unsigned flags); + void (*setCursorName)(struct IStatement* self, struct IStatus* status, const char* name); + void (*deprecatedFree)(struct IStatement* self, struct IStatus* status); + unsigned (*getFlags)(struct IStatement* self, struct IStatus* status); + unsigned (*getTimeout)(struct IStatement* self, struct IStatus* status); + void (*setTimeout)(struct IStatement* self, struct IStatus* status, unsigned timeOut); + struct IBatch* (*createBatch)(struct IStatement* self, struct IStatus* status, struct IMessageMetadata* inMetadata, unsigned parLength, const unsigned char* par); + void (*free)(struct IStatement* self, struct IStatus* status); +}; + +struct IStatement +{ + void* cloopDummy[1]; + struct IStatementVTable* vtable; +}; + +CLOOP_EXTERN_C void IStatement_addRef(struct IStatement* self); +CLOOP_EXTERN_C int IStatement_release(struct IStatement* self); +CLOOP_EXTERN_C void IStatement_getInfo(struct IStatement* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); +CLOOP_EXTERN_C unsigned IStatement_getType(struct IStatement* self, struct IStatus* status); +CLOOP_EXTERN_C const char* IStatement_getPlan(struct IStatement* self, struct IStatus* status, FB_BOOLEAN detailed); +CLOOP_EXTERN_C ISC_UINT64 IStatement_getAffectedRecords(struct IStatement* self, struct IStatus* status); +CLOOP_EXTERN_C struct IMessageMetadata* IStatement_getInputMetadata(struct IStatement* self, struct IStatus* status); +CLOOP_EXTERN_C struct IMessageMetadata* IStatement_getOutputMetadata(struct IStatement* self, struct IStatus* status); +CLOOP_EXTERN_C struct ITransaction* IStatement_execute(struct IStatement* self, struct IStatus* status, struct ITransaction* transaction, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, void* outBuffer); +CLOOP_EXTERN_C struct IResultSet* IStatement_openCursor(struct IStatement* self, struct IStatus* status, struct ITransaction* transaction, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, unsigned flags); +CLOOP_EXTERN_C void IStatement_setCursorName(struct IStatement* self, struct IStatus* status, const char* name); +CLOOP_EXTERN_C void IStatement_deprecatedFree(struct IStatement* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IStatement_getFlags(struct IStatement* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IStatement_getTimeout(struct IStatement* self, struct IStatus* status); +CLOOP_EXTERN_C void IStatement_setTimeout(struct IStatement* self, struct IStatus* status, unsigned timeOut); +CLOOP_EXTERN_C struct IBatch* IStatement_createBatch(struct IStatement* self, struct IStatus* status, struct IMessageMetadata* inMetadata, unsigned parLength, const unsigned char* par); +CLOOP_EXTERN_C void IStatement_free(struct IStatement* self, struct IStatus* status); + +#define IBatch_VERSION 4 + +#define IBatch_VERSION1 ((unsigned char) (1)) +#define IBatch_CURRENT_VERSION ((unsigned char) (IBatch_VERSION1)) +#define IBatch_TAG_MULTIERROR ((unsigned char) (1)) +#define IBatch_TAG_RECORD_COUNTS ((unsigned char) (2)) +#define IBatch_TAG_BUFFER_BYTES_SIZE ((unsigned char) (3)) +#define IBatch_TAG_BLOB_POLICY ((unsigned char) (4)) +#define IBatch_TAG_DETAILED_ERRORS ((unsigned char) (5)) +#define IBatch_INF_BUFFER_BYTES_SIZE ((unsigned char) (10)) +#define IBatch_INF_DATA_BYTES_SIZE ((unsigned char) (11)) +#define IBatch_INF_BLOBS_BYTES_SIZE ((unsigned char) (12)) +#define IBatch_INF_BLOB_ALIGNMENT ((unsigned char) (13)) +#define IBatch_INF_BLOB_HEADER ((unsigned char) (14)) +#define IBatch_BLOB_NONE ((unsigned char) (0)) +#define IBatch_BLOB_ID_ENGINE ((unsigned char) (1)) +#define IBatch_BLOB_ID_USER ((unsigned char) (2)) +#define IBatch_BLOB_STREAM ((unsigned char) (3)) +#define IBatch_BLOB_SEGHDR_ALIGN ((unsigned) (2)) + +struct IBatch; + +struct IBatchVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IBatch* self); + int (*release)(struct IBatch* self); + void (*add)(struct IBatch* self, struct IStatus* status, unsigned count, const void* inBuffer); + void (*addBlob)(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer, ISC_QUAD* blobId, unsigned parLength, const unsigned char* par); + void (*appendBlobData)(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer); + void (*addBlobStream)(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer); + void (*registerBlob)(struct IBatch* self, struct IStatus* status, const ISC_QUAD* existingBlob, ISC_QUAD* blobId); + struct IBatchCompletionState* (*execute)(struct IBatch* self, struct IStatus* status, struct ITransaction* transaction); + void (*cancel)(struct IBatch* self, struct IStatus* status); + unsigned (*getBlobAlignment)(struct IBatch* self, struct IStatus* status); + struct IMessageMetadata* (*getMetadata)(struct IBatch* self, struct IStatus* status); + void (*setDefaultBpb)(struct IBatch* self, struct IStatus* status, unsigned parLength, const unsigned char* par); + void (*deprecatedClose)(struct IBatch* self, struct IStatus* status); + void (*close)(struct IBatch* self, struct IStatus* status); + void (*getInfo)(struct IBatch* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); +}; + +struct IBatch +{ + void* cloopDummy[1]; + struct IBatchVTable* vtable; +}; + +CLOOP_EXTERN_C void IBatch_addRef(struct IBatch* self); +CLOOP_EXTERN_C int IBatch_release(struct IBatch* self); +CLOOP_EXTERN_C void IBatch_add(struct IBatch* self, struct IStatus* status, unsigned count, const void* inBuffer); +CLOOP_EXTERN_C void IBatch_addBlob(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer, ISC_QUAD* blobId, unsigned parLength, const unsigned char* par); +CLOOP_EXTERN_C void IBatch_appendBlobData(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer); +CLOOP_EXTERN_C void IBatch_addBlobStream(struct IBatch* self, struct IStatus* status, unsigned length, const void* inBuffer); +CLOOP_EXTERN_C void IBatch_registerBlob(struct IBatch* self, struct IStatus* status, const ISC_QUAD* existingBlob, ISC_QUAD* blobId); +CLOOP_EXTERN_C struct IBatchCompletionState* IBatch_execute(struct IBatch* self, struct IStatus* status, struct ITransaction* transaction); +CLOOP_EXTERN_C void IBatch_cancel(struct IBatch* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IBatch_getBlobAlignment(struct IBatch* self, struct IStatus* status); +CLOOP_EXTERN_C struct IMessageMetadata* IBatch_getMetadata(struct IBatch* self, struct IStatus* status); +CLOOP_EXTERN_C void IBatch_setDefaultBpb(struct IBatch* self, struct IStatus* status, unsigned parLength, const unsigned char* par); +CLOOP_EXTERN_C void IBatch_deprecatedClose(struct IBatch* self, struct IStatus* status); +CLOOP_EXTERN_C void IBatch_close(struct IBatch* self, struct IStatus* status); +CLOOP_EXTERN_C void IBatch_getInfo(struct IBatch* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); + +#define IBatchCompletionState_VERSION 3 + +#define IBatchCompletionState_EXECUTE_FAILED ((int) (-1)) +#define IBatchCompletionState_SUCCESS_NO_INFO ((int) (-2)) +#define IBatchCompletionState_NO_MORE_ERRORS ((unsigned) (0xffffffff)) + +struct IBatchCompletionState; + +struct IBatchCompletionStateVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IBatchCompletionState* self); + unsigned (*getSize)(struct IBatchCompletionState* self, struct IStatus* status); + int (*getState)(struct IBatchCompletionState* self, struct IStatus* status, unsigned pos); + unsigned (*findError)(struct IBatchCompletionState* self, struct IStatus* status, unsigned pos); + void (*getStatus)(struct IBatchCompletionState* self, struct IStatus* status, struct IStatus* to, unsigned pos); +}; + +struct IBatchCompletionState +{ + void* cloopDummy[1]; + struct IBatchCompletionStateVTable* vtable; +}; + +CLOOP_EXTERN_C void IBatchCompletionState_dispose(struct IBatchCompletionState* self); +CLOOP_EXTERN_C unsigned IBatchCompletionState_getSize(struct IBatchCompletionState* self, struct IStatus* status); +CLOOP_EXTERN_C int IBatchCompletionState_getState(struct IBatchCompletionState* self, struct IStatus* status, unsigned pos); +CLOOP_EXTERN_C unsigned IBatchCompletionState_findError(struct IBatchCompletionState* self, struct IStatus* status, unsigned pos); +CLOOP_EXTERN_C void IBatchCompletionState_getStatus(struct IBatchCompletionState* self, struct IStatus* status, struct IStatus* to, unsigned pos); + +#define IReplicator_VERSION 4 + +struct IReplicator; + +struct IReplicatorVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IReplicator* self); + int (*release)(struct IReplicator* self); + void (*process)(struct IReplicator* self, struct IStatus* status, unsigned length, const unsigned char* data); + void (*deprecatedClose)(struct IReplicator* self, struct IStatus* status); + void (*close)(struct IReplicator* self, struct IStatus* status); +}; + +struct IReplicator +{ + void* cloopDummy[1]; + struct IReplicatorVTable* vtable; +}; + +CLOOP_EXTERN_C void IReplicator_addRef(struct IReplicator* self); +CLOOP_EXTERN_C int IReplicator_release(struct IReplicator* self); +CLOOP_EXTERN_C void IReplicator_process(struct IReplicator* self, struct IStatus* status, unsigned length, const unsigned char* data); +CLOOP_EXTERN_C void IReplicator_deprecatedClose(struct IReplicator* self, struct IStatus* status); +CLOOP_EXTERN_C void IReplicator_close(struct IReplicator* self, struct IStatus* status); + +#define IRequest_VERSION 4 + +struct IRequest; + +struct IRequestVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IRequest* self); + int (*release)(struct IRequest* self); + void (*receive)(struct IRequest* self, struct IStatus* status, int level, unsigned msgType, unsigned length, void* message); + void (*send)(struct IRequest* self, struct IStatus* status, int level, unsigned msgType, unsigned length, const void* message); + void (*getInfo)(struct IRequest* self, struct IStatus* status, int level, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); + void (*start)(struct IRequest* self, struct IStatus* status, struct ITransaction* tra, int level); + void (*startAndSend)(struct IRequest* self, struct IStatus* status, struct ITransaction* tra, int level, unsigned msgType, unsigned length, const void* message); + void (*unwind)(struct IRequest* self, struct IStatus* status, int level); + void (*deprecatedFree)(struct IRequest* self, struct IStatus* status); + void (*free)(struct IRequest* self, struct IStatus* status); +}; + +struct IRequest +{ + void* cloopDummy[1]; + struct IRequestVTable* vtable; +}; + +CLOOP_EXTERN_C void IRequest_addRef(struct IRequest* self); +CLOOP_EXTERN_C int IRequest_release(struct IRequest* self); +CLOOP_EXTERN_C void IRequest_receive(struct IRequest* self, struct IStatus* status, int level, unsigned msgType, unsigned length, void* message); +CLOOP_EXTERN_C void IRequest_send(struct IRequest* self, struct IStatus* status, int level, unsigned msgType, unsigned length, const void* message); +CLOOP_EXTERN_C void IRequest_getInfo(struct IRequest* self, struct IStatus* status, int level, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); +CLOOP_EXTERN_C void IRequest_start(struct IRequest* self, struct IStatus* status, struct ITransaction* tra, int level); +CLOOP_EXTERN_C void IRequest_startAndSend(struct IRequest* self, struct IStatus* status, struct ITransaction* tra, int level, unsigned msgType, unsigned length, const void* message); +CLOOP_EXTERN_C void IRequest_unwind(struct IRequest* self, struct IStatus* status, int level); +CLOOP_EXTERN_C void IRequest_deprecatedFree(struct IRequest* self, struct IStatus* status); +CLOOP_EXTERN_C void IRequest_free(struct IRequest* self, struct IStatus* status); + +#define IEvents_VERSION 4 + +struct IEvents; + +struct IEventsVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IEvents* self); + int (*release)(struct IEvents* self); + void (*deprecatedCancel)(struct IEvents* self, struct IStatus* status); + void (*cancel)(struct IEvents* self, struct IStatus* status); +}; + +struct IEvents +{ + void* cloopDummy[1]; + struct IEventsVTable* vtable; +}; + +CLOOP_EXTERN_C void IEvents_addRef(struct IEvents* self); +CLOOP_EXTERN_C int IEvents_release(struct IEvents* self); +CLOOP_EXTERN_C void IEvents_deprecatedCancel(struct IEvents* self, struct IStatus* status); +CLOOP_EXTERN_C void IEvents_cancel(struct IEvents* self, struct IStatus* status); + +#define IAttachment_VERSION 5 + +struct IAttachment; + +struct IAttachmentVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IAttachment* self); + int (*release)(struct IAttachment* self); + void (*getInfo)(struct IAttachment* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); + struct ITransaction* (*startTransaction)(struct IAttachment* self, struct IStatus* status, unsigned tpbLength, const unsigned char* tpb); + struct ITransaction* (*reconnectTransaction)(struct IAttachment* self, struct IStatus* status, unsigned length, const unsigned char* id); + struct IRequest* (*compileRequest)(struct IAttachment* self, struct IStatus* status, unsigned blrLength, const unsigned char* blr); + void (*transactRequest)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned blrLength, const unsigned char* blr, unsigned inMsgLength, const unsigned char* inMsg, unsigned outMsgLength, unsigned char* outMsg); + struct IBlob* (*createBlob)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned bpbLength, const unsigned char* bpb); + struct IBlob* (*openBlob)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned bpbLength, const unsigned char* bpb); + int (*getSlice)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned sdlLength, const unsigned char* sdl, unsigned paramLength, const unsigned char* param, int sliceLength, unsigned char* slice); + void (*putSlice)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned sdlLength, const unsigned char* sdl, unsigned paramLength, const unsigned char* param, int sliceLength, unsigned char* slice); + void (*executeDyn)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned length, const unsigned char* dyn); + struct IStatement* (*prepare)(struct IAttachment* self, struct IStatus* status, struct ITransaction* tra, unsigned stmtLength, const char* sqlStmt, unsigned dialect, unsigned flags); + struct ITransaction* (*execute)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, void* outBuffer); + struct IResultSet* (*openCursor)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, const char* cursorName, unsigned cursorFlags); + struct IEvents* (*queEvents)(struct IAttachment* self, struct IStatus* status, struct IEventCallback* callback, unsigned length, const unsigned char* events); + void (*cancelOperation)(struct IAttachment* self, struct IStatus* status, int option); + void (*ping)(struct IAttachment* self, struct IStatus* status); + void (*deprecatedDetach)(struct IAttachment* self, struct IStatus* status); + void (*deprecatedDropDatabase)(struct IAttachment* self, struct IStatus* status); + unsigned (*getIdleTimeout)(struct IAttachment* self, struct IStatus* status); + void (*setIdleTimeout)(struct IAttachment* self, struct IStatus* status, unsigned timeOut); + unsigned (*getStatementTimeout)(struct IAttachment* self, struct IStatus* status); + void (*setStatementTimeout)(struct IAttachment* self, struct IStatus* status, unsigned timeOut); + struct IBatch* (*createBatch)(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, unsigned parLength, const unsigned char* par); + struct IReplicator* (*createReplicator)(struct IAttachment* self, struct IStatus* status); + void (*detach)(struct IAttachment* self, struct IStatus* status); + void (*dropDatabase)(struct IAttachment* self, struct IStatus* status); +}; + +struct IAttachment +{ + void* cloopDummy[1]; + struct IAttachmentVTable* vtable; +}; + +CLOOP_EXTERN_C void IAttachment_addRef(struct IAttachment* self); +CLOOP_EXTERN_C int IAttachment_release(struct IAttachment* self); +CLOOP_EXTERN_C void IAttachment_getInfo(struct IAttachment* self, struct IStatus* status, unsigned itemsLength, const unsigned char* items, unsigned bufferLength, unsigned char* buffer); +CLOOP_EXTERN_C struct ITransaction* IAttachment_startTransaction(struct IAttachment* self, struct IStatus* status, unsigned tpbLength, const unsigned char* tpb); +CLOOP_EXTERN_C struct ITransaction* IAttachment_reconnectTransaction(struct IAttachment* self, struct IStatus* status, unsigned length, const unsigned char* id); +CLOOP_EXTERN_C struct IRequest* IAttachment_compileRequest(struct IAttachment* self, struct IStatus* status, unsigned blrLength, const unsigned char* blr); +CLOOP_EXTERN_C void IAttachment_transactRequest(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned blrLength, const unsigned char* blr, unsigned inMsgLength, const unsigned char* inMsg, unsigned outMsgLength, unsigned char* outMsg); +CLOOP_EXTERN_C struct IBlob* IAttachment_createBlob(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned bpbLength, const unsigned char* bpb); +CLOOP_EXTERN_C struct IBlob* IAttachment_openBlob(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned bpbLength, const unsigned char* bpb); +CLOOP_EXTERN_C int IAttachment_getSlice(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned sdlLength, const unsigned char* sdl, unsigned paramLength, const unsigned char* param, int sliceLength, unsigned char* slice); +CLOOP_EXTERN_C void IAttachment_putSlice(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, ISC_QUAD* id, unsigned sdlLength, const unsigned char* sdl, unsigned paramLength, const unsigned char* param, int sliceLength, unsigned char* slice); +CLOOP_EXTERN_C void IAttachment_executeDyn(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned length, const unsigned char* dyn); +CLOOP_EXTERN_C struct IStatement* IAttachment_prepare(struct IAttachment* self, struct IStatus* status, struct ITransaction* tra, unsigned stmtLength, const char* sqlStmt, unsigned dialect, unsigned flags); +CLOOP_EXTERN_C struct ITransaction* IAttachment_execute(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, void* outBuffer); +CLOOP_EXTERN_C struct IResultSet* IAttachment_openCursor(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, void* inBuffer, struct IMessageMetadata* outMetadata, const char* cursorName, unsigned cursorFlags); +CLOOP_EXTERN_C struct IEvents* IAttachment_queEvents(struct IAttachment* self, struct IStatus* status, struct IEventCallback* callback, unsigned length, const unsigned char* events); +CLOOP_EXTERN_C void IAttachment_cancelOperation(struct IAttachment* self, struct IStatus* status, int option); +CLOOP_EXTERN_C void IAttachment_ping(struct IAttachment* self, struct IStatus* status); +CLOOP_EXTERN_C void IAttachment_deprecatedDetach(struct IAttachment* self, struct IStatus* status); +CLOOP_EXTERN_C void IAttachment_deprecatedDropDatabase(struct IAttachment* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IAttachment_getIdleTimeout(struct IAttachment* self, struct IStatus* status); +CLOOP_EXTERN_C void IAttachment_setIdleTimeout(struct IAttachment* self, struct IStatus* status, unsigned timeOut); +CLOOP_EXTERN_C unsigned IAttachment_getStatementTimeout(struct IAttachment* self, struct IStatus* status); +CLOOP_EXTERN_C void IAttachment_setStatementTimeout(struct IAttachment* self, struct IStatus* status, unsigned timeOut); +CLOOP_EXTERN_C struct IBatch* IAttachment_createBatch(struct IAttachment* self, struct IStatus* status, struct ITransaction* transaction, unsigned stmtLength, const char* sqlStmt, unsigned dialect, struct IMessageMetadata* inMetadata, unsigned parLength, const unsigned char* par); +CLOOP_EXTERN_C struct IReplicator* IAttachment_createReplicator(struct IAttachment* self, struct IStatus* status); +CLOOP_EXTERN_C void IAttachment_detach(struct IAttachment* self, struct IStatus* status); +CLOOP_EXTERN_C void IAttachment_dropDatabase(struct IAttachment* self, struct IStatus* status); + +#define IService_VERSION 5 + +struct IService; + +struct IServiceVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IService* self); + int (*release)(struct IService* self); + void (*deprecatedDetach)(struct IService* self, struct IStatus* status); + void (*query)(struct IService* self, struct IStatus* status, unsigned sendLength, const unsigned char* sendItems, unsigned receiveLength, const unsigned char* receiveItems, unsigned bufferLength, unsigned char* buffer); + void (*start)(struct IService* self, struct IStatus* status, unsigned spbLength, const unsigned char* spb); + void (*detach)(struct IService* self, struct IStatus* status); + void (*cancel)(struct IService* self, struct IStatus* status); +}; + +struct IService +{ + void* cloopDummy[1]; + struct IServiceVTable* vtable; +}; + +CLOOP_EXTERN_C void IService_addRef(struct IService* self); +CLOOP_EXTERN_C int IService_release(struct IService* self); +CLOOP_EXTERN_C void IService_deprecatedDetach(struct IService* self, struct IStatus* status); +CLOOP_EXTERN_C void IService_query(struct IService* self, struct IStatus* status, unsigned sendLength, const unsigned char* sendItems, unsigned receiveLength, const unsigned char* receiveItems, unsigned bufferLength, unsigned char* buffer); +CLOOP_EXTERN_C void IService_start(struct IService* self, struct IStatus* status, unsigned spbLength, const unsigned char* spb); +CLOOP_EXTERN_C void IService_detach(struct IService* self, struct IStatus* status); +CLOOP_EXTERN_C void IService_cancel(struct IService* self, struct IStatus* status); + +#define IProvider_VERSION 4 + +struct IProvider; + +struct IProviderVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IProvider* self); + int (*release)(struct IProvider* self); + void (*setOwner)(struct IProvider* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IProvider* self); + struct IAttachment* (*attachDatabase)(struct IProvider* self, struct IStatus* status, const char* fileName, unsigned dpbLength, const unsigned char* dpb); + struct IAttachment* (*createDatabase)(struct IProvider* self, struct IStatus* status, const char* fileName, unsigned dpbLength, const unsigned char* dpb); + struct IService* (*attachServiceManager)(struct IProvider* self, struct IStatus* status, const char* service, unsigned spbLength, const unsigned char* spb); + void (*shutdown)(struct IProvider* self, struct IStatus* status, unsigned timeout, const int reason); + void (*setDbCryptCallback)(struct IProvider* self, struct IStatus* status, struct ICryptKeyCallback* cryptCallback); +}; + +struct IProvider +{ + void* cloopDummy[1]; + struct IProviderVTable* vtable; +}; + +CLOOP_EXTERN_C void IProvider_addRef(struct IProvider* self); +CLOOP_EXTERN_C int IProvider_release(struct IProvider* self); +CLOOP_EXTERN_C void IProvider_setOwner(struct IProvider* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IProvider_getOwner(struct IProvider* self); +CLOOP_EXTERN_C struct IAttachment* IProvider_attachDatabase(struct IProvider* self, struct IStatus* status, const char* fileName, unsigned dpbLength, const unsigned char* dpb); +CLOOP_EXTERN_C struct IAttachment* IProvider_createDatabase(struct IProvider* self, struct IStatus* status, const char* fileName, unsigned dpbLength, const unsigned char* dpb); +CLOOP_EXTERN_C struct IService* IProvider_attachServiceManager(struct IProvider* self, struct IStatus* status, const char* service, unsigned spbLength, const unsigned char* spb); +CLOOP_EXTERN_C void IProvider_shutdown(struct IProvider* self, struct IStatus* status, unsigned timeout, const int reason); +CLOOP_EXTERN_C void IProvider_setDbCryptCallback(struct IProvider* self, struct IStatus* status, struct ICryptKeyCallback* cryptCallback); + +#define IDtcStart_VERSION 3 + +struct IDtcStart; + +struct IDtcStartVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IDtcStart* self); + void (*addAttachment)(struct IDtcStart* self, struct IStatus* status, struct IAttachment* att); + void (*addWithTpb)(struct IDtcStart* self, struct IStatus* status, struct IAttachment* att, unsigned length, const unsigned char* tpb); + struct ITransaction* (*start)(struct IDtcStart* self, struct IStatus* status); +}; + +struct IDtcStart +{ + void* cloopDummy[1]; + struct IDtcStartVTable* vtable; +}; + +CLOOP_EXTERN_C void IDtcStart_dispose(struct IDtcStart* self); +CLOOP_EXTERN_C void IDtcStart_addAttachment(struct IDtcStart* self, struct IStatus* status, struct IAttachment* att); +CLOOP_EXTERN_C void IDtcStart_addWithTpb(struct IDtcStart* self, struct IStatus* status, struct IAttachment* att, unsigned length, const unsigned char* tpb); +CLOOP_EXTERN_C struct ITransaction* IDtcStart_start(struct IDtcStart* self, struct IStatus* status); + +#define IDtc_VERSION 2 + +struct IDtc; + +struct IDtcVTable +{ + void* cloopDummy[1]; + uintptr_t version; + struct ITransaction* (*join)(struct IDtc* self, struct IStatus* status, struct ITransaction* one, struct ITransaction* two); + struct IDtcStart* (*startBuilder)(struct IDtc* self, struct IStatus* status); +}; + +struct IDtc +{ + void* cloopDummy[1]; + struct IDtcVTable* vtable; +}; + +CLOOP_EXTERN_C struct ITransaction* IDtc_join(struct IDtc* self, struct IStatus* status, struct ITransaction* one, struct ITransaction* two); +CLOOP_EXTERN_C struct IDtcStart* IDtc_startBuilder(struct IDtc* self, struct IStatus* status); + +#define IAuth_VERSION 4 + +#define IAuth_AUTH_FAILED ((int) (-1)) +#define IAuth_AUTH_SUCCESS ((int) (0)) +#define IAuth_AUTH_MORE_DATA ((int) (1)) +#define IAuth_AUTH_CONTINUE ((int) (2)) + +struct IAuth; + +struct IAuthVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IAuth* self); + int (*release)(struct IAuth* self); + void (*setOwner)(struct IAuth* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IAuth* self); +}; + +struct IAuth +{ + void* cloopDummy[1]; + struct IAuthVTable* vtable; +}; + +CLOOP_EXTERN_C void IAuth_addRef(struct IAuth* self); +CLOOP_EXTERN_C int IAuth_release(struct IAuth* self); +CLOOP_EXTERN_C void IAuth_setOwner(struct IAuth* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IAuth_getOwner(struct IAuth* self); + +#define IWriter_VERSION 2 + +struct IWriter; + +struct IWriterVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*reset)(struct IWriter* self); + void (*add)(struct IWriter* self, struct IStatus* status, const char* name); + void (*setType)(struct IWriter* self, struct IStatus* status, const char* value); + void (*setDb)(struct IWriter* self, struct IStatus* status, const char* value); +}; + +struct IWriter +{ + void* cloopDummy[1]; + struct IWriterVTable* vtable; +}; + +CLOOP_EXTERN_C void IWriter_reset(struct IWriter* self); +CLOOP_EXTERN_C void IWriter_add(struct IWriter* self, struct IStatus* status, const char* name); +CLOOP_EXTERN_C void IWriter_setType(struct IWriter* self, struct IStatus* status, const char* value); +CLOOP_EXTERN_C void IWriter_setDb(struct IWriter* self, struct IStatus* status, const char* value); + +#define IServerBlock_VERSION 2 + +struct IServerBlock; + +struct IServerBlockVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getLogin)(struct IServerBlock* self); + const unsigned char* (*getData)(struct IServerBlock* self, unsigned* length); + void (*putData)(struct IServerBlock* self, struct IStatus* status, unsigned length, const void* data); + struct ICryptKey* (*newKey)(struct IServerBlock* self, struct IStatus* status); +}; + +struct IServerBlock +{ + void* cloopDummy[1]; + struct IServerBlockVTable* vtable; +}; + +CLOOP_EXTERN_C const char* IServerBlock_getLogin(struct IServerBlock* self); +CLOOP_EXTERN_C const unsigned char* IServerBlock_getData(struct IServerBlock* self, unsigned* length); +CLOOP_EXTERN_C void IServerBlock_putData(struct IServerBlock* self, struct IStatus* status, unsigned length, const void* data); +CLOOP_EXTERN_C struct ICryptKey* IServerBlock_newKey(struct IServerBlock* self, struct IStatus* status); + +#define IClientBlock_VERSION 4 + +struct IClientBlock; + +struct IClientBlockVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IClientBlock* self); + int (*release)(struct IClientBlock* self); + const char* (*getLogin)(struct IClientBlock* self); + const char* (*getPassword)(struct IClientBlock* self); + const unsigned char* (*getData)(struct IClientBlock* self, unsigned* length); + void (*putData)(struct IClientBlock* self, struct IStatus* status, unsigned length, const void* data); + struct ICryptKey* (*newKey)(struct IClientBlock* self, struct IStatus* status); + struct IAuthBlock* (*getAuthBlock)(struct IClientBlock* self, struct IStatus* status); +}; + +struct IClientBlock +{ + void* cloopDummy[1]; + struct IClientBlockVTable* vtable; +}; + +CLOOP_EXTERN_C void IClientBlock_addRef(struct IClientBlock* self); +CLOOP_EXTERN_C int IClientBlock_release(struct IClientBlock* self); +CLOOP_EXTERN_C const char* IClientBlock_getLogin(struct IClientBlock* self); +CLOOP_EXTERN_C const char* IClientBlock_getPassword(struct IClientBlock* self); +CLOOP_EXTERN_C const unsigned char* IClientBlock_getData(struct IClientBlock* self, unsigned* length); +CLOOP_EXTERN_C void IClientBlock_putData(struct IClientBlock* self, struct IStatus* status, unsigned length, const void* data); +CLOOP_EXTERN_C struct ICryptKey* IClientBlock_newKey(struct IClientBlock* self, struct IStatus* status); +CLOOP_EXTERN_C struct IAuthBlock* IClientBlock_getAuthBlock(struct IClientBlock* self, struct IStatus* status); + +#define IServer_VERSION 6 + +struct IServer; + +struct IServerVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IServer* self); + int (*release)(struct IServer* self); + void (*setOwner)(struct IServer* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IServer* self); + int (*authenticate)(struct IServer* self, struct IStatus* status, struct IServerBlock* sBlock, struct IWriter* writerInterface); + void (*setDbCryptCallback)(struct IServer* self, struct IStatus* status, struct ICryptKeyCallback* cryptCallback); +}; + +struct IServer +{ + void* cloopDummy[1]; + struct IServerVTable* vtable; +}; + +CLOOP_EXTERN_C void IServer_addRef(struct IServer* self); +CLOOP_EXTERN_C int IServer_release(struct IServer* self); +CLOOP_EXTERN_C void IServer_setOwner(struct IServer* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IServer_getOwner(struct IServer* self); +CLOOP_EXTERN_C int IServer_authenticate(struct IServer* self, struct IStatus* status, struct IServerBlock* sBlock, struct IWriter* writerInterface); +CLOOP_EXTERN_C void IServer_setDbCryptCallback(struct IServer* self, struct IStatus* status, struct ICryptKeyCallback* cryptCallback); + +#define IClient_VERSION 5 + +struct IClient; + +struct IClientVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IClient* self); + int (*release)(struct IClient* self); + void (*setOwner)(struct IClient* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IClient* self); + int (*authenticate)(struct IClient* self, struct IStatus* status, struct IClientBlock* cBlock); +}; + +struct IClient +{ + void* cloopDummy[1]; + struct IClientVTable* vtable; +}; + +CLOOP_EXTERN_C void IClient_addRef(struct IClient* self); +CLOOP_EXTERN_C int IClient_release(struct IClient* self); +CLOOP_EXTERN_C void IClient_setOwner(struct IClient* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IClient_getOwner(struct IClient* self); +CLOOP_EXTERN_C int IClient_authenticate(struct IClient* self, struct IStatus* status, struct IClientBlock* cBlock); + +#define IUserField_VERSION 2 + +struct IUserField; + +struct IUserFieldVTable +{ + void* cloopDummy[1]; + uintptr_t version; + int (*entered)(struct IUserField* self); + int (*specified)(struct IUserField* self); + void (*setEntered)(struct IUserField* self, struct IStatus* status, int newValue); +}; + +struct IUserField +{ + void* cloopDummy[1]; + struct IUserFieldVTable* vtable; +}; + +CLOOP_EXTERN_C int IUserField_entered(struct IUserField* self); +CLOOP_EXTERN_C int IUserField_specified(struct IUserField* self); +CLOOP_EXTERN_C void IUserField_setEntered(struct IUserField* self, struct IStatus* status, int newValue); + +#define ICharUserField_VERSION 3 + +struct ICharUserField; + +struct ICharUserFieldVTable +{ + void* cloopDummy[1]; + uintptr_t version; + int (*entered)(struct ICharUserField* self); + int (*specified)(struct ICharUserField* self); + void (*setEntered)(struct ICharUserField* self, struct IStatus* status, int newValue); + const char* (*get)(struct ICharUserField* self); + void (*set)(struct ICharUserField* self, struct IStatus* status, const char* newValue); +}; + +struct ICharUserField +{ + void* cloopDummy[1]; + struct ICharUserFieldVTable* vtable; +}; + +CLOOP_EXTERN_C int ICharUserField_entered(struct ICharUserField* self); +CLOOP_EXTERN_C int ICharUserField_specified(struct ICharUserField* self); +CLOOP_EXTERN_C void ICharUserField_setEntered(struct ICharUserField* self, struct IStatus* status, int newValue); +CLOOP_EXTERN_C const char* ICharUserField_get(struct ICharUserField* self); +CLOOP_EXTERN_C void ICharUserField_set(struct ICharUserField* self, struct IStatus* status, const char* newValue); + +#define IIntUserField_VERSION 3 + +struct IIntUserField; + +struct IIntUserFieldVTable +{ + void* cloopDummy[1]; + uintptr_t version; + int (*entered)(struct IIntUserField* self); + int (*specified)(struct IIntUserField* self); + void (*setEntered)(struct IIntUserField* self, struct IStatus* status, int newValue); + int (*get)(struct IIntUserField* self); + void (*set)(struct IIntUserField* self, struct IStatus* status, int newValue); +}; + +struct IIntUserField +{ + void* cloopDummy[1]; + struct IIntUserFieldVTable* vtable; +}; + +CLOOP_EXTERN_C int IIntUserField_entered(struct IIntUserField* self); +CLOOP_EXTERN_C int IIntUserField_specified(struct IIntUserField* self); +CLOOP_EXTERN_C void IIntUserField_setEntered(struct IIntUserField* self, struct IStatus* status, int newValue); +CLOOP_EXTERN_C int IIntUserField_get(struct IIntUserField* self); +CLOOP_EXTERN_C void IIntUserField_set(struct IIntUserField* self, struct IStatus* status, int newValue); + +#define IUser_VERSION 2 + +#define IUser_OP_USER_ADD ((unsigned) (1)) +#define IUser_OP_USER_MODIFY ((unsigned) (2)) +#define IUser_OP_USER_DELETE ((unsigned) (3)) +#define IUser_OP_USER_DISPLAY ((unsigned) (4)) +#define IUser_OP_USER_SET_MAP ((unsigned) (5)) +#define IUser_OP_USER_DROP_MAP ((unsigned) (6)) + +struct IUser; + +struct IUserVTable +{ + void* cloopDummy[1]; + uintptr_t version; + unsigned (*operation)(struct IUser* self); + struct ICharUserField* (*userName)(struct IUser* self); + struct ICharUserField* (*password)(struct IUser* self); + struct ICharUserField* (*firstName)(struct IUser* self); + struct ICharUserField* (*lastName)(struct IUser* self); + struct ICharUserField* (*middleName)(struct IUser* self); + struct ICharUserField* (*comment)(struct IUser* self); + struct ICharUserField* (*attributes)(struct IUser* self); + struct IIntUserField* (*active)(struct IUser* self); + struct IIntUserField* (*admin)(struct IUser* self); + void (*clear)(struct IUser* self, struct IStatus* status); +}; + +struct IUser +{ + void* cloopDummy[1]; + struct IUserVTable* vtable; +}; + +CLOOP_EXTERN_C unsigned IUser_operation(struct IUser* self); +CLOOP_EXTERN_C struct ICharUserField* IUser_userName(struct IUser* self); +CLOOP_EXTERN_C struct ICharUserField* IUser_password(struct IUser* self); +CLOOP_EXTERN_C struct ICharUserField* IUser_firstName(struct IUser* self); +CLOOP_EXTERN_C struct ICharUserField* IUser_lastName(struct IUser* self); +CLOOP_EXTERN_C struct ICharUserField* IUser_middleName(struct IUser* self); +CLOOP_EXTERN_C struct ICharUserField* IUser_comment(struct IUser* self); +CLOOP_EXTERN_C struct ICharUserField* IUser_attributes(struct IUser* self); +CLOOP_EXTERN_C struct IIntUserField* IUser_active(struct IUser* self); +CLOOP_EXTERN_C struct IIntUserField* IUser_admin(struct IUser* self); +CLOOP_EXTERN_C void IUser_clear(struct IUser* self, struct IStatus* status); + +#define IListUsers_VERSION 2 + +struct IListUsers; + +struct IListUsersVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*list)(struct IListUsers* self, struct IStatus* status, struct IUser* user); +}; + +struct IListUsers +{ + void* cloopDummy[1]; + struct IListUsersVTable* vtable; +}; + +CLOOP_EXTERN_C void IListUsers_list(struct IListUsers* self, struct IStatus* status, struct IUser* user); + +#define ILogonInfo_VERSION 3 + +struct ILogonInfo; + +struct ILogonInfoVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*name)(struct ILogonInfo* self); + const char* (*role)(struct ILogonInfo* self); + const char* (*networkProtocol)(struct ILogonInfo* self); + const char* (*remoteAddress)(struct ILogonInfo* self); + const unsigned char* (*authBlock)(struct ILogonInfo* self, unsigned* length); + struct IAttachment* (*attachment)(struct ILogonInfo* self, struct IStatus* status); + struct ITransaction* (*transaction)(struct ILogonInfo* self, struct IStatus* status); +}; + +struct ILogonInfo +{ + void* cloopDummy[1]; + struct ILogonInfoVTable* vtable; +}; + +CLOOP_EXTERN_C const char* ILogonInfo_name(struct ILogonInfo* self); +CLOOP_EXTERN_C const char* ILogonInfo_role(struct ILogonInfo* self); +CLOOP_EXTERN_C const char* ILogonInfo_networkProtocol(struct ILogonInfo* self); +CLOOP_EXTERN_C const char* ILogonInfo_remoteAddress(struct ILogonInfo* self); +CLOOP_EXTERN_C const unsigned char* ILogonInfo_authBlock(struct ILogonInfo* self, unsigned* length); +CLOOP_EXTERN_C struct IAttachment* ILogonInfo_attachment(struct ILogonInfo* self, struct IStatus* status); +CLOOP_EXTERN_C struct ITransaction* ILogonInfo_transaction(struct ILogonInfo* self, struct IStatus* status); + +#define IManagement_VERSION 4 + +struct IManagement; + +struct IManagementVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IManagement* self); + int (*release)(struct IManagement* self); + void (*setOwner)(struct IManagement* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IManagement* self); + void (*start)(struct IManagement* self, struct IStatus* status, struct ILogonInfo* logonInfo); + int (*execute)(struct IManagement* self, struct IStatus* status, struct IUser* user, struct IListUsers* callback); + void (*commit)(struct IManagement* self, struct IStatus* status); + void (*rollback)(struct IManagement* self, struct IStatus* status); +}; + +struct IManagement +{ + void* cloopDummy[1]; + struct IManagementVTable* vtable; +}; + +CLOOP_EXTERN_C void IManagement_addRef(struct IManagement* self); +CLOOP_EXTERN_C int IManagement_release(struct IManagement* self); +CLOOP_EXTERN_C void IManagement_setOwner(struct IManagement* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IManagement_getOwner(struct IManagement* self); +CLOOP_EXTERN_C void IManagement_start(struct IManagement* self, struct IStatus* status, struct ILogonInfo* logonInfo); +CLOOP_EXTERN_C int IManagement_execute(struct IManagement* self, struct IStatus* status, struct IUser* user, struct IListUsers* callback); +CLOOP_EXTERN_C void IManagement_commit(struct IManagement* self, struct IStatus* status); +CLOOP_EXTERN_C void IManagement_rollback(struct IManagement* self, struct IStatus* status); + +#define IAuthBlock_VERSION 2 + +struct IAuthBlock; + +struct IAuthBlockVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getType)(struct IAuthBlock* self); + const char* (*getName)(struct IAuthBlock* self); + const char* (*getPlugin)(struct IAuthBlock* self); + const char* (*getSecurityDb)(struct IAuthBlock* self); + const char* (*getOriginalPlugin)(struct IAuthBlock* self); + FB_BOOLEAN (*next)(struct IAuthBlock* self, struct IStatus* status); + FB_BOOLEAN (*first)(struct IAuthBlock* self, struct IStatus* status); +}; + +struct IAuthBlock +{ + void* cloopDummy[1]; + struct IAuthBlockVTable* vtable; +}; + +CLOOP_EXTERN_C const char* IAuthBlock_getType(struct IAuthBlock* self); +CLOOP_EXTERN_C const char* IAuthBlock_getName(struct IAuthBlock* self); +CLOOP_EXTERN_C const char* IAuthBlock_getPlugin(struct IAuthBlock* self); +CLOOP_EXTERN_C const char* IAuthBlock_getSecurityDb(struct IAuthBlock* self); +CLOOP_EXTERN_C const char* IAuthBlock_getOriginalPlugin(struct IAuthBlock* self); +CLOOP_EXTERN_C FB_BOOLEAN IAuthBlock_next(struct IAuthBlock* self, struct IStatus* status); +CLOOP_EXTERN_C FB_BOOLEAN IAuthBlock_first(struct IAuthBlock* self, struct IStatus* status); + +#define IWireCryptPlugin_VERSION 5 + +struct IWireCryptPlugin; + +struct IWireCryptPluginVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IWireCryptPlugin* self); + int (*release)(struct IWireCryptPlugin* self); + void (*setOwner)(struct IWireCryptPlugin* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IWireCryptPlugin* self); + const char* (*getKnownTypes)(struct IWireCryptPlugin* self, struct IStatus* status); + void (*setKey)(struct IWireCryptPlugin* self, struct IStatus* status, struct ICryptKey* key); + void (*encrypt)(struct IWireCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to); + void (*decrypt)(struct IWireCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to); + const unsigned char* (*getSpecificData)(struct IWireCryptPlugin* self, struct IStatus* status, const char* keyType, unsigned* length); + void (*setSpecificData)(struct IWireCryptPlugin* self, struct IStatus* status, const char* keyType, unsigned length, const unsigned char* data); +}; + +struct IWireCryptPlugin +{ + void* cloopDummy[1]; + struct IWireCryptPluginVTable* vtable; +}; + +CLOOP_EXTERN_C void IWireCryptPlugin_addRef(struct IWireCryptPlugin* self); +CLOOP_EXTERN_C int IWireCryptPlugin_release(struct IWireCryptPlugin* self); +CLOOP_EXTERN_C void IWireCryptPlugin_setOwner(struct IWireCryptPlugin* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IWireCryptPlugin_getOwner(struct IWireCryptPlugin* self); +CLOOP_EXTERN_C const char* IWireCryptPlugin_getKnownTypes(struct IWireCryptPlugin* self, struct IStatus* status); +CLOOP_EXTERN_C void IWireCryptPlugin_setKey(struct IWireCryptPlugin* self, struct IStatus* status, struct ICryptKey* key); +CLOOP_EXTERN_C void IWireCryptPlugin_encrypt(struct IWireCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to); +CLOOP_EXTERN_C void IWireCryptPlugin_decrypt(struct IWireCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to); +CLOOP_EXTERN_C const unsigned char* IWireCryptPlugin_getSpecificData(struct IWireCryptPlugin* self, struct IStatus* status, const char* keyType, unsigned* length); +CLOOP_EXTERN_C void IWireCryptPlugin_setSpecificData(struct IWireCryptPlugin* self, struct IStatus* status, const char* keyType, unsigned length, const unsigned char* data); + +#define ICryptKeyCallback_VERSION 3 + +#define ICryptKeyCallback_NO_RETRY ((unsigned) (0)) +#define ICryptKeyCallback_DO_RETRY ((unsigned) (1)) + +struct ICryptKeyCallback; + +struct ICryptKeyCallbackVTable +{ + void* cloopDummy[1]; + uintptr_t version; + unsigned (*callback)(struct ICryptKeyCallback* self, unsigned dataLength, const void* data, unsigned bufferLength, void* buffer); + unsigned (*afterAttach)(struct ICryptKeyCallback* self, struct IStatus* status, const char* dbName, const struct IStatus* attStatus); + void (*dispose)(struct ICryptKeyCallback* self); +}; + +struct ICryptKeyCallback +{ + void* cloopDummy[1]; + struct ICryptKeyCallbackVTable* vtable; +}; + +CLOOP_EXTERN_C unsigned ICryptKeyCallback_callback(struct ICryptKeyCallback* self, unsigned dataLength, const void* data, unsigned bufferLength, void* buffer); +CLOOP_EXTERN_C unsigned ICryptKeyCallback_afterAttach(struct ICryptKeyCallback* self, struct IStatus* status, const char* dbName, const struct IStatus* attStatus); +CLOOP_EXTERN_C void ICryptKeyCallback_dispose(struct ICryptKeyCallback* self); + +#define IKeyHolderPlugin_VERSION 5 + +struct IKeyHolderPlugin; + +struct IKeyHolderPluginVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IKeyHolderPlugin* self); + int (*release)(struct IKeyHolderPlugin* self); + void (*setOwner)(struct IKeyHolderPlugin* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IKeyHolderPlugin* self); + int (*keyCallback)(struct IKeyHolderPlugin* self, struct IStatus* status, struct ICryptKeyCallback* callback); + struct ICryptKeyCallback* (*keyHandle)(struct IKeyHolderPlugin* self, struct IStatus* status, const char* keyName); + FB_BOOLEAN (*useOnlyOwnKeys)(struct IKeyHolderPlugin* self, struct IStatus* status); + struct ICryptKeyCallback* (*chainHandle)(struct IKeyHolderPlugin* self, struct IStatus* status); +}; + +struct IKeyHolderPlugin +{ + void* cloopDummy[1]; + struct IKeyHolderPluginVTable* vtable; +}; + +CLOOP_EXTERN_C void IKeyHolderPlugin_addRef(struct IKeyHolderPlugin* self); +CLOOP_EXTERN_C int IKeyHolderPlugin_release(struct IKeyHolderPlugin* self); +CLOOP_EXTERN_C void IKeyHolderPlugin_setOwner(struct IKeyHolderPlugin* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IKeyHolderPlugin_getOwner(struct IKeyHolderPlugin* self); +CLOOP_EXTERN_C int IKeyHolderPlugin_keyCallback(struct IKeyHolderPlugin* self, struct IStatus* status, struct ICryptKeyCallback* callback); +CLOOP_EXTERN_C struct ICryptKeyCallback* IKeyHolderPlugin_keyHandle(struct IKeyHolderPlugin* self, struct IStatus* status, const char* keyName); +CLOOP_EXTERN_C FB_BOOLEAN IKeyHolderPlugin_useOnlyOwnKeys(struct IKeyHolderPlugin* self, struct IStatus* status); +CLOOP_EXTERN_C struct ICryptKeyCallback* IKeyHolderPlugin_chainHandle(struct IKeyHolderPlugin* self, struct IStatus* status); + +#define IDbCryptInfo_VERSION 3 + +struct IDbCryptInfo; + +struct IDbCryptInfoVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IDbCryptInfo* self); + int (*release)(struct IDbCryptInfo* self); + const char* (*getDatabaseFullPath)(struct IDbCryptInfo* self, struct IStatus* status); +}; + +struct IDbCryptInfo +{ + void* cloopDummy[1]; + struct IDbCryptInfoVTable* vtable; +}; + +CLOOP_EXTERN_C void IDbCryptInfo_addRef(struct IDbCryptInfo* self); +CLOOP_EXTERN_C int IDbCryptInfo_release(struct IDbCryptInfo* self); +CLOOP_EXTERN_C const char* IDbCryptInfo_getDatabaseFullPath(struct IDbCryptInfo* self, struct IStatus* status); + +#define IDbCryptPlugin_VERSION 5 + +struct IDbCryptPlugin; + +struct IDbCryptPluginVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IDbCryptPlugin* self); + int (*release)(struct IDbCryptPlugin* self); + void (*setOwner)(struct IDbCryptPlugin* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IDbCryptPlugin* self); + void (*setKey)(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, struct IKeyHolderPlugin** sources, const char* keyName); + void (*encrypt)(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to); + void (*decrypt)(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to); + void (*setInfo)(struct IDbCryptPlugin* self, struct IStatus* status, struct IDbCryptInfo* info); +}; + +struct IDbCryptPlugin +{ + void* cloopDummy[1]; + struct IDbCryptPluginVTable* vtable; +}; + +CLOOP_EXTERN_C void IDbCryptPlugin_addRef(struct IDbCryptPlugin* self); +CLOOP_EXTERN_C int IDbCryptPlugin_release(struct IDbCryptPlugin* self); +CLOOP_EXTERN_C void IDbCryptPlugin_setOwner(struct IDbCryptPlugin* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IDbCryptPlugin_getOwner(struct IDbCryptPlugin* self); +CLOOP_EXTERN_C void IDbCryptPlugin_setKey(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, struct IKeyHolderPlugin** sources, const char* keyName); +CLOOP_EXTERN_C void IDbCryptPlugin_encrypt(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to); +CLOOP_EXTERN_C void IDbCryptPlugin_decrypt(struct IDbCryptPlugin* self, struct IStatus* status, unsigned length, const void* from, void* to); +CLOOP_EXTERN_C void IDbCryptPlugin_setInfo(struct IDbCryptPlugin* self, struct IStatus* status, struct IDbCryptInfo* info); + +#define IExternalContext_VERSION 2 + +struct IExternalContext; + +struct IExternalContextVTable +{ + void* cloopDummy[1]; + uintptr_t version; + struct IMaster* (*getMaster)(struct IExternalContext* self); + struct IExternalEngine* (*getEngine)(struct IExternalContext* self, struct IStatus* status); + struct IAttachment* (*getAttachment)(struct IExternalContext* self, struct IStatus* status); + struct ITransaction* (*getTransaction)(struct IExternalContext* self, struct IStatus* status); + const char* (*getUserName)(struct IExternalContext* self); + const char* (*getDatabaseName)(struct IExternalContext* self); + const char* (*getClientCharSet)(struct IExternalContext* self); + int (*obtainInfoCode)(struct IExternalContext* self); + void* (*getInfo)(struct IExternalContext* self, int code); + void* (*setInfo)(struct IExternalContext* self, int code, void* value); +}; + +struct IExternalContext +{ + void* cloopDummy[1]; + struct IExternalContextVTable* vtable; +}; + +CLOOP_EXTERN_C struct IMaster* IExternalContext_getMaster(struct IExternalContext* self); +CLOOP_EXTERN_C struct IExternalEngine* IExternalContext_getEngine(struct IExternalContext* self, struct IStatus* status); +CLOOP_EXTERN_C struct IAttachment* IExternalContext_getAttachment(struct IExternalContext* self, struct IStatus* status); +CLOOP_EXTERN_C struct ITransaction* IExternalContext_getTransaction(struct IExternalContext* self, struct IStatus* status); +CLOOP_EXTERN_C const char* IExternalContext_getUserName(struct IExternalContext* self); +CLOOP_EXTERN_C const char* IExternalContext_getDatabaseName(struct IExternalContext* self); +CLOOP_EXTERN_C const char* IExternalContext_getClientCharSet(struct IExternalContext* self); +CLOOP_EXTERN_C int IExternalContext_obtainInfoCode(struct IExternalContext* self); +CLOOP_EXTERN_C void* IExternalContext_getInfo(struct IExternalContext* self, int code); +CLOOP_EXTERN_C void* IExternalContext_setInfo(struct IExternalContext* self, int code, void* value); + +#define IExternalResultSet_VERSION 3 + +struct IExternalResultSet; + +struct IExternalResultSetVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IExternalResultSet* self); + FB_BOOLEAN (*fetch)(struct IExternalResultSet* self, struct IStatus* status); +}; + +struct IExternalResultSet +{ + void* cloopDummy[1]; + struct IExternalResultSetVTable* vtable; +}; + +CLOOP_EXTERN_C void IExternalResultSet_dispose(struct IExternalResultSet* self); +CLOOP_EXTERN_C FB_BOOLEAN IExternalResultSet_fetch(struct IExternalResultSet* self, struct IStatus* status); + +#define IExternalFunction_VERSION 3 + +struct IExternalFunction; + +struct IExternalFunctionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IExternalFunction* self); + void (*getCharSet)(struct IExternalFunction* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize); + void (*execute)(struct IExternalFunction* self, struct IStatus* status, struct IExternalContext* context, void* inMsg, void* outMsg); +}; + +struct IExternalFunction +{ + void* cloopDummy[1]; + struct IExternalFunctionVTable* vtable; +}; + +CLOOP_EXTERN_C void IExternalFunction_dispose(struct IExternalFunction* self); +CLOOP_EXTERN_C void IExternalFunction_getCharSet(struct IExternalFunction* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize); +CLOOP_EXTERN_C void IExternalFunction_execute(struct IExternalFunction* self, struct IStatus* status, struct IExternalContext* context, void* inMsg, void* outMsg); + +#define IExternalProcedure_VERSION 3 + +struct IExternalProcedure; + +struct IExternalProcedureVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IExternalProcedure* self); + void (*getCharSet)(struct IExternalProcedure* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize); + struct IExternalResultSet* (*open)(struct IExternalProcedure* self, struct IStatus* status, struct IExternalContext* context, void* inMsg, void* outMsg); +}; + +struct IExternalProcedure +{ + void* cloopDummy[1]; + struct IExternalProcedureVTable* vtable; +}; + +CLOOP_EXTERN_C void IExternalProcedure_dispose(struct IExternalProcedure* self); +CLOOP_EXTERN_C void IExternalProcedure_getCharSet(struct IExternalProcedure* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize); +CLOOP_EXTERN_C struct IExternalResultSet* IExternalProcedure_open(struct IExternalProcedure* self, struct IStatus* status, struct IExternalContext* context, void* inMsg, void* outMsg); + +#define IExternalTrigger_VERSION 3 + +#define IExternalTrigger_TYPE_BEFORE ((unsigned) (1)) +#define IExternalTrigger_TYPE_AFTER ((unsigned) (2)) +#define IExternalTrigger_TYPE_DATABASE ((unsigned) (3)) +#define IExternalTrigger_ACTION_INSERT ((unsigned) (1)) +#define IExternalTrigger_ACTION_UPDATE ((unsigned) (2)) +#define IExternalTrigger_ACTION_DELETE ((unsigned) (3)) +#define IExternalTrigger_ACTION_CONNECT ((unsigned) (4)) +#define IExternalTrigger_ACTION_DISCONNECT ((unsigned) (5)) +#define IExternalTrigger_ACTION_TRANS_START ((unsigned) (6)) +#define IExternalTrigger_ACTION_TRANS_COMMIT ((unsigned) (7)) +#define IExternalTrigger_ACTION_TRANS_ROLLBACK ((unsigned) (8)) +#define IExternalTrigger_ACTION_DDL ((unsigned) (9)) + +struct IExternalTrigger; + +struct IExternalTriggerVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IExternalTrigger* self); + void (*getCharSet)(struct IExternalTrigger* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize); + void (*execute)(struct IExternalTrigger* self, struct IStatus* status, struct IExternalContext* context, unsigned action, void* oldMsg, void* newMsg); +}; + +struct IExternalTrigger +{ + void* cloopDummy[1]; + struct IExternalTriggerVTable* vtable; +}; + +CLOOP_EXTERN_C void IExternalTrigger_dispose(struct IExternalTrigger* self); +CLOOP_EXTERN_C void IExternalTrigger_getCharSet(struct IExternalTrigger* self, struct IStatus* status, struct IExternalContext* context, char* name, unsigned nameSize); +CLOOP_EXTERN_C void IExternalTrigger_execute(struct IExternalTrigger* self, struct IStatus* status, struct IExternalContext* context, unsigned action, void* oldMsg, void* newMsg); + +#define IRoutineMetadata_VERSION 2 + +struct IRoutineMetadata; + +struct IRoutineMetadataVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getPackage)(const struct IRoutineMetadata* self, struct IStatus* status); + const char* (*getName)(const struct IRoutineMetadata* self, struct IStatus* status); + const char* (*getEntryPoint)(const struct IRoutineMetadata* self, struct IStatus* status); + const char* (*getBody)(const struct IRoutineMetadata* self, struct IStatus* status); + struct IMessageMetadata* (*getInputMetadata)(const struct IRoutineMetadata* self, struct IStatus* status); + struct IMessageMetadata* (*getOutputMetadata)(const struct IRoutineMetadata* self, struct IStatus* status); + struct IMessageMetadata* (*getTriggerMetadata)(const struct IRoutineMetadata* self, struct IStatus* status); + const char* (*getTriggerTable)(const struct IRoutineMetadata* self, struct IStatus* status); + unsigned (*getTriggerType)(const struct IRoutineMetadata* self, struct IStatus* status); +}; + +struct IRoutineMetadata +{ + void* cloopDummy[1]; + struct IRoutineMetadataVTable* vtable; +}; + +CLOOP_EXTERN_C const char* IRoutineMetadata_getPackage(const struct IRoutineMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C const char* IRoutineMetadata_getName(const struct IRoutineMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C const char* IRoutineMetadata_getEntryPoint(const struct IRoutineMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C const char* IRoutineMetadata_getBody(const struct IRoutineMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C struct IMessageMetadata* IRoutineMetadata_getInputMetadata(const struct IRoutineMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C struct IMessageMetadata* IRoutineMetadata_getOutputMetadata(const struct IRoutineMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C struct IMessageMetadata* IRoutineMetadata_getTriggerMetadata(const struct IRoutineMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C const char* IRoutineMetadata_getTriggerTable(const struct IRoutineMetadata* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IRoutineMetadata_getTriggerType(const struct IRoutineMetadata* self, struct IStatus* status); + +#define IExternalEngine_VERSION 4 + +struct IExternalEngine; + +struct IExternalEngineVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IExternalEngine* self); + int (*release)(struct IExternalEngine* self); + void (*setOwner)(struct IExternalEngine* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IExternalEngine* self); + void (*open)(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, char* charSet, unsigned charSetSize); + void (*openAttachment)(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context); + void (*closeAttachment)(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context); + struct IExternalFunction* (*makeFunction)(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder); + struct IExternalProcedure* (*makeProcedure)(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder); + struct IExternalTrigger* (*makeTrigger)(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* fieldsBuilder); +}; + +struct IExternalEngine +{ + void* cloopDummy[1]; + struct IExternalEngineVTable* vtable; +}; + +CLOOP_EXTERN_C void IExternalEngine_addRef(struct IExternalEngine* self); +CLOOP_EXTERN_C int IExternalEngine_release(struct IExternalEngine* self); +CLOOP_EXTERN_C void IExternalEngine_setOwner(struct IExternalEngine* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IExternalEngine_getOwner(struct IExternalEngine* self); +CLOOP_EXTERN_C void IExternalEngine_open(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, char* charSet, unsigned charSetSize); +CLOOP_EXTERN_C void IExternalEngine_openAttachment(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context); +CLOOP_EXTERN_C void IExternalEngine_closeAttachment(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context); +CLOOP_EXTERN_C struct IExternalFunction* IExternalEngine_makeFunction(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder); +CLOOP_EXTERN_C struct IExternalProcedure* IExternalEngine_makeProcedure(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder); +CLOOP_EXTERN_C struct IExternalTrigger* IExternalEngine_makeTrigger(struct IExternalEngine* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* fieldsBuilder); + +#define ITimer_VERSION 3 + +struct ITimer; + +struct ITimerVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct ITimer* self); + int (*release)(struct ITimer* self); + void (*handler)(struct ITimer* self); +}; + +struct ITimer +{ + void* cloopDummy[1]; + struct ITimerVTable* vtable; +}; + +CLOOP_EXTERN_C void ITimer_addRef(struct ITimer* self); +CLOOP_EXTERN_C int ITimer_release(struct ITimer* self); +CLOOP_EXTERN_C void ITimer_handler(struct ITimer* self); + +#define ITimerControl_VERSION 2 + +struct ITimerControl; + +struct ITimerControlVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*start)(struct ITimerControl* self, struct IStatus* status, struct ITimer* timer, ISC_UINT64 microSeconds); + void (*stop)(struct ITimerControl* self, struct IStatus* status, struct ITimer* timer); +}; + +struct ITimerControl +{ + void* cloopDummy[1]; + struct ITimerControlVTable* vtable; +}; + +CLOOP_EXTERN_C void ITimerControl_start(struct ITimerControl* self, struct IStatus* status, struct ITimer* timer, ISC_UINT64 microSeconds); +CLOOP_EXTERN_C void ITimerControl_stop(struct ITimerControl* self, struct IStatus* status, struct ITimer* timer); + +#define IVersionCallback_VERSION 2 + +struct IVersionCallback; + +struct IVersionCallbackVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*callback)(struct IVersionCallback* self, struct IStatus* status, const char* text); +}; + +struct IVersionCallback +{ + void* cloopDummy[1]; + struct IVersionCallbackVTable* vtable; +}; + +CLOOP_EXTERN_C void IVersionCallback_callback(struct IVersionCallback* self, struct IStatus* status, const char* text); + +#define IUtil_VERSION 4 + +struct IUtil; + +struct IUtilVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*getFbVersion)(struct IUtil* self, struct IStatus* status, struct IAttachment* att, struct IVersionCallback* callback); + void (*loadBlob)(struct IUtil* self, struct IStatus* status, ISC_QUAD* blobId, struct IAttachment* att, struct ITransaction* tra, const char* file, FB_BOOLEAN txt); + void (*dumpBlob)(struct IUtil* self, struct IStatus* status, ISC_QUAD* blobId, struct IAttachment* att, struct ITransaction* tra, const char* file, FB_BOOLEAN txt); + void (*getPerfCounters)(struct IUtil* self, struct IStatus* status, struct IAttachment* att, const char* countersSet, ISC_INT64* counters); + struct IAttachment* (*executeCreateDatabase)(struct IUtil* self, struct IStatus* status, unsigned stmtLength, const char* creatDBstatement, unsigned dialect, FB_BOOLEAN* stmtIsCreateDb); + void (*decodeDate)(struct IUtil* self, ISC_DATE date, unsigned* year, unsigned* month, unsigned* day); + void (*decodeTime)(struct IUtil* self, ISC_TIME time, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions); + ISC_DATE (*encodeDate)(struct IUtil* self, unsigned year, unsigned month, unsigned day); + ISC_TIME (*encodeTime)(struct IUtil* self, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions); + unsigned (*formatStatus)(struct IUtil* self, char* buffer, unsigned bufferSize, struct IStatus* status); + unsigned (*getClientVersion)(struct IUtil* self); + struct IXpbBuilder* (*getXpbBuilder)(struct IUtil* self, struct IStatus* status, unsigned kind, const unsigned char* buf, unsigned len); + unsigned (*setOffsets)(struct IUtil* self, struct IStatus* status, struct IMessageMetadata* metadata, struct IOffsetsCallback* callback); + struct IDecFloat16* (*getDecFloat16)(struct IUtil* self, struct IStatus* status); + struct IDecFloat34* (*getDecFloat34)(struct IUtil* self, struct IStatus* status); + void (*decodeTimeTz)(struct IUtil* self, struct IStatus* status, const ISC_TIME_TZ* timeTz, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer); + void (*decodeTimeStampTz)(struct IUtil* self, struct IStatus* status, const ISC_TIMESTAMP_TZ* timeStampTz, unsigned* year, unsigned* month, unsigned* day, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer); + void (*encodeTimeTz)(struct IUtil* self, struct IStatus* status, ISC_TIME_TZ* timeTz, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions, const char* timeZone); + void (*encodeTimeStampTz)(struct IUtil* self, struct IStatus* status, ISC_TIMESTAMP_TZ* timeStampTz, unsigned year, unsigned month, unsigned day, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions, const char* timeZone); + struct IInt128* (*getInt128)(struct IUtil* self, struct IStatus* status); + void (*decodeTimeTzEx)(struct IUtil* self, struct IStatus* status, const ISC_TIME_TZ_EX* timeTz, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer); + void (*decodeTimeStampTzEx)(struct IUtil* self, struct IStatus* status, const ISC_TIMESTAMP_TZ_EX* timeStampTz, unsigned* year, unsigned* month, unsigned* day, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer); +}; + +struct IUtil +{ + void* cloopDummy[1]; + struct IUtilVTable* vtable; +}; + +CLOOP_EXTERN_C void IUtil_getFbVersion(struct IUtil* self, struct IStatus* status, struct IAttachment* att, struct IVersionCallback* callback); +CLOOP_EXTERN_C void IUtil_loadBlob(struct IUtil* self, struct IStatus* status, ISC_QUAD* blobId, struct IAttachment* att, struct ITransaction* tra, const char* file, FB_BOOLEAN txt); +CLOOP_EXTERN_C void IUtil_dumpBlob(struct IUtil* self, struct IStatus* status, ISC_QUAD* blobId, struct IAttachment* att, struct ITransaction* tra, const char* file, FB_BOOLEAN txt); +CLOOP_EXTERN_C void IUtil_getPerfCounters(struct IUtil* self, struct IStatus* status, struct IAttachment* att, const char* countersSet, ISC_INT64* counters); +CLOOP_EXTERN_C struct IAttachment* IUtil_executeCreateDatabase(struct IUtil* self, struct IStatus* status, unsigned stmtLength, const char* creatDBstatement, unsigned dialect, FB_BOOLEAN* stmtIsCreateDb); +CLOOP_EXTERN_C void IUtil_decodeDate(struct IUtil* self, ISC_DATE date, unsigned* year, unsigned* month, unsigned* day); +CLOOP_EXTERN_C void IUtil_decodeTime(struct IUtil* self, ISC_TIME time, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions); +CLOOP_EXTERN_C ISC_DATE IUtil_encodeDate(struct IUtil* self, unsigned year, unsigned month, unsigned day); +CLOOP_EXTERN_C ISC_TIME IUtil_encodeTime(struct IUtil* self, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions); +CLOOP_EXTERN_C unsigned IUtil_formatStatus(struct IUtil* self, char* buffer, unsigned bufferSize, struct IStatus* status); +CLOOP_EXTERN_C unsigned IUtil_getClientVersion(struct IUtil* self); +CLOOP_EXTERN_C struct IXpbBuilder* IUtil_getXpbBuilder(struct IUtil* self, struct IStatus* status, unsigned kind, const unsigned char* buf, unsigned len); +CLOOP_EXTERN_C unsigned IUtil_setOffsets(struct IUtil* self, struct IStatus* status, struct IMessageMetadata* metadata, struct IOffsetsCallback* callback); +CLOOP_EXTERN_C struct IDecFloat16* IUtil_getDecFloat16(struct IUtil* self, struct IStatus* status); +CLOOP_EXTERN_C struct IDecFloat34* IUtil_getDecFloat34(struct IUtil* self, struct IStatus* status); +CLOOP_EXTERN_C void IUtil_decodeTimeTz(struct IUtil* self, struct IStatus* status, const ISC_TIME_TZ* timeTz, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer); +CLOOP_EXTERN_C void IUtil_decodeTimeStampTz(struct IUtil* self, struct IStatus* status, const ISC_TIMESTAMP_TZ* timeStampTz, unsigned* year, unsigned* month, unsigned* day, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer); +CLOOP_EXTERN_C void IUtil_encodeTimeTz(struct IUtil* self, struct IStatus* status, ISC_TIME_TZ* timeTz, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions, const char* timeZone); +CLOOP_EXTERN_C void IUtil_encodeTimeStampTz(struct IUtil* self, struct IStatus* status, ISC_TIMESTAMP_TZ* timeStampTz, unsigned year, unsigned month, unsigned day, unsigned hours, unsigned minutes, unsigned seconds, unsigned fractions, const char* timeZone); +CLOOP_EXTERN_C struct IInt128* IUtil_getInt128(struct IUtil* self, struct IStatus* status); +CLOOP_EXTERN_C void IUtil_decodeTimeTzEx(struct IUtil* self, struct IStatus* status, const ISC_TIME_TZ_EX* timeTz, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer); +CLOOP_EXTERN_C void IUtil_decodeTimeStampTzEx(struct IUtil* self, struct IStatus* status, const ISC_TIMESTAMP_TZ_EX* timeStampTz, unsigned* year, unsigned* month, unsigned* day, unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions, unsigned timeZoneBufferLength, char* timeZoneBuffer); + +#define IOffsetsCallback_VERSION 2 + +struct IOffsetsCallback; + +struct IOffsetsCallbackVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*setOffset)(struct IOffsetsCallback* self, struct IStatus* status, unsigned index, unsigned offset, unsigned nullOffset); +}; + +struct IOffsetsCallback +{ + void* cloopDummy[1]; + struct IOffsetsCallbackVTable* vtable; +}; + +CLOOP_EXTERN_C void IOffsetsCallback_setOffset(struct IOffsetsCallback* self, struct IStatus* status, unsigned index, unsigned offset, unsigned nullOffset); + +#define IXpbBuilder_VERSION 3 + +#define IXpbBuilder_DPB ((unsigned) (1)) +#define IXpbBuilder_SPB_ATTACH ((unsigned) (2)) +#define IXpbBuilder_SPB_START ((unsigned) (3)) +#define IXpbBuilder_TPB ((unsigned) (4)) +#define IXpbBuilder_BATCH ((unsigned) (5)) +#define IXpbBuilder_BPB ((unsigned) (6)) +#define IXpbBuilder_SPB_SEND ((unsigned) (7)) +#define IXpbBuilder_SPB_RECEIVE ((unsigned) (8)) +#define IXpbBuilder_SPB_RESPONSE ((unsigned) (9)) +#define IXpbBuilder_INFO_SEND ((unsigned) (10)) +#define IXpbBuilder_INFO_RESPONSE ((unsigned) (11)) + +struct IXpbBuilder; + +struct IXpbBuilderVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IXpbBuilder* self); + void (*clear)(struct IXpbBuilder* self, struct IStatus* status); + void (*removeCurrent)(struct IXpbBuilder* self, struct IStatus* status); + void (*insertInt)(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, int value); + void (*insertBigInt)(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, ISC_INT64 value); + void (*insertBytes)(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, const void* bytes, unsigned length); + void (*insertString)(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, const char* str); + void (*insertTag)(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag); + FB_BOOLEAN (*isEof)(struct IXpbBuilder* self, struct IStatus* status); + void (*moveNext)(struct IXpbBuilder* self, struct IStatus* status); + void (*rewind)(struct IXpbBuilder* self, struct IStatus* status); + FB_BOOLEAN (*findFirst)(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag); + FB_BOOLEAN (*findNext)(struct IXpbBuilder* self, struct IStatus* status); + unsigned char (*getTag)(struct IXpbBuilder* self, struct IStatus* status); + unsigned (*getLength)(struct IXpbBuilder* self, struct IStatus* status); + int (*getInt)(struct IXpbBuilder* self, struct IStatus* status); + ISC_INT64 (*getBigInt)(struct IXpbBuilder* self, struct IStatus* status); + const char* (*getString)(struct IXpbBuilder* self, struct IStatus* status); + const unsigned char* (*getBytes)(struct IXpbBuilder* self, struct IStatus* status); + unsigned (*getBufferLength)(struct IXpbBuilder* self, struct IStatus* status); + const unsigned char* (*getBuffer)(struct IXpbBuilder* self, struct IStatus* status); +}; + +struct IXpbBuilder +{ + void* cloopDummy[1]; + struct IXpbBuilderVTable* vtable; +}; + +CLOOP_EXTERN_C void IXpbBuilder_dispose(struct IXpbBuilder* self); +CLOOP_EXTERN_C void IXpbBuilder_clear(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C void IXpbBuilder_removeCurrent(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C void IXpbBuilder_insertInt(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, int value); +CLOOP_EXTERN_C void IXpbBuilder_insertBigInt(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, ISC_INT64 value); +CLOOP_EXTERN_C void IXpbBuilder_insertBytes(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, const void* bytes, unsigned length); +CLOOP_EXTERN_C void IXpbBuilder_insertString(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag, const char* str); +CLOOP_EXTERN_C void IXpbBuilder_insertTag(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag); +CLOOP_EXTERN_C FB_BOOLEAN IXpbBuilder_isEof(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C void IXpbBuilder_moveNext(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C void IXpbBuilder_rewind(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C FB_BOOLEAN IXpbBuilder_findFirst(struct IXpbBuilder* self, struct IStatus* status, unsigned char tag); +CLOOP_EXTERN_C FB_BOOLEAN IXpbBuilder_findNext(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned char IXpbBuilder_getTag(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IXpbBuilder_getLength(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C int IXpbBuilder_getInt(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C ISC_INT64 IXpbBuilder_getBigInt(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C const char* IXpbBuilder_getString(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C const unsigned char* IXpbBuilder_getBytes(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C unsigned IXpbBuilder_getBufferLength(struct IXpbBuilder* self, struct IStatus* status); +CLOOP_EXTERN_C const unsigned char* IXpbBuilder_getBuffer(struct IXpbBuilder* self, struct IStatus* status); + +#define ITraceConnection_VERSION 2 + +#define ITraceConnection_KIND_DATABASE ((unsigned) (1)) +#define ITraceConnection_KIND_SERVICE ((unsigned) (2)) + +struct ITraceConnection; + +struct ITraceConnectionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + unsigned (*getKind)(struct ITraceConnection* self); + int (*getProcessID)(struct ITraceConnection* self); + const char* (*getUserName)(struct ITraceConnection* self); + const char* (*getRoleName)(struct ITraceConnection* self); + const char* (*getCharSet)(struct ITraceConnection* self); + const char* (*getRemoteProtocol)(struct ITraceConnection* self); + const char* (*getRemoteAddress)(struct ITraceConnection* self); + int (*getRemoteProcessID)(struct ITraceConnection* self); + const char* (*getRemoteProcessName)(struct ITraceConnection* self); +}; + +struct ITraceConnection +{ + void* cloopDummy[1]; + struct ITraceConnectionVTable* vtable; +}; + +CLOOP_EXTERN_C unsigned ITraceConnection_getKind(struct ITraceConnection* self); +CLOOP_EXTERN_C int ITraceConnection_getProcessID(struct ITraceConnection* self); +CLOOP_EXTERN_C const char* ITraceConnection_getUserName(struct ITraceConnection* self); +CLOOP_EXTERN_C const char* ITraceConnection_getRoleName(struct ITraceConnection* self); +CLOOP_EXTERN_C const char* ITraceConnection_getCharSet(struct ITraceConnection* self); +CLOOP_EXTERN_C const char* ITraceConnection_getRemoteProtocol(struct ITraceConnection* self); +CLOOP_EXTERN_C const char* ITraceConnection_getRemoteAddress(struct ITraceConnection* self); +CLOOP_EXTERN_C int ITraceConnection_getRemoteProcessID(struct ITraceConnection* self); +CLOOP_EXTERN_C const char* ITraceConnection_getRemoteProcessName(struct ITraceConnection* self); + +#define ITraceDatabaseConnection_VERSION 3 + +struct ITraceDatabaseConnection; + +struct ITraceDatabaseConnectionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + unsigned (*getKind)(struct ITraceDatabaseConnection* self); + int (*getProcessID)(struct ITraceDatabaseConnection* self); + const char* (*getUserName)(struct ITraceDatabaseConnection* self); + const char* (*getRoleName)(struct ITraceDatabaseConnection* self); + const char* (*getCharSet)(struct ITraceDatabaseConnection* self); + const char* (*getRemoteProtocol)(struct ITraceDatabaseConnection* self); + const char* (*getRemoteAddress)(struct ITraceDatabaseConnection* self); + int (*getRemoteProcessID)(struct ITraceDatabaseConnection* self); + const char* (*getRemoteProcessName)(struct ITraceDatabaseConnection* self); + ISC_INT64 (*getConnectionID)(struct ITraceDatabaseConnection* self); + const char* (*getDatabaseName)(struct ITraceDatabaseConnection* self); +}; + +struct ITraceDatabaseConnection +{ + void* cloopDummy[1]; + struct ITraceDatabaseConnectionVTable* vtable; +}; + +CLOOP_EXTERN_C unsigned ITraceDatabaseConnection_getKind(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C int ITraceDatabaseConnection_getProcessID(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getUserName(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getRoleName(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getCharSet(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getRemoteProtocol(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getRemoteAddress(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C int ITraceDatabaseConnection_getRemoteProcessID(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getRemoteProcessName(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C ISC_INT64 ITraceDatabaseConnection_getConnectionID(struct ITraceDatabaseConnection* self); +CLOOP_EXTERN_C const char* ITraceDatabaseConnection_getDatabaseName(struct ITraceDatabaseConnection* self); + +#define ITraceTransaction_VERSION 3 + +#define ITraceTransaction_ISOLATION_CONSISTENCY ((unsigned) (1)) +#define ITraceTransaction_ISOLATION_CONCURRENCY ((unsigned) (2)) +#define ITraceTransaction_ISOLATION_READ_COMMITTED_RECVER ((unsigned) (3)) +#define ITraceTransaction_ISOLATION_READ_COMMITTED_NORECVER ((unsigned) (4)) +#define ITraceTransaction_ISOLATION_READ_COMMITTED_READ_CONSISTENCY ((unsigned) (5)) + +struct ITraceTransaction; + +struct ITraceTransactionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + ISC_INT64 (*getTransactionID)(struct ITraceTransaction* self); + FB_BOOLEAN (*getReadOnly)(struct ITraceTransaction* self); + int (*getWait)(struct ITraceTransaction* self); + unsigned (*getIsolation)(struct ITraceTransaction* self); + struct PerformanceInfo* (*getPerf)(struct ITraceTransaction* self); + ISC_INT64 (*getInitialID)(struct ITraceTransaction* self); + ISC_INT64 (*getPreviousID)(struct ITraceTransaction* self); +}; + +struct ITraceTransaction +{ + void* cloopDummy[1]; + struct ITraceTransactionVTable* vtable; +}; + +CLOOP_EXTERN_C ISC_INT64 ITraceTransaction_getTransactionID(struct ITraceTransaction* self); +CLOOP_EXTERN_C FB_BOOLEAN ITraceTransaction_getReadOnly(struct ITraceTransaction* self); +CLOOP_EXTERN_C int ITraceTransaction_getWait(struct ITraceTransaction* self); +CLOOP_EXTERN_C unsigned ITraceTransaction_getIsolation(struct ITraceTransaction* self); +CLOOP_EXTERN_C struct PerformanceInfo* ITraceTransaction_getPerf(struct ITraceTransaction* self); +CLOOP_EXTERN_C ISC_INT64 ITraceTransaction_getInitialID(struct ITraceTransaction* self); +CLOOP_EXTERN_C ISC_INT64 ITraceTransaction_getPreviousID(struct ITraceTransaction* self); + +#define ITraceParams_VERSION 3 + +struct ITraceParams; + +struct ITraceParamsVTable +{ + void* cloopDummy[1]; + uintptr_t version; + unsigned (*getCount)(struct ITraceParams* self); + const struct dsc* (*getParam)(struct ITraceParams* self, unsigned idx); + const char* (*getTextUTF8)(struct ITraceParams* self, struct IStatus* status, unsigned idx); +}; + +struct ITraceParams +{ + void* cloopDummy[1]; + struct ITraceParamsVTable* vtable; +}; + +CLOOP_EXTERN_C unsigned ITraceParams_getCount(struct ITraceParams* self); +CLOOP_EXTERN_C const struct dsc* ITraceParams_getParam(struct ITraceParams* self, unsigned idx); +CLOOP_EXTERN_C const char* ITraceParams_getTextUTF8(struct ITraceParams* self, struct IStatus* status, unsigned idx); + +#define ITraceStatement_VERSION 2 + +struct ITraceStatement; + +struct ITraceStatementVTable +{ + void* cloopDummy[1]; + uintptr_t version; + ISC_INT64 (*getStmtID)(struct ITraceStatement* self); + struct PerformanceInfo* (*getPerf)(struct ITraceStatement* self); +}; + +struct ITraceStatement +{ + void* cloopDummy[1]; + struct ITraceStatementVTable* vtable; +}; + +CLOOP_EXTERN_C ISC_INT64 ITraceStatement_getStmtID(struct ITraceStatement* self); +CLOOP_EXTERN_C struct PerformanceInfo* ITraceStatement_getPerf(struct ITraceStatement* self); + +#define ITraceSQLStatement_VERSION 3 + +struct ITraceSQLStatement; + +struct ITraceSQLStatementVTable +{ + void* cloopDummy[1]; + uintptr_t version; + ISC_INT64 (*getStmtID)(struct ITraceSQLStatement* self); + struct PerformanceInfo* (*getPerf)(struct ITraceSQLStatement* self); + const char* (*getText)(struct ITraceSQLStatement* self); + const char* (*getPlan)(struct ITraceSQLStatement* self); + struct ITraceParams* (*getInputs)(struct ITraceSQLStatement* self); + const char* (*getTextUTF8)(struct ITraceSQLStatement* self); + const char* (*getExplainedPlan)(struct ITraceSQLStatement* self); +}; + +struct ITraceSQLStatement +{ + void* cloopDummy[1]; + struct ITraceSQLStatementVTable* vtable; +}; + +CLOOP_EXTERN_C ISC_INT64 ITraceSQLStatement_getStmtID(struct ITraceSQLStatement* self); +CLOOP_EXTERN_C struct PerformanceInfo* ITraceSQLStatement_getPerf(struct ITraceSQLStatement* self); +CLOOP_EXTERN_C const char* ITraceSQLStatement_getText(struct ITraceSQLStatement* self); +CLOOP_EXTERN_C const char* ITraceSQLStatement_getPlan(struct ITraceSQLStatement* self); +CLOOP_EXTERN_C struct ITraceParams* ITraceSQLStatement_getInputs(struct ITraceSQLStatement* self); +CLOOP_EXTERN_C const char* ITraceSQLStatement_getTextUTF8(struct ITraceSQLStatement* self); +CLOOP_EXTERN_C const char* ITraceSQLStatement_getExplainedPlan(struct ITraceSQLStatement* self); + +#define ITraceBLRStatement_VERSION 3 + +struct ITraceBLRStatement; + +struct ITraceBLRStatementVTable +{ + void* cloopDummy[1]; + uintptr_t version; + ISC_INT64 (*getStmtID)(struct ITraceBLRStatement* self); + struct PerformanceInfo* (*getPerf)(struct ITraceBLRStatement* self); + const unsigned char* (*getData)(struct ITraceBLRStatement* self); + unsigned (*getDataLength)(struct ITraceBLRStatement* self); + const char* (*getText)(struct ITraceBLRStatement* self); +}; + +struct ITraceBLRStatement +{ + void* cloopDummy[1]; + struct ITraceBLRStatementVTable* vtable; +}; + +CLOOP_EXTERN_C ISC_INT64 ITraceBLRStatement_getStmtID(struct ITraceBLRStatement* self); +CLOOP_EXTERN_C struct PerformanceInfo* ITraceBLRStatement_getPerf(struct ITraceBLRStatement* self); +CLOOP_EXTERN_C const unsigned char* ITraceBLRStatement_getData(struct ITraceBLRStatement* self); +CLOOP_EXTERN_C unsigned ITraceBLRStatement_getDataLength(struct ITraceBLRStatement* self); +CLOOP_EXTERN_C const char* ITraceBLRStatement_getText(struct ITraceBLRStatement* self); + +#define ITraceDYNRequest_VERSION 2 + +struct ITraceDYNRequest; + +struct ITraceDYNRequestVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const unsigned char* (*getData)(struct ITraceDYNRequest* self); + unsigned (*getDataLength)(struct ITraceDYNRequest* self); + const char* (*getText)(struct ITraceDYNRequest* self); +}; + +struct ITraceDYNRequest +{ + void* cloopDummy[1]; + struct ITraceDYNRequestVTable* vtable; +}; + +CLOOP_EXTERN_C const unsigned char* ITraceDYNRequest_getData(struct ITraceDYNRequest* self); +CLOOP_EXTERN_C unsigned ITraceDYNRequest_getDataLength(struct ITraceDYNRequest* self); +CLOOP_EXTERN_C const char* ITraceDYNRequest_getText(struct ITraceDYNRequest* self); + +#define ITraceContextVariable_VERSION 2 + +struct ITraceContextVariable; + +struct ITraceContextVariableVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getNameSpace)(struct ITraceContextVariable* self); + const char* (*getVarName)(struct ITraceContextVariable* self); + const char* (*getVarValue)(struct ITraceContextVariable* self); +}; + +struct ITraceContextVariable +{ + void* cloopDummy[1]; + struct ITraceContextVariableVTable* vtable; +}; + +CLOOP_EXTERN_C const char* ITraceContextVariable_getNameSpace(struct ITraceContextVariable* self); +CLOOP_EXTERN_C const char* ITraceContextVariable_getVarName(struct ITraceContextVariable* self); +CLOOP_EXTERN_C const char* ITraceContextVariable_getVarValue(struct ITraceContextVariable* self); + +#define ITraceProcedure_VERSION 3 + +struct ITraceProcedure; + +struct ITraceProcedureVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getProcName)(struct ITraceProcedure* self); + struct ITraceParams* (*getInputs)(struct ITraceProcedure* self); + struct PerformanceInfo* (*getPerf)(struct ITraceProcedure* self); + ISC_INT64 (*getStmtID)(struct ITraceProcedure* self); + const char* (*getPlan)(struct ITraceProcedure* self); + const char* (*getExplainedPlan)(struct ITraceProcedure* self); +}; + +struct ITraceProcedure +{ + void* cloopDummy[1]; + struct ITraceProcedureVTable* vtable; +}; + +CLOOP_EXTERN_C const char* ITraceProcedure_getProcName(struct ITraceProcedure* self); +CLOOP_EXTERN_C struct ITraceParams* ITraceProcedure_getInputs(struct ITraceProcedure* self); +CLOOP_EXTERN_C struct PerformanceInfo* ITraceProcedure_getPerf(struct ITraceProcedure* self); +CLOOP_EXTERN_C ISC_INT64 ITraceProcedure_getStmtID(struct ITraceProcedure* self); +CLOOP_EXTERN_C const char* ITraceProcedure_getPlan(struct ITraceProcedure* self); +CLOOP_EXTERN_C const char* ITraceProcedure_getExplainedPlan(struct ITraceProcedure* self); + +#define ITraceFunction_VERSION 3 + +struct ITraceFunction; + +struct ITraceFunctionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getFuncName)(struct ITraceFunction* self); + struct ITraceParams* (*getInputs)(struct ITraceFunction* self); + struct ITraceParams* (*getResult)(struct ITraceFunction* self); + struct PerformanceInfo* (*getPerf)(struct ITraceFunction* self); + ISC_INT64 (*getStmtID)(struct ITraceFunction* self); + const char* (*getPlan)(struct ITraceFunction* self); + const char* (*getExplainedPlan)(struct ITraceFunction* self); +}; + +struct ITraceFunction +{ + void* cloopDummy[1]; + struct ITraceFunctionVTable* vtable; +}; + +CLOOP_EXTERN_C const char* ITraceFunction_getFuncName(struct ITraceFunction* self); +CLOOP_EXTERN_C struct ITraceParams* ITraceFunction_getInputs(struct ITraceFunction* self); +CLOOP_EXTERN_C struct ITraceParams* ITraceFunction_getResult(struct ITraceFunction* self); +CLOOP_EXTERN_C struct PerformanceInfo* ITraceFunction_getPerf(struct ITraceFunction* self); +CLOOP_EXTERN_C ISC_INT64 ITraceFunction_getStmtID(struct ITraceFunction* self); +CLOOP_EXTERN_C const char* ITraceFunction_getPlan(struct ITraceFunction* self); +CLOOP_EXTERN_C const char* ITraceFunction_getExplainedPlan(struct ITraceFunction* self); + +#define ITraceTrigger_VERSION 3 + +#define ITraceTrigger_TYPE_ALL ((unsigned) (0)) +#define ITraceTrigger_TYPE_BEFORE ((unsigned) (1)) +#define ITraceTrigger_TYPE_AFTER ((unsigned) (2)) + +struct ITraceTrigger; + +struct ITraceTriggerVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getTriggerName)(struct ITraceTrigger* self); + const char* (*getRelationName)(struct ITraceTrigger* self); + int (*getAction)(struct ITraceTrigger* self); + int (*getWhich)(struct ITraceTrigger* self); + struct PerformanceInfo* (*getPerf)(struct ITraceTrigger* self); + ISC_INT64 (*getStmtID)(struct ITraceTrigger* self); + const char* (*getPlan)(struct ITraceTrigger* self); + const char* (*getExplainedPlan)(struct ITraceTrigger* self); +}; + +struct ITraceTrigger +{ + void* cloopDummy[1]; + struct ITraceTriggerVTable* vtable; +}; + +CLOOP_EXTERN_C const char* ITraceTrigger_getTriggerName(struct ITraceTrigger* self); +CLOOP_EXTERN_C const char* ITraceTrigger_getRelationName(struct ITraceTrigger* self); +CLOOP_EXTERN_C int ITraceTrigger_getAction(struct ITraceTrigger* self); +CLOOP_EXTERN_C int ITraceTrigger_getWhich(struct ITraceTrigger* self); +CLOOP_EXTERN_C struct PerformanceInfo* ITraceTrigger_getPerf(struct ITraceTrigger* self); +CLOOP_EXTERN_C ISC_INT64 ITraceTrigger_getStmtID(struct ITraceTrigger* self); +CLOOP_EXTERN_C const char* ITraceTrigger_getPlan(struct ITraceTrigger* self); +CLOOP_EXTERN_C const char* ITraceTrigger_getExplainedPlan(struct ITraceTrigger* self); + +#define ITraceServiceConnection_VERSION 3 + +struct ITraceServiceConnection; + +struct ITraceServiceConnectionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + unsigned (*getKind)(struct ITraceServiceConnection* self); + int (*getProcessID)(struct ITraceServiceConnection* self); + const char* (*getUserName)(struct ITraceServiceConnection* self); + const char* (*getRoleName)(struct ITraceServiceConnection* self); + const char* (*getCharSet)(struct ITraceServiceConnection* self); + const char* (*getRemoteProtocol)(struct ITraceServiceConnection* self); + const char* (*getRemoteAddress)(struct ITraceServiceConnection* self); + int (*getRemoteProcessID)(struct ITraceServiceConnection* self); + const char* (*getRemoteProcessName)(struct ITraceServiceConnection* self); + void* (*getServiceID)(struct ITraceServiceConnection* self); + const char* (*getServiceMgr)(struct ITraceServiceConnection* self); + const char* (*getServiceName)(struct ITraceServiceConnection* self); +}; + +struct ITraceServiceConnection +{ + void* cloopDummy[1]; + struct ITraceServiceConnectionVTable* vtable; +}; + +CLOOP_EXTERN_C unsigned ITraceServiceConnection_getKind(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C int ITraceServiceConnection_getProcessID(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C const char* ITraceServiceConnection_getUserName(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C const char* ITraceServiceConnection_getRoleName(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C const char* ITraceServiceConnection_getCharSet(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C const char* ITraceServiceConnection_getRemoteProtocol(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C const char* ITraceServiceConnection_getRemoteAddress(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C int ITraceServiceConnection_getRemoteProcessID(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C const char* ITraceServiceConnection_getRemoteProcessName(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C void* ITraceServiceConnection_getServiceID(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C const char* ITraceServiceConnection_getServiceMgr(struct ITraceServiceConnection* self); +CLOOP_EXTERN_C const char* ITraceServiceConnection_getServiceName(struct ITraceServiceConnection* self); + +#define ITraceStatusVector_VERSION 2 + +struct ITraceStatusVector; + +struct ITraceStatusVectorVTable +{ + void* cloopDummy[1]; + uintptr_t version; + FB_BOOLEAN (*hasError)(struct ITraceStatusVector* self); + FB_BOOLEAN (*hasWarning)(struct ITraceStatusVector* self); + struct IStatus* (*getStatus)(struct ITraceStatusVector* self); + const char* (*getText)(struct ITraceStatusVector* self); +}; + +struct ITraceStatusVector +{ + void* cloopDummy[1]; + struct ITraceStatusVectorVTable* vtable; +}; + +CLOOP_EXTERN_C FB_BOOLEAN ITraceStatusVector_hasError(struct ITraceStatusVector* self); +CLOOP_EXTERN_C FB_BOOLEAN ITraceStatusVector_hasWarning(struct ITraceStatusVector* self); +CLOOP_EXTERN_C struct IStatus* ITraceStatusVector_getStatus(struct ITraceStatusVector* self); +CLOOP_EXTERN_C const char* ITraceStatusVector_getText(struct ITraceStatusVector* self); + +#define ITraceSweepInfo_VERSION 2 + +struct ITraceSweepInfo; + +struct ITraceSweepInfoVTable +{ + void* cloopDummy[1]; + uintptr_t version; + ISC_INT64 (*getOIT)(struct ITraceSweepInfo* self); + ISC_INT64 (*getOST)(struct ITraceSweepInfo* self); + ISC_INT64 (*getOAT)(struct ITraceSweepInfo* self); + ISC_INT64 (*getNext)(struct ITraceSweepInfo* self); + struct PerformanceInfo* (*getPerf)(struct ITraceSweepInfo* self); +}; + +struct ITraceSweepInfo +{ + void* cloopDummy[1]; + struct ITraceSweepInfoVTable* vtable; +}; + +CLOOP_EXTERN_C ISC_INT64 ITraceSweepInfo_getOIT(struct ITraceSweepInfo* self); +CLOOP_EXTERN_C ISC_INT64 ITraceSweepInfo_getOST(struct ITraceSweepInfo* self); +CLOOP_EXTERN_C ISC_INT64 ITraceSweepInfo_getOAT(struct ITraceSweepInfo* self); +CLOOP_EXTERN_C ISC_INT64 ITraceSweepInfo_getNext(struct ITraceSweepInfo* self); +CLOOP_EXTERN_C struct PerformanceInfo* ITraceSweepInfo_getPerf(struct ITraceSweepInfo* self); + +#define ITraceLogWriter_VERSION 4 + +struct ITraceLogWriter; + +struct ITraceLogWriterVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct ITraceLogWriter* self); + int (*release)(struct ITraceLogWriter* self); + unsigned (*write)(struct ITraceLogWriter* self, const void* buf, unsigned size); + unsigned (*write_s)(struct ITraceLogWriter* self, struct IStatus* status, const void* buf, unsigned size); +}; + +struct ITraceLogWriter +{ + void* cloopDummy[1]; + struct ITraceLogWriterVTable* vtable; +}; + +CLOOP_EXTERN_C void ITraceLogWriter_addRef(struct ITraceLogWriter* self); +CLOOP_EXTERN_C int ITraceLogWriter_release(struct ITraceLogWriter* self); +CLOOP_EXTERN_C unsigned ITraceLogWriter_write(struct ITraceLogWriter* self, const void* buf, unsigned size); +CLOOP_EXTERN_C unsigned ITraceLogWriter_write_s(struct ITraceLogWriter* self, struct IStatus* status, const void* buf, unsigned size); + +#define ITraceInitInfo_VERSION 2 + +struct ITraceInitInfo; + +struct ITraceInitInfoVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getConfigText)(struct ITraceInitInfo* self); + int (*getTraceSessionID)(struct ITraceInitInfo* self); + const char* (*getTraceSessionName)(struct ITraceInitInfo* self); + const char* (*getFirebirdRootDirectory)(struct ITraceInitInfo* self); + const char* (*getDatabaseName)(struct ITraceInitInfo* self); + struct ITraceDatabaseConnection* (*getConnection)(struct ITraceInitInfo* self); + struct ITraceLogWriter* (*getLogWriter)(struct ITraceInitInfo* self); +}; + +struct ITraceInitInfo +{ + void* cloopDummy[1]; + struct ITraceInitInfoVTable* vtable; +}; + +CLOOP_EXTERN_C const char* ITraceInitInfo_getConfigText(struct ITraceInitInfo* self); +CLOOP_EXTERN_C int ITraceInitInfo_getTraceSessionID(struct ITraceInitInfo* self); +CLOOP_EXTERN_C const char* ITraceInitInfo_getTraceSessionName(struct ITraceInitInfo* self); +CLOOP_EXTERN_C const char* ITraceInitInfo_getFirebirdRootDirectory(struct ITraceInitInfo* self); +CLOOP_EXTERN_C const char* ITraceInitInfo_getDatabaseName(struct ITraceInitInfo* self); +CLOOP_EXTERN_C struct ITraceDatabaseConnection* ITraceInitInfo_getConnection(struct ITraceInitInfo* self); +CLOOP_EXTERN_C struct ITraceLogWriter* ITraceInitInfo_getLogWriter(struct ITraceInitInfo* self); + +#define ITracePlugin_VERSION 5 + +#define ITracePlugin_RESULT_SUCCESS ((unsigned) (0)) +#define ITracePlugin_RESULT_FAILED ((unsigned) (1)) +#define ITracePlugin_RESULT_UNAUTHORIZED ((unsigned) (2)) +#define ITracePlugin_SWEEP_STATE_STARTED ((unsigned) (1)) +#define ITracePlugin_SWEEP_STATE_FINISHED ((unsigned) (2)) +#define ITracePlugin_SWEEP_STATE_FAILED ((unsigned) (3)) +#define ITracePlugin_SWEEP_STATE_PROGRESS ((unsigned) (4)) + +struct ITracePlugin; + +struct ITracePluginVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct ITracePlugin* self); + int (*release)(struct ITracePlugin* self); + const char* (*trace_get_error)(struct ITracePlugin* self); + FB_BOOLEAN (*trace_attach)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, FB_BOOLEAN create_db, unsigned att_result); + FB_BOOLEAN (*trace_detach)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, FB_BOOLEAN drop_db); + FB_BOOLEAN (*trace_transaction_start)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, unsigned tpb_length, const unsigned char* tpb, unsigned tra_result); + FB_BOOLEAN (*trace_transaction_end)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, FB_BOOLEAN commit, FB_BOOLEAN retain_context, unsigned tra_result); + FB_BOOLEAN (*trace_proc_execute)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceProcedure* procedure, FB_BOOLEAN started, unsigned proc_result); + FB_BOOLEAN (*trace_trigger_execute)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceTrigger* trigger, FB_BOOLEAN started, unsigned trig_result); + FB_BOOLEAN (*trace_set_context)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceContextVariable* variable); + FB_BOOLEAN (*trace_dsql_prepare)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, ISC_INT64 time_millis, unsigned req_result); + FB_BOOLEAN (*trace_dsql_free)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceSQLStatement* statement, unsigned option); + FB_BOOLEAN (*trace_dsql_execute)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, FB_BOOLEAN started, unsigned req_result); + FB_BOOLEAN (*trace_blr_compile)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceBLRStatement* statement, ISC_INT64 time_millis, unsigned req_result); + FB_BOOLEAN (*trace_blr_execute)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceBLRStatement* statement, unsigned req_result); + FB_BOOLEAN (*trace_dyn_execute)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceDYNRequest* request, ISC_INT64 time_millis, unsigned req_result); + FB_BOOLEAN (*trace_service_attach)(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned att_result); + FB_BOOLEAN (*trace_service_start)(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned switches_length, const char* switches, unsigned start_result); + FB_BOOLEAN (*trace_service_query)(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned send_item_length, const unsigned char* send_items, unsigned recv_item_length, const unsigned char* recv_items, unsigned query_result); + FB_BOOLEAN (*trace_service_detach)(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned detach_result); + FB_BOOLEAN (*trace_event_error)(struct ITracePlugin* self, struct ITraceConnection* connection, struct ITraceStatusVector* status, const char* function); + FB_BOOLEAN (*trace_event_sweep)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceSweepInfo* sweep, unsigned sweep_state); + FB_BOOLEAN (*trace_func_execute)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceFunction* function, FB_BOOLEAN started, unsigned func_result); + FB_BOOLEAN (*trace_dsql_restart)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, unsigned number); + FB_BOOLEAN (*trace_proc_compile)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceProcedure* procedure, ISC_INT64 time_millis, unsigned proc_result); + FB_BOOLEAN (*trace_func_compile)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceFunction* function, ISC_INT64 time_millis, unsigned func_result); + FB_BOOLEAN (*trace_trigger_compile)(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTrigger* trigger, ISC_INT64 time_millis, unsigned trig_result); +}; + +struct ITracePlugin +{ + void* cloopDummy[1]; + struct ITracePluginVTable* vtable; +}; + +CLOOP_EXTERN_C void ITracePlugin_addRef(struct ITracePlugin* self); +CLOOP_EXTERN_C int ITracePlugin_release(struct ITracePlugin* self); +CLOOP_EXTERN_C const char* ITracePlugin_trace_get_error(struct ITracePlugin* self); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_attach(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, FB_BOOLEAN create_db, unsigned att_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_detach(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, FB_BOOLEAN drop_db); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_transaction_start(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, unsigned tpb_length, const unsigned char* tpb, unsigned tra_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_transaction_end(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, FB_BOOLEAN commit, FB_BOOLEAN retain_context, unsigned tra_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_proc_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceProcedure* procedure, FB_BOOLEAN started, unsigned proc_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_trigger_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceTrigger* trigger, FB_BOOLEAN started, unsigned trig_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_set_context(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceContextVariable* variable); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dsql_prepare(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, ISC_INT64 time_millis, unsigned req_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dsql_free(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceSQLStatement* statement, unsigned option); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dsql_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, FB_BOOLEAN started, unsigned req_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_blr_compile(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceBLRStatement* statement, ISC_INT64 time_millis, unsigned req_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_blr_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceBLRStatement* statement, unsigned req_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dyn_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceDYNRequest* request, ISC_INT64 time_millis, unsigned req_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_service_attach(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned att_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_service_start(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned switches_length, const char* switches, unsigned start_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_service_query(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned send_item_length, const unsigned char* send_items, unsigned recv_item_length, const unsigned char* recv_items, unsigned query_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_service_detach(struct ITracePlugin* self, struct ITraceServiceConnection* service, unsigned detach_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_event_error(struct ITracePlugin* self, struct ITraceConnection* connection, struct ITraceStatusVector* status, const char* function); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_event_sweep(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceSweepInfo* sweep, unsigned sweep_state); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_func_execute(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceFunction* function, FB_BOOLEAN started, unsigned func_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_dsql_restart(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTransaction* transaction, struct ITraceSQLStatement* statement, unsigned number); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_proc_compile(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceProcedure* procedure, ISC_INT64 time_millis, unsigned proc_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_func_compile(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceFunction* function, ISC_INT64 time_millis, unsigned func_result); +CLOOP_EXTERN_C FB_BOOLEAN ITracePlugin_trace_trigger_compile(struct ITracePlugin* self, struct ITraceDatabaseConnection* connection, struct ITraceTrigger* trigger, ISC_INT64 time_millis, unsigned trig_result); + +#define ITraceFactory_VERSION 4 + +#define ITraceFactory_TRACE_EVENT_ATTACH ((unsigned) (0)) +#define ITraceFactory_TRACE_EVENT_DETACH ((unsigned) (1)) +#define ITraceFactory_TRACE_EVENT_TRANSACTION_START ((unsigned) (2)) +#define ITraceFactory_TRACE_EVENT_TRANSACTION_END ((unsigned) (3)) +#define ITraceFactory_TRACE_EVENT_SET_CONTEXT ((unsigned) (4)) +#define ITraceFactory_TRACE_EVENT_PROC_EXECUTE ((unsigned) (5)) +#define ITraceFactory_TRACE_EVENT_TRIGGER_EXECUTE ((unsigned) (6)) +#define ITraceFactory_TRACE_EVENT_DSQL_PREPARE ((unsigned) (7)) +#define ITraceFactory_TRACE_EVENT_DSQL_FREE ((unsigned) (8)) +#define ITraceFactory_TRACE_EVENT_DSQL_EXECUTE ((unsigned) (9)) +#define ITraceFactory_TRACE_EVENT_BLR_COMPILE ((unsigned) (10)) +#define ITraceFactory_TRACE_EVENT_BLR_EXECUTE ((unsigned) (11)) +#define ITraceFactory_TRACE_EVENT_DYN_EXECUTE ((unsigned) (12)) +#define ITraceFactory_TRACE_EVENT_SERVICE_ATTACH ((unsigned) (13)) +#define ITraceFactory_TRACE_EVENT_SERVICE_START ((unsigned) (14)) +#define ITraceFactory_TRACE_EVENT_SERVICE_QUERY ((unsigned) (15)) +#define ITraceFactory_TRACE_EVENT_SERVICE_DETACH ((unsigned) (16)) +#define ITraceFactory_TRACE_EVENT_ERROR ((unsigned) (17)) +#define ITraceFactory_TRACE_EVENT_SWEEP ((unsigned) (18)) +#define ITraceFactory_TRACE_EVENT_FUNC_EXECUTE ((unsigned) (19)) +#define ITraceFactory_TRACE_EVENT_PROC_COMPILE ((unsigned) (20)) +#define ITraceFactory_TRACE_EVENT_FUNC_COMPILE ((unsigned) (21)) +#define ITraceFactory_TRACE_EVENT_TRIGGER_COMPILE ((unsigned) (22)) +#define ITraceFactory_TRACE_EVENT_MAX ((unsigned) (23)) + +struct ITraceFactory; + +struct ITraceFactoryVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct ITraceFactory* self); + int (*release)(struct ITraceFactory* self); + void (*setOwner)(struct ITraceFactory* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct ITraceFactory* self); + ISC_UINT64 (*trace_needs)(struct ITraceFactory* self); + struct ITracePlugin* (*trace_create)(struct ITraceFactory* self, struct IStatus* status, struct ITraceInitInfo* init_info); +}; + +struct ITraceFactory +{ + void* cloopDummy[1]; + struct ITraceFactoryVTable* vtable; +}; + +CLOOP_EXTERN_C void ITraceFactory_addRef(struct ITraceFactory* self); +CLOOP_EXTERN_C int ITraceFactory_release(struct ITraceFactory* self); +CLOOP_EXTERN_C void ITraceFactory_setOwner(struct ITraceFactory* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* ITraceFactory_getOwner(struct ITraceFactory* self); +CLOOP_EXTERN_C ISC_UINT64 ITraceFactory_trace_needs(struct ITraceFactory* self); +CLOOP_EXTERN_C struct ITracePlugin* ITraceFactory_trace_create(struct ITraceFactory* self, struct IStatus* status, struct ITraceInitInfo* init_info); + +#define IUdrFunctionFactory_VERSION 3 + +struct IUdrFunctionFactory; + +struct IUdrFunctionFactoryVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IUdrFunctionFactory* self); + void (*setup)(struct IUdrFunctionFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder); + struct IExternalFunction* (*newItem)(struct IUdrFunctionFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata); +}; + +struct IUdrFunctionFactory +{ + void* cloopDummy[1]; + struct IUdrFunctionFactoryVTable* vtable; +}; + +CLOOP_EXTERN_C void IUdrFunctionFactory_dispose(struct IUdrFunctionFactory* self); +CLOOP_EXTERN_C void IUdrFunctionFactory_setup(struct IUdrFunctionFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder); +CLOOP_EXTERN_C struct IExternalFunction* IUdrFunctionFactory_newItem(struct IUdrFunctionFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata); + +#define IUdrProcedureFactory_VERSION 3 + +struct IUdrProcedureFactory; + +struct IUdrProcedureFactoryVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IUdrProcedureFactory* self); + void (*setup)(struct IUdrProcedureFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder); + struct IExternalProcedure* (*newItem)(struct IUdrProcedureFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata); +}; + +struct IUdrProcedureFactory +{ + void* cloopDummy[1]; + struct IUdrProcedureFactoryVTable* vtable; +}; + +CLOOP_EXTERN_C void IUdrProcedureFactory_dispose(struct IUdrProcedureFactory* self); +CLOOP_EXTERN_C void IUdrProcedureFactory_setup(struct IUdrProcedureFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* inBuilder, struct IMetadataBuilder* outBuilder); +CLOOP_EXTERN_C struct IExternalProcedure* IUdrProcedureFactory_newItem(struct IUdrProcedureFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata); + +#define IUdrTriggerFactory_VERSION 3 + +struct IUdrTriggerFactory; + +struct IUdrTriggerFactoryVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IUdrTriggerFactory* self); + void (*setup)(struct IUdrTriggerFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* fieldsBuilder); + struct IExternalTrigger* (*newItem)(struct IUdrTriggerFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata); +}; + +struct IUdrTriggerFactory +{ + void* cloopDummy[1]; + struct IUdrTriggerFactoryVTable* vtable; +}; + +CLOOP_EXTERN_C void IUdrTriggerFactory_dispose(struct IUdrTriggerFactory* self); +CLOOP_EXTERN_C void IUdrTriggerFactory_setup(struct IUdrTriggerFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata, struct IMetadataBuilder* fieldsBuilder); +CLOOP_EXTERN_C struct IExternalTrigger* IUdrTriggerFactory_newItem(struct IUdrTriggerFactory* self, struct IStatus* status, struct IExternalContext* context, struct IRoutineMetadata* metadata); + +#define IUdrPlugin_VERSION 2 + +struct IUdrPlugin; + +struct IUdrPluginVTable +{ + void* cloopDummy[1]; + uintptr_t version; + struct IMaster* (*getMaster)(struct IUdrPlugin* self); + void (*registerFunction)(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrFunctionFactory* factory); + void (*registerProcedure)(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrProcedureFactory* factory); + void (*registerTrigger)(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrTriggerFactory* factory); +}; + +struct IUdrPlugin +{ + void* cloopDummy[1]; + struct IUdrPluginVTable* vtable; +}; + +CLOOP_EXTERN_C struct IMaster* IUdrPlugin_getMaster(struct IUdrPlugin* self); +CLOOP_EXTERN_C void IUdrPlugin_registerFunction(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrFunctionFactory* factory); +CLOOP_EXTERN_C void IUdrPlugin_registerProcedure(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrProcedureFactory* factory); +CLOOP_EXTERN_C void IUdrPlugin_registerTrigger(struct IUdrPlugin* self, struct IStatus* status, const char* name, struct IUdrTriggerFactory* factory); + +#define IDecFloat16_VERSION 2 + +#define IDecFloat16_BCD_SIZE ((unsigned) (16)) +#define IDecFloat16_STRING_SIZE ((unsigned) (24)) + +struct IDecFloat16; + +struct IDecFloat16VTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*toBcd)(struct IDecFloat16* self, const FB_DEC16* from, int* sign, unsigned char* bcd, int* exp); + void (*toString)(struct IDecFloat16* self, struct IStatus* status, const FB_DEC16* from, unsigned bufferLength, char* buffer); + void (*fromBcd)(struct IDecFloat16* self, int sign, const unsigned char* bcd, int exp, FB_DEC16* to); + void (*fromString)(struct IDecFloat16* self, struct IStatus* status, const char* from, FB_DEC16* to); +}; + +struct IDecFloat16 +{ + void* cloopDummy[1]; + struct IDecFloat16VTable* vtable; +}; + +CLOOP_EXTERN_C void IDecFloat16_toBcd(struct IDecFloat16* self, const FB_DEC16* from, int* sign, unsigned char* bcd, int* exp); +CLOOP_EXTERN_C void IDecFloat16_toString(struct IDecFloat16* self, struct IStatus* status, const FB_DEC16* from, unsigned bufferLength, char* buffer); +CLOOP_EXTERN_C void IDecFloat16_fromBcd(struct IDecFloat16* self, int sign, const unsigned char* bcd, int exp, FB_DEC16* to); +CLOOP_EXTERN_C void IDecFloat16_fromString(struct IDecFloat16* self, struct IStatus* status, const char* from, FB_DEC16* to); + +#define IDecFloat34_VERSION 2 + +#define IDecFloat34_BCD_SIZE ((unsigned) (34)) +#define IDecFloat34_STRING_SIZE ((unsigned) (43)) + +struct IDecFloat34; + +struct IDecFloat34VTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*toBcd)(struct IDecFloat34* self, const FB_DEC34* from, int* sign, unsigned char* bcd, int* exp); + void (*toString)(struct IDecFloat34* self, struct IStatus* status, const FB_DEC34* from, unsigned bufferLength, char* buffer); + void (*fromBcd)(struct IDecFloat34* self, int sign, const unsigned char* bcd, int exp, FB_DEC34* to); + void (*fromString)(struct IDecFloat34* self, struct IStatus* status, const char* from, FB_DEC34* to); +}; + +struct IDecFloat34 +{ + void* cloopDummy[1]; + struct IDecFloat34VTable* vtable; +}; + +CLOOP_EXTERN_C void IDecFloat34_toBcd(struct IDecFloat34* self, const FB_DEC34* from, int* sign, unsigned char* bcd, int* exp); +CLOOP_EXTERN_C void IDecFloat34_toString(struct IDecFloat34* self, struct IStatus* status, const FB_DEC34* from, unsigned bufferLength, char* buffer); +CLOOP_EXTERN_C void IDecFloat34_fromBcd(struct IDecFloat34* self, int sign, const unsigned char* bcd, int exp, FB_DEC34* to); +CLOOP_EXTERN_C void IDecFloat34_fromString(struct IDecFloat34* self, struct IStatus* status, const char* from, FB_DEC34* to); + +#define IInt128_VERSION 2 + +#define IInt128_STRING_SIZE ((unsigned) (46)) + +struct IInt128; + +struct IInt128VTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*toString)(struct IInt128* self, struct IStatus* status, const FB_I128* from, int scale, unsigned bufferLength, char* buffer); + void (*fromString)(struct IInt128* self, struct IStatus* status, int scale, const char* from, FB_I128* to); +}; + +struct IInt128 +{ + void* cloopDummy[1]; + struct IInt128VTable* vtable; +}; + +CLOOP_EXTERN_C void IInt128_toString(struct IInt128* self, struct IStatus* status, const FB_I128* from, int scale, unsigned bufferLength, char* buffer); +CLOOP_EXTERN_C void IInt128_fromString(struct IInt128* self, struct IStatus* status, int scale, const char* from, FB_I128* to); + +#define IReplicatedField_VERSION 2 + +struct IReplicatedField; + +struct IReplicatedFieldVTable +{ + void* cloopDummy[1]; + uintptr_t version; + const char* (*getName)(struct IReplicatedField* self); + unsigned (*getType)(struct IReplicatedField* self); + int (*getSubType)(struct IReplicatedField* self); + int (*getScale)(struct IReplicatedField* self); + unsigned (*getLength)(struct IReplicatedField* self); + unsigned (*getCharSet)(struct IReplicatedField* self); + const void* (*getData)(struct IReplicatedField* self); +}; + +struct IReplicatedField +{ + void* cloopDummy[1]; + struct IReplicatedFieldVTable* vtable; +}; + +CLOOP_EXTERN_C const char* IReplicatedField_getName(struct IReplicatedField* self); +CLOOP_EXTERN_C unsigned IReplicatedField_getType(struct IReplicatedField* self); +CLOOP_EXTERN_C int IReplicatedField_getSubType(struct IReplicatedField* self); +CLOOP_EXTERN_C int IReplicatedField_getScale(struct IReplicatedField* self); +CLOOP_EXTERN_C unsigned IReplicatedField_getLength(struct IReplicatedField* self); +CLOOP_EXTERN_C unsigned IReplicatedField_getCharSet(struct IReplicatedField* self); +CLOOP_EXTERN_C const void* IReplicatedField_getData(struct IReplicatedField* self); + +#define IReplicatedRecord_VERSION 2 + +struct IReplicatedRecord; + +struct IReplicatedRecordVTable +{ + void* cloopDummy[1]; + uintptr_t version; + unsigned (*getCount)(struct IReplicatedRecord* self); + struct IReplicatedField* (*getField)(struct IReplicatedRecord* self, unsigned index); + unsigned (*getRawLength)(struct IReplicatedRecord* self); + const unsigned char* (*getRawData)(struct IReplicatedRecord* self); +}; + +struct IReplicatedRecord +{ + void* cloopDummy[1]; + struct IReplicatedRecordVTable* vtable; +}; + +CLOOP_EXTERN_C unsigned IReplicatedRecord_getCount(struct IReplicatedRecord* self); +CLOOP_EXTERN_C struct IReplicatedField* IReplicatedRecord_getField(struct IReplicatedRecord* self, unsigned index); +CLOOP_EXTERN_C unsigned IReplicatedRecord_getRawLength(struct IReplicatedRecord* self); +CLOOP_EXTERN_C const unsigned char* IReplicatedRecord_getRawData(struct IReplicatedRecord* self); + +#define IReplicatedTransaction_VERSION 3 + +struct IReplicatedTransaction; + +struct IReplicatedTransactionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IReplicatedTransaction* self); + void (*prepare)(struct IReplicatedTransaction* self, struct IStatus* status); + void (*commit)(struct IReplicatedTransaction* self, struct IStatus* status); + void (*rollback)(struct IReplicatedTransaction* self, struct IStatus* status); + void (*startSavepoint)(struct IReplicatedTransaction* self, struct IStatus* status); + void (*releaseSavepoint)(struct IReplicatedTransaction* self, struct IStatus* status); + void (*rollbackSavepoint)(struct IReplicatedTransaction* self, struct IStatus* status); + void (*insertRecord)(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* record); + void (*updateRecord)(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* orgRecord, struct IReplicatedRecord* newRecord); + void (*deleteRecord)(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* record); + void (*executeSql)(struct IReplicatedTransaction* self, struct IStatus* status, const char* sql); + void (*executeSqlIntl)(struct IReplicatedTransaction* self, struct IStatus* status, unsigned charset, const char* sql); +}; + +struct IReplicatedTransaction +{ + void* cloopDummy[1]; + struct IReplicatedTransactionVTable* vtable; +}; + +CLOOP_EXTERN_C void IReplicatedTransaction_dispose(struct IReplicatedTransaction* self); +CLOOP_EXTERN_C void IReplicatedTransaction_prepare(struct IReplicatedTransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void IReplicatedTransaction_commit(struct IReplicatedTransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void IReplicatedTransaction_rollback(struct IReplicatedTransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void IReplicatedTransaction_startSavepoint(struct IReplicatedTransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void IReplicatedTransaction_releaseSavepoint(struct IReplicatedTransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void IReplicatedTransaction_rollbackSavepoint(struct IReplicatedTransaction* self, struct IStatus* status); +CLOOP_EXTERN_C void IReplicatedTransaction_insertRecord(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* record); +CLOOP_EXTERN_C void IReplicatedTransaction_updateRecord(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* orgRecord, struct IReplicatedRecord* newRecord); +CLOOP_EXTERN_C void IReplicatedTransaction_deleteRecord(struct IReplicatedTransaction* self, struct IStatus* status, const char* name, struct IReplicatedRecord* record); +CLOOP_EXTERN_C void IReplicatedTransaction_executeSql(struct IReplicatedTransaction* self, struct IStatus* status, const char* sql); +CLOOP_EXTERN_C void IReplicatedTransaction_executeSqlIntl(struct IReplicatedTransaction* self, struct IStatus* status, unsigned charset, const char* sql); + +#define IReplicatedSession_VERSION 4 + +struct IReplicatedSession; + +struct IReplicatedSessionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IReplicatedSession* self); + int (*release)(struct IReplicatedSession* self); + void (*setOwner)(struct IReplicatedSession* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IReplicatedSession* self); + FB_BOOLEAN (*init)(struct IReplicatedSession* self, struct IStatus* status, struct IAttachment* attachment); + struct IReplicatedTransaction* (*startTransaction)(struct IReplicatedSession* self, struct IStatus* status, struct ITransaction* transaction, ISC_INT64 number); + void (*cleanupTransaction)(struct IReplicatedSession* self, struct IStatus* status, ISC_INT64 number); + void (*setSequence)(struct IReplicatedSession* self, struct IStatus* status, const char* name, ISC_INT64 value); +}; + +struct IReplicatedSession +{ + void* cloopDummy[1]; + struct IReplicatedSessionVTable* vtable; +}; + +CLOOP_EXTERN_C void IReplicatedSession_addRef(struct IReplicatedSession* self); +CLOOP_EXTERN_C int IReplicatedSession_release(struct IReplicatedSession* self); +CLOOP_EXTERN_C void IReplicatedSession_setOwner(struct IReplicatedSession* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IReplicatedSession_getOwner(struct IReplicatedSession* self); +CLOOP_EXTERN_C FB_BOOLEAN IReplicatedSession_init(struct IReplicatedSession* self, struct IStatus* status, struct IAttachment* attachment); +CLOOP_EXTERN_C struct IReplicatedTransaction* IReplicatedSession_startTransaction(struct IReplicatedSession* self, struct IStatus* status, struct ITransaction* transaction, ISC_INT64 number); +CLOOP_EXTERN_C void IReplicatedSession_cleanupTransaction(struct IReplicatedSession* self, struct IStatus* status, ISC_INT64 number); +CLOOP_EXTERN_C void IReplicatedSession_setSequence(struct IReplicatedSession* self, struct IStatus* status, const char* name, ISC_INT64 value); + +#define IProfilerPlugin_VERSION 4 + +struct IProfilerPlugin; + +struct IProfilerPluginVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*addRef)(struct IProfilerPlugin* self); + int (*release)(struct IProfilerPlugin* self); + void (*setOwner)(struct IProfilerPlugin* self, struct IReferenceCounted* r); + struct IReferenceCounted* (*getOwner)(struct IProfilerPlugin* self); + void (*init)(struct IProfilerPlugin* self, struct IStatus* status, struct IAttachment* attachment, ISC_UINT64 ticksFrequency); + struct IProfilerSession* (*startSession)(struct IProfilerPlugin* self, struct IStatus* status, const char* description, const char* options, ISC_TIMESTAMP_TZ timestamp); + void (*flush)(struct IProfilerPlugin* self, struct IStatus* status); +}; + +struct IProfilerPlugin +{ + void* cloopDummy[1]; + struct IProfilerPluginVTable* vtable; +}; + +CLOOP_EXTERN_C void IProfilerPlugin_addRef(struct IProfilerPlugin* self); +CLOOP_EXTERN_C int IProfilerPlugin_release(struct IProfilerPlugin* self); +CLOOP_EXTERN_C void IProfilerPlugin_setOwner(struct IProfilerPlugin* self, struct IReferenceCounted* r); +CLOOP_EXTERN_C struct IReferenceCounted* IProfilerPlugin_getOwner(struct IProfilerPlugin* self); +CLOOP_EXTERN_C void IProfilerPlugin_init(struct IProfilerPlugin* self, struct IStatus* status, struct IAttachment* attachment, ISC_UINT64 ticksFrequency); +CLOOP_EXTERN_C struct IProfilerSession* IProfilerPlugin_startSession(struct IProfilerPlugin* self, struct IStatus* status, const char* description, const char* options, ISC_TIMESTAMP_TZ timestamp); +CLOOP_EXTERN_C void IProfilerPlugin_flush(struct IProfilerPlugin* self, struct IStatus* status); + +#define IProfilerSession_VERSION 3 + +#define IProfilerSession_FLAG_BEFORE_EVENTS ((unsigned) (0x1)) +#define IProfilerSession_FLAG_AFTER_EVENTS ((unsigned) (0x2)) + +struct IProfilerSession; + +struct IProfilerSessionVTable +{ + void* cloopDummy[1]; + uintptr_t version; + void (*dispose)(struct IProfilerSession* self); + ISC_INT64 (*getId)(struct IProfilerSession* self); + unsigned (*getFlags)(struct IProfilerSession* self); + void (*cancel)(struct IProfilerSession* self, struct IStatus* status); + void (*finish)(struct IProfilerSession* self, struct IStatus* status, ISC_TIMESTAMP_TZ timestamp); + void (*defineStatement)(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 parentStatementId, const char* type, const char* packageName, const char* routineName, const char* sqlText); + void (*defineCursor)(struct IProfilerSession* self, ISC_INT64 statementId, unsigned cursorId, const char* name, unsigned line, unsigned column); + void (*defineRecordSource)(struct IProfilerSession* self, ISC_INT64 statementId, unsigned cursorId, unsigned recSourceId, unsigned level, const char* accessPath, unsigned parentRecSourceId); + void (*onRequestStart)(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 requestId, ISC_INT64 callerStatementId, ISC_INT64 callerRequestId, ISC_TIMESTAMP_TZ timestamp); + void (*onRequestFinish)(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 requestId, ISC_TIMESTAMP_TZ timestamp, struct IProfilerStats* stats); + void (*beforePsqlLineColumn)(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned line, unsigned column); + void (*afterPsqlLineColumn)(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned line, unsigned column, struct IProfilerStats* stats); + void (*beforeRecordSourceOpen)(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId); + void (*afterRecordSourceOpen)(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId, struct IProfilerStats* stats); + void (*beforeRecordSourceGetRecord)(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId); + void (*afterRecordSourceGetRecord)(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId, struct IProfilerStats* stats); +}; + +struct IProfilerSession +{ + void* cloopDummy[1]; + struct IProfilerSessionVTable* vtable; +}; + +CLOOP_EXTERN_C void IProfilerSession_dispose(struct IProfilerSession* self); +CLOOP_EXTERN_C ISC_INT64 IProfilerSession_getId(struct IProfilerSession* self); +CLOOP_EXTERN_C unsigned IProfilerSession_getFlags(struct IProfilerSession* self); +CLOOP_EXTERN_C void IProfilerSession_cancel(struct IProfilerSession* self, struct IStatus* status); +CLOOP_EXTERN_C void IProfilerSession_finish(struct IProfilerSession* self, struct IStatus* status, ISC_TIMESTAMP_TZ timestamp); +CLOOP_EXTERN_C void IProfilerSession_defineStatement(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 parentStatementId, const char* type, const char* packageName, const char* routineName, const char* sqlText); +CLOOP_EXTERN_C void IProfilerSession_defineCursor(struct IProfilerSession* self, ISC_INT64 statementId, unsigned cursorId, const char* name, unsigned line, unsigned column); +CLOOP_EXTERN_C void IProfilerSession_defineRecordSource(struct IProfilerSession* self, ISC_INT64 statementId, unsigned cursorId, unsigned recSourceId, unsigned level, const char* accessPath, unsigned parentRecSourceId); +CLOOP_EXTERN_C void IProfilerSession_onRequestStart(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 requestId, ISC_INT64 callerStatementId, ISC_INT64 callerRequestId, ISC_TIMESTAMP_TZ timestamp); +CLOOP_EXTERN_C void IProfilerSession_onRequestFinish(struct IProfilerSession* self, struct IStatus* status, ISC_INT64 statementId, ISC_INT64 requestId, ISC_TIMESTAMP_TZ timestamp, struct IProfilerStats* stats); +CLOOP_EXTERN_C void IProfilerSession_beforePsqlLineColumn(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned line, unsigned column); +CLOOP_EXTERN_C void IProfilerSession_afterPsqlLineColumn(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned line, unsigned column, struct IProfilerStats* stats); +CLOOP_EXTERN_C void IProfilerSession_beforeRecordSourceOpen(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId); +CLOOP_EXTERN_C void IProfilerSession_afterRecordSourceOpen(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId, struct IProfilerStats* stats); +CLOOP_EXTERN_C void IProfilerSession_beforeRecordSourceGetRecord(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId); +CLOOP_EXTERN_C void IProfilerSession_afterRecordSourceGetRecord(struct IProfilerSession* self, ISC_INT64 statementId, ISC_INT64 requestId, unsigned cursorId, unsigned recSourceId, struct IProfilerStats* stats); + +#define IProfilerStats_VERSION 2 + +struct IProfilerStats; + +struct IProfilerStatsVTable +{ + void* cloopDummy[1]; + uintptr_t version; + ISC_UINT64 (*getElapsedTicks)(struct IProfilerStats* self); +}; + +struct IProfilerStats +{ + void* cloopDummy[1]; + struct IProfilerStatsVTable* vtable; +}; + +CLOOP_EXTERN_C ISC_UINT64 IProfilerStats_getElapsedTicks(struct IProfilerStats* self); + + +#endif // FB_C_API_H