1 /* 2 3 Boost Software License - Version 1.0 - August 17th,2003 4 5 Permission is hereby granted,free of charge,to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use,reproduce,display,distribute, 8 execute,and transmit the Software,and to prepare derivative works of the 9 Software,and to permit third-parties to whom the Software is furnished to 10 do so,all subject to the following: 11 12 The copyright notices in the Software and this entire statement,including 13 the above license grant,this restriction and the following disclaimer, 14 must be included in all copies of the Software,in whole or in part,and 15 all derivative works of the Software,unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS",WITHOUT WARRANTY OF ANY KIND,EXPRESS OR 20 IMPLIED,INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE,TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY,WHETHER IN CONTRACT,TORT OR OTHERWISE, 24 ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 module derelict.pq.dynload; 29 30 version(Derelict_Static) {} 31 else version(DerelictPQ_Static) {} 32 else { version = DerelictPQ_Dynamic; } 33 34 version(DerelictPQ_Dynamic): 35 36 public import derelict.pq.types; 37 import derelict.util.exception, 38 derelict.util.loader, 39 derelict.util.system; 40 41 extern(C) @nogc nothrow { 42 alias da_PQconnectStart = PGconn* function(const(char)*); 43 alias da_PQconnectStartParams = PGconn* function(const(char*)*,const(char*)*,int); 44 alias da_PQconnectPoll = PostgresPollingStatusType function(PGconn*); 45 46 alias da_PQconnectdb = PGconn* function(const(char)*); 47 alias da_PQconnectdbParams = PGconn* function(const(char*)*,const(char*)*,int); 48 alias da_PQsetdbLogin = PGconn* function(const(char)*,const(char)*,const(char)*,const(char)*,const(char)*,const(char)*,const(char)*); 49 50 alias da_PQfinish = void function(PGconn*); 51 52 alias da_PQconndefaults = PQconninfoOption* function(); 53 alias da_PQconninfoParse = PQconninfoOption* function(const(char)*,char**); 54 alias da_PQconninfo = PQconninfoOption* function(PGconn*); 55 alias da_PQconninfoFree = void function(PQconninfoOption*); 56 57 alias da_PQresetStart = int function(PGconn*); 58 alias da_PQresetPoll = PostgresPollingStatusType function(PGconn*); 59 alias da_PQreset = void function(PGconn*); 60 61 alias da_PQgetCancel = PGcancel* function(PGconn*); 62 alias da_PQfreeCancel = void function(PGcancel*); 63 alias da_PQcancel = int function(PGcancel*,char*,int); 64 alias da_PQrequestCancel = int function(PGconn*); 65 66 alias da_PQdb = char* function(const(PGconn)*); 67 alias da_PQuser = char* function(const(PGconn)*); 68 alias da_PQpass = char* function(const(PGconn)*); 69 alias da_PQhost = char* function(const(PGconn)*); 70 alias da_PQport = char* function(const(PGconn)*); 71 alias da_PQtty = char* function(const(PGconn)*); 72 alias da_PQoptions = char* function(const(PGconn)*); 73 alias da_PQstatus = ConnStatusType function(const(PGconn)*); 74 alias da_PQtransactionStatus = PGTransactionStatusType function(const(PGconn)*); 75 alias da_PQparameterStatus = char* function(const(PGconn)*,const(char)*); 76 alias da_PQprotocolVersion = int function(const(PGconn)*); 77 alias da_PQserverVersion = int function(const(PGconn)*); 78 alias da_PQerrorMessage = char* function(const(PGconn)*); 79 alias da_PQsocket = int function(const(PGconn)*); 80 alias da_PQbackendPID = int function(const(PGconn)*); 81 alias da_PQconnectionNeedsPassword = int function(const(PGconn)*); 82 alias da_PQconnectionUsedPassword = int function(const(PGconn)*); 83 alias da_PQclientEncoding = int function(const(PGconn)*); 84 alias da_PQsetClientEncoding = int function(PGconn*,const(char)*); 85 86 // The next four are new in 9.5 87 alias da_PQsslInUse = int function(PGconn*); 88 alias da_PQsslStruct = void* function(PGconn*,const(char)*); 89 alias da_PQsslAttribute = const(char)* function(PGconn*,const(char)*); 90 alias da_PQsslAttributeNames = const(char*)* function(PGconn*); 91 92 alias da_PQgetssl = void* function(PGconn*); 93 alias da_PQinitSSL = void function(int); 94 alias da_PQinitOpenSSL = void function(int,int); 95 96 alias da_PQsetErrorVerbosity = PGVerbosity function(PGconn*,PGVerbosity); 97 // The next one is new in 9.6 98 alias da_PQsetErrorContextVisibility = PGContextVisibility function(PGconn*,PGContextVisibility); 99 alias da_PQtrace = void function(PGconn*,FILE*); 100 alias da_PQuntrace = void function(PGconn*); 101 102 alias da_PQsetNoticeReceiver = PQnoticeReceiver function(PGconn*,PQnoticeReceiver,void*); 103 alias da_PQsetNoticeProcessor = PQnoticeProcessor function(PGconn*,PQnoticeProcessor,void*); 104 105 alias da_PQregisterThreadLock = pgthreadlock_t function(pgthreadlock_t); 106 107 alias da_PQexec = PGresult* function(PGconn*,const(char)*); 108 alias da_PQexecParams = PGresult* function(PGconn*,const(char)*,int,const(Oid)*,const(ubyte*)*,const(int)*,const int*,int); 109 alias da_PQprepare = PGresult* function(PGconn*,const(char)*,const(char)*,int,const(Oid)*); 110 alias da_PQexecPrepared = PGresult* function(PGconn*,const(char)*,int,const(char*)*,const(int)*,const(int)*,int); 111 alias da_PQsendQuery = int function(PGconn*,const(char)*); 112 alias da_PQsendQueryParams = int function(PGconn*,const(char)*,int,const(Oid)*,const(ubyte*)*,const(int)*,const(int)*,int); 113 alias da_PQsendPrepare = int function(PGconn*,const(char)*,const(char)*,int,const(Oid)*); 114 alias da_PQsendQueryPrepared = int function(PGconn*,const(char)*,int,const(ubyte*)*,const(int)*,const(int)*,int); 115 alias da_PQsetSingleRowMode = int function(PGconn*); 116 alias da_PQgetResult = PGresult* function(PGconn*); 117 118 alias da_PQisBusy = int function(PGconn*); 119 alias da_PQconsumeInput = int function(PGconn*); 120 121 alias da_PQnotifies = immutable (PGnotify)* function(PGconn*); 122 123 alias da_PQputCopyData = int function(PGconn*,const(char)*,int); 124 alias da_PQputCopyEnd = int function(PGconn*,const(char)*); 125 alias da_PQgetCopyData = int function(PGconn*,char**,int); 126 127 alias da_PQgetline = int function(PGconn*,char*,int); 128 alias da_PQputline = int function(PGconn*,const(char)*); 129 alias da_PQgetlineAsync = int function(PGconn*,char*,int); 130 alias da_PQputnbytes = int function(PGconn*,const(char)*,int); 131 alias da_PQendcopy = int function(PGconn*); 132 133 alias da_PQsetnonblocking = int function(PGconn*,int); 134 alias da_PQisnonblocking = int function(PGconn*); 135 alias da_PQisthreadsafe = int function(); 136 alias da_PQping = PGPing function(const(char)*); 137 alias da_PQpingParams = PGPing function(const(char*)*,const(char*)*,int); 138 139 alias da_PQflush = int function(PGconn*); 140 141 alias da_PQfn = PGresult* function(PGconn*,int,int*,int*,int,PQArgBlock*,int); 142 alias da_PQresultStatus = ExecStatusType function(const(PGresult)*); 143 alias da_PQresStatus = char* function(ExecStatusType); 144 alias da_PQresultErrorMessage = char* function(const(PGresult)*); 145 // The next one is new in 9.6 146 alias da_PQresultVerboseErrorMessage = char* function(const(PGresult)*,PGVerbosity,PGContextVisibility); 147 alias da_PQresultErrorField = char* function(const(PGresult)*,int); 148 alias da_PQntuples = int function(const(PGresult)*); 149 alias da_PQnfields = int function(const(PGresult)*); 150 alias da_PQbinaryTuples = int function(const(PGresult)*); 151 alias da_PQfname = char* function(const(PGresult)*,int); 152 alias da_PQfnumber = int function(const(PGresult)*,const(char)*); 153 alias da_PQftable = Oid function(PGresult*,int); 154 alias da_PQftablecol = int function(const(PGresult)*,int); 155 alias da_PQfformat = int function(const(PGresult)*,int); 156 alias da_PQftype = Oid function(const(PGresult)*,int); 157 alias da_PQfsize = int function(const(PGresult)*,int); 158 alias da_PQfmod = int function(const(PGresult)*,int); 159 alias da_PQcmdStatus = char* function(PGresult*); 160 alias da_PQoidStatus = char* function(PGresult*); 161 alias da_PQoidValue = Oid function(const(PGresult)*); 162 alias da_PQcmdTuples = char* function(PGresult*); 163 alias da_PQgetvalue = const(ubyte)* function(const(PGresult)*,int,int); 164 alias da_PQgetlength = int function(const(PGresult)*,int,int); 165 alias da_PQgetisnull = int function(const(PGresult)*,int,int); 166 alias da_PQnparams = int function(const(PGresult)*); 167 alias da_PQparamtype = Oid function(const(PGresult)*,int); 168 169 alias da_PQdescribePrepared = PGresult* function(PGconn*,const(char)*); 170 alias da_PQdescribePortal = PGresult* function(PGconn*,const(char)*); 171 alias da_PQsendDescribePrepared = int function(PGconn*,const(char)*); 172 alias da_PQsendDescribePortal = int function(PGconn*,const(char)*); 173 174 alias da_PQclear = void function(const(PGresult)*); 175 alias da_PQfreemem = void function(void*); 176 177 alias da_PQmakeEmptyPGresult = PGresult* function(PGconn*,ExecStatusType); 178 alias da_PQcopyResult = PGresult* function(const(PGresult)*,int); 179 alias da_PQsetResultAttrs = int function(PGresult*,int,PGresAttDesc*); 180 alias da_PQresultAlloc = void* function(PGresult*,size_t); 181 alias da_PQsetvalue = int function(PGresult*,int,int,char*,int); 182 183 alias da_PQescapeStringConn = size_t function(PGconn*,char*,char*,size_t,int*); 184 alias da_PQescapeLiteral = char* function(PGconn*,const(char)*,size_t); 185 alias da_PQescapeIdentifier = char* function(PGconn*,const(char)*,size_t); 186 alias da_PQescapeByteaConn = ubyte* function(PGconn*,ubyte*,size_t,size_t*); 187 alias da_PQunescapeBytea = ubyte* function(ubyte*,size_t*); 188 189 alias da_PQescapeString = size_t function(char*,char*,size_t); 190 alias da_PQescapeBytea = ubyte* function(ubyte*,size_t,size_t*); 191 192 alias da_PQprint = void function(FILE*,PGresult*,PQprintOpt*); 193 alias da_PQdisplayTuples = void function(PGresult*,FILE*,int,char*,int,int); 194 alias da_PQprintTuples = void function(PGresult*,FILE*,int,int,int); 195 196 alias da_lo_open = int function(PGconn*,Oid,int); 197 alias da_lo_close = int function(PGconn*,int); 198 alias da_lo_read = int function(PGconn*,int,char*,size_t); 199 alias da_lo_write = int function(PGconn*,int,const(char)*,size_t); 200 alias da_lo_lseek = int function(PGconn*,int,int,int); 201 alias da_lo_lseek64 = pg_int64 function(PGconn*,int,pg_int64,int); 202 alias da_lo_creat = Oid function(PGconn*,int); 203 alias da_lo_create = Oid function(PGconn*,Oid); 204 alias da_lo_tell = int function(PGconn*,int); 205 alias da_lo_tell64 = pg_int64 function(PGconn*,int); 206 alias da_lo_truncate = int function(PGconn*,int,size_t); 207 alias da_lo_truncate64 = int function(PGconn*,int,pg_int64); 208 alias da_lo_unlink = int function(PGconn*,Oid); 209 alias da_lo_import = Oid function(PGconn*,const(char)*); 210 alias da_lo_import_with_oid = Oid function(PGconn*,const(char)*,Oid); 211 alias da_lo_export = int function(PGconn*,Oid,const(char)*); 212 213 alias da_PQlibVersion = int function(); 214 alias da_PQmblen = int function(char*,int); 215 alias da_PQdsplen = int function(char*,int); 216 alias da_PQenv2encoding = int function(); 217 alias da_PQencryptPassword = char* function(char*,char*); 218 219 alias da_pg_char_to_encoding = int function(const(char)*); 220 alias da_pg_encoding_to_char = const(char)* function(int); 221 alias da_pg_valid_server_encoding_id = int function(int); 222 223 alias da_PQregisterEventProc = int function(PGconn*,PGEventProc,const(char)*,void*); 224 alias da_PQsetInstanceData = int function(PGconn*,PGEventProc,void*); 225 } 226 227 __gshared { 228 da_PQconnectStart PQconnectStart; 229 da_PQconnectStartParams PQconnectStartParams; 230 da_PQconnectPoll PQconnectPoll; 231 da_PQconnectdb PQconnectdb; 232 da_PQconnectdbParams PQconnectdbParams; 233 da_PQsetdbLogin PQsetdbLogin; 234 da_PQfinish PQfinish; 235 da_PQconndefaults PQconndefaults; 236 da_PQconninfoParse PQconninfoParse; 237 da_PQconninfo PQconninfo; 238 da_PQconninfoFree PQconninfoFree; 239 da_PQresetStart PQresetStart; 240 da_PQresetPoll PQresetPoll; 241 da_PQreset PQreset; 242 da_PQgetCancel PQgetCancel; 243 da_PQfreeCancel PQfreeCancel; 244 da_PQcancel PQcancel; 245 da_PQrequestCancel PQrequestCancel; 246 da_PQdb PQdb; 247 da_PQuser PQuser; 248 da_PQpass PQpass; 249 da_PQhost PQhost; 250 da_PQport PQport; 251 da_PQtty PQtty; 252 da_PQoptions PQoptions; 253 da_PQstatus PQstatus; 254 da_PQtransactionStatus PQtransactionStatus; 255 da_PQparameterStatus PQparameterStatus; 256 da_PQprotocolVersion PQprotocolVersion; 257 da_PQserverVersion PQserverVersion; 258 da_PQerrorMessage PQerrorMessage; 259 da_PQsocket PQsocket; 260 da_PQbackendPID PQbackendPID; 261 da_PQconnectionNeedsPassword PQconnectionNeedsPassword; 262 da_PQconnectionUsedPassword PQconnectionUsedPassword; 263 da_PQclientEncoding PQclientEncoding; 264 da_PQsetClientEncoding PQsetClientEncoding; 265 da_PQsslInUse PQsslInUse; 266 da_PQsslStruct PQsslStruct; 267 da_PQsslAttribute PQsslAttribute; 268 da_PQsslAttributeNames PQsslAttributeNames; 269 da_PQgetssl PQgetssl; 270 da_PQinitSSL PQinitSSL; 271 da_PQinitOpenSSL PQinitOpenSSL; 272 da_PQsetErrorVerbosity PQsetErrorVerbosity; 273 da_PQsetErrorContextVisibility PQsetErrorContextVisibility; 274 da_PQtrace PQtrace; 275 da_PQuntrace PQuntrace; 276 da_PQsetNoticeReceiver PQsetNoticeReceiver; 277 da_PQsetNoticeProcessor PQsetNoticeProcessor; 278 da_PQregisterThreadLock PQregisterThreadLock; 279 da_PQexec PQexec; 280 da_PQexecParams PQexecParams; 281 da_PQprepare PQprepare; 282 da_PQexecPrepared PQexecPrepared; 283 da_PQsendQuery PQsendQuery; 284 da_PQsendQueryParams PQsendQueryParams; 285 da_PQsendPrepare PQsendPrepare; 286 da_PQsendQueryPrepared PQsendQueryPrepared; 287 da_PQsetSingleRowMode PQsetSingleRowMode; 288 da_PQgetResult PQgetResult; 289 da_PQisBusy PQisBusy; 290 da_PQconsumeInput PQconsumeInput; 291 da_PQnotifies PQnotifies; 292 da_PQputCopyData PQputCopyData; 293 da_PQputCopyEnd PQputCopyEnd; 294 da_PQgetCopyData PQgetCopyData; 295 da_PQgetline PQgetline; 296 da_PQputline PQputline; 297 da_PQgetlineAsync PQgetlineAsync; 298 da_PQputnbytes PQputnbytes; 299 da_PQendcopy PQendcopy; 300 da_PQsetnonblocking PQsetnonblocking; 301 da_PQisnonblocking PQisnonblocking; 302 da_PQisthreadsafe PQisthreadsafe; 303 da_PQping PQping; 304 da_PQpingParams PQpingParams; 305 da_PQflush PQflush; 306 da_PQfn PQfn; 307 da_PQresultStatus PQresultStatus; 308 da_PQresStatus PQresStatus; 309 da_PQresultErrorMessage PQresultErrorMessage; 310 da_PQresultVerboseErrorMessage PQresultVerboseErrorMessage; 311 da_PQresultErrorField PQresultErrorField; 312 da_PQntuples PQntuples; 313 da_PQnfields PQnfields; 314 da_PQbinaryTuples PQbinaryTuples; 315 da_PQfname PQfname; 316 da_PQfnumber PQfnumber; 317 da_PQftable PQftable; 318 da_PQftablecol PQftablecol; 319 da_PQfformat PQfformat; 320 da_PQftype PQftype; 321 da_PQfsize PQfsize; 322 da_PQfmod PQfmod; 323 da_PQcmdStatus PQcmdStatus; 324 da_PQoidStatus PQoidStatus; 325 da_PQoidValue PQoidValue; 326 da_PQcmdTuples PQcmdTuples; 327 da_PQgetvalue PQgetvalue; 328 da_PQgetlength PQgetlength; 329 da_PQgetisnull PQgetisnull; 330 da_PQnparams PQnparams; 331 da_PQparamtype PQparamtype; 332 da_PQdescribePrepared PQdescribePrepared; 333 da_PQdescribePortal PQdescribePortal; 334 da_PQsendDescribePrepared PQsendDescribePrepared; 335 da_PQsendDescribePortal PQsendDescribePortal; 336 da_PQclear PQclear; 337 da_PQfreemem PQfreemem; 338 da_PQmakeEmptyPGresult PQmakeEmptyPGresult; 339 da_PQcopyResult PQcopyResult; 340 da_PQsetResultAttrs PQsetResultAttrs; 341 da_PQresultAlloc PQresultAlloc; 342 da_PQsetvalue PQsetvalue; 343 da_PQescapeStringConn PQescapeStringConn; 344 da_PQescapeLiteral PQescapeLiteral; 345 da_PQescapeIdentifier PQescapeIdentifier; 346 da_PQescapeByteaConn PQescapeByteaConn; 347 da_PQunescapeBytea PQunescapeBytea; 348 da_PQescapeString PQescapeString; 349 da_PQescapeBytea PQescapeBytea; 350 da_PQprint PQprint; 351 da_PQdisplayTuples PQdisplayTuples; 352 da_PQprintTuples PQprintTuples; 353 da_lo_open lo_open; 354 da_lo_close lo_close; 355 da_lo_read lo_read; 356 da_lo_write lo_write; 357 da_lo_lseek lo_lseek; 358 da_lo_lseek64 lo_lseek64; 359 da_lo_creat lo_creat; 360 da_lo_create lo_create; 361 da_lo_tell lo_tell; 362 da_lo_tell64 lo_tell64; 363 da_lo_truncate lo_truncate; 364 da_lo_truncate64 lo_truncate64; 365 da_lo_unlink lo_unlink; 366 da_lo_import lo_import; 367 da_lo_import_with_oid lo_import_with_oid; 368 da_lo_export lo_export; 369 da_PQlibVersion PQlibVersion; 370 da_PQmblen PQmblen; 371 da_PQdsplen PQdsplen; 372 da_PQenv2encoding PQenv2encoding; 373 da_PQencryptPassword PQencryptPassword; 374 da_pg_char_to_encoding pg_char_to_encoding; 375 da_pg_encoding_to_char pg_encoding_to_char; 376 da_pg_valid_server_encoding_id pg_valid_server_encoding_id; 377 da_PQregisterEventProc PQregisterEventProc; 378 da_PQsetInstanceData PQsetInstanceData; 379 } 380 381 382 class DerelictPQLoader : SharedLibLoader { 383 this() 384 { 385 super(libNames); 386 } 387 388 protected override void loadSymbols() 389 { 390 bindFunc(cast(void**)&PQconnectStart, "PQconnectStart"); 391 bindFunc(cast(void**)&PQconnectStartParams, "PQconnectStartParams"); 392 bindFunc(cast(void**)&PQconnectPoll, "PQconnectPoll"); 393 bindFunc(cast(void**)&PQconnectdb, "PQconnectdb"); 394 bindFunc(cast(void**)&PQconnectdbParams, "PQconnectdbParams"); 395 bindFunc(cast(void**)&PQsetdbLogin, "PQsetdbLogin"); 396 bindFunc(cast(void**)&PQfinish, "PQfinish"); 397 bindFunc(cast(void**)&PQconndefaults, "PQconndefaults"); 398 bindFunc(cast(void**)&PQconninfoParse, "PQconninfoParse"); 399 bindFunc(cast(void**)&PQconninfoFree, "PQconninfoFree"); 400 bindFunc(cast(void**)&PQresetStart, "PQresetStart"); 401 bindFunc(cast(void**)&PQresetPoll, "PQresetPoll"); 402 bindFunc(cast(void**)&PQreset, "PQreset"); 403 bindFunc(cast(void**)&PQgetCancel, "PQgetCancel"); 404 bindFunc(cast(void**)&PQfreeCancel, "PQfreeCancel"); 405 bindFunc(cast(void**)&PQcancel, "PQcancel"); 406 bindFunc(cast(void**)&PQrequestCancel, "PQrequestCancel"); 407 bindFunc(cast(void**)&PQdb, "PQdb"); 408 bindFunc(cast(void**)&PQuser, "PQuser"); 409 bindFunc(cast(void**)&PQpass, "PQpass"); 410 bindFunc(cast(void**)&PQhost, "PQhost"); 411 bindFunc(cast(void**)&PQport, "PQport"); 412 bindFunc(cast(void**)&PQtty, "PQtty"); 413 bindFunc(cast(void**)&PQoptions, "PQoptions"); 414 bindFunc(cast(void**)&PQstatus, "PQstatus"); 415 bindFunc(cast(void**)&PQtransactionStatus, "PQtransactionStatus"); 416 bindFunc(cast(void**)&PQparameterStatus, "PQparameterStatus"); 417 bindFunc(cast(void**)&PQprotocolVersion, "PQprotocolVersion"); 418 bindFunc(cast(void**)&PQserverVersion, "PQserverVersion"); 419 bindFunc(cast(void**)&PQerrorMessage, "PQerrorMessage"); 420 bindFunc(cast(void**)&PQsocket, "PQsocket"); 421 bindFunc(cast(void**)&PQbackendPID, "PQbackendPID"); 422 bindFunc(cast(void**)&PQconnectionNeedsPassword, "PQconnectionNeedsPassword"); 423 bindFunc(cast(void**)&PQconnectionUsedPassword, "PQconnectionUsedPassword"); 424 bindFunc(cast(void**)&PQclientEncoding, "PQclientEncoding"); 425 bindFunc(cast(void**)&PQsetClientEncoding, "PQsetClientEncoding"); 426 bindFunc(cast(void**)&PQsslInUse, "PQsslInUse"); 427 bindFunc(cast(void**)&PQsslStruct, "PQsslStruct"); 428 bindFunc(cast(void**)&PQsslAttribute, "PQsslAttribute"); 429 bindFunc(cast(void**)&PQsslAttributeNames, "PQsslAttributeNames"); 430 bindFunc(cast(void**)&PQgetssl, "PQgetssl"); 431 bindFunc(cast(void**)&PQinitSSL, "PQinitSSL"); 432 bindFunc(cast(void**)&PQinitOpenSSL, "PQinitOpenSSL"); 433 bindFunc(cast(void**)&PQsetErrorVerbosity, "PQsetErrorVerbosity"); 434 bindFunc(cast(void**)&PQsetErrorContextVisibility, "PQsetErrorContextVisibility"); 435 bindFunc(cast(void**)&PQtrace, "PQtrace"); 436 bindFunc(cast(void**)&PQuntrace, "PQuntrace"); 437 bindFunc(cast(void**)&PQsetNoticeReceiver, "PQsetNoticeReceiver"); 438 bindFunc(cast(void**)&PQsetNoticeProcessor, "PQsetNoticeProcessor"); 439 bindFunc(cast(void**)&PQregisterThreadLock, "PQregisterThreadLock"); 440 bindFunc(cast(void**)&PQexec, "PQexec"); 441 bindFunc(cast(void**)&PQexecParams, "PQexecParams"); 442 bindFunc(cast(void**)&PQprepare, "PQprepare"); 443 bindFunc(cast(void**)&PQexecPrepared, "PQexecPrepared"); 444 bindFunc(cast(void**)&PQsendQuery, "PQsendQuery"); 445 bindFunc(cast(void**)&PQsendQueryParams, "PQsendQueryParams"); 446 bindFunc(cast(void**)&PQsendPrepare, "PQsendPrepare"); 447 bindFunc(cast(void**)&PQsendQueryPrepared, "PQsendQueryPrepared"); 448 bindFunc(cast(void**)&PQgetResult, "PQgetResult"); 449 bindFunc(cast(void**)&PQisBusy, "PQisBusy"); 450 bindFunc(cast(void**)&PQconsumeInput, "PQconsumeInput"); 451 bindFunc(cast(void**)&PQnotifies, "PQnotifies"); 452 bindFunc(cast(void**)&PQputCopyData, "PQputCopyData"); 453 bindFunc(cast(void**)&PQputCopyEnd, "PQputCopyEnd"); 454 bindFunc(cast(void**)&PQgetCopyData, "PQgetCopyData"); 455 bindFunc(cast(void**)&PQgetline, "PQgetline"); 456 bindFunc(cast(void**)&PQputline, "PQputline"); 457 bindFunc(cast(void**)&PQgetlineAsync, "PQgetlineAsync"); 458 bindFunc(cast(void**)&PQputnbytes, "PQputnbytes"); 459 bindFunc(cast(void**)&PQendcopy, "PQendcopy"); 460 bindFunc(cast(void**)&PQsetnonblocking, "PQsetnonblocking"); 461 bindFunc(cast(void**)&PQisnonblocking, "PQisnonblocking"); 462 bindFunc(cast(void**)&PQisthreadsafe, "PQisthreadsafe"); 463 bindFunc(cast(void**)&PQping, "PQping"); 464 bindFunc(cast(void**)&PQpingParams, "PQpingParams"); 465 bindFunc(cast(void**)&PQflush, "PQflush"); 466 bindFunc(cast(void**)&PQfn, "PQfn"); 467 bindFunc(cast(void**)&PQresultStatus, "PQresultStatus"); 468 bindFunc(cast(void**)&PQresStatus, "PQresStatus"); 469 bindFunc(cast(void**)&PQresultErrorMessage, "PQresultErrorMessage"); 470 bindFunc(cast(void**)&PQresultVerboseErrorMessage, "PQresultVerboseErrorMessage"); 471 bindFunc(cast(void**)&PQresultErrorField, "PQresultErrorField"); 472 bindFunc(cast(void**)&PQntuples, "PQntuples"); 473 bindFunc(cast(void**)&PQnfields, "PQnfields"); 474 bindFunc(cast(void**)&PQbinaryTuples, "PQbinaryTuples"); 475 bindFunc(cast(void**)&PQfname, "PQfname"); 476 bindFunc(cast(void**)&PQfnumber, "PQfnumber"); 477 bindFunc(cast(void**)&PQftable, "PQftable"); 478 bindFunc(cast(void**)&PQftablecol, "PQftablecol"); 479 bindFunc(cast(void**)&PQfformat, "PQfformat"); 480 bindFunc(cast(void**)&PQftype, "PQftype"); 481 bindFunc(cast(void**)&PQfsize, "PQfsize"); 482 bindFunc(cast(void**)&PQfmod, "PQfmod"); 483 bindFunc(cast(void**)&PQcmdStatus, "PQcmdStatus"); 484 bindFunc(cast(void**)&PQoidStatus, "PQoidStatus"); 485 bindFunc(cast(void**)&PQoidValue, "PQoidValue"); 486 bindFunc(cast(void**)&PQcmdTuples, "PQcmdTuples"); 487 bindFunc(cast(void**)&PQgetvalue, "PQgetvalue"); 488 bindFunc(cast(void**)&PQgetlength, "PQgetlength"); 489 bindFunc(cast(void**)&PQgetisnull, "PQgetisnull"); 490 bindFunc(cast(void**)&PQnparams, "PQnparams"); 491 bindFunc(cast(void**)&PQparamtype, "PQparamtype"); 492 bindFunc(cast(void**)&PQdescribePrepared, "PQdescribePrepared"); 493 bindFunc(cast(void**)&PQdescribePortal, "PQdescribePortal"); 494 bindFunc(cast(void**)&PQsendDescribePrepared, "PQsendDescribePrepared"); 495 bindFunc(cast(void**)&PQsendDescribePortal, "PQsendDescribePortal"); 496 bindFunc(cast(void**)&PQclear, "PQclear"); 497 bindFunc(cast(void**)&PQfreemem, "PQfreemem"); 498 bindFunc(cast(void**)&PQmakeEmptyPGresult, "PQmakeEmptyPGresult"); 499 bindFunc(cast(void**)&PQcopyResult, "PQcopyResult"); 500 bindFunc(cast(void**)&PQsetResultAttrs, "PQsetResultAttrs"); 501 bindFunc(cast(void**)&PQresultAlloc, "PQresultAlloc"); 502 bindFunc(cast(void**)&PQsetvalue, "PQsetvalue"); 503 bindFunc(cast(void**)&PQescapeStringConn, "PQescapeStringConn"); 504 bindFunc(cast(void**)&PQescapeLiteral, "PQescapeLiteral"); 505 bindFunc(cast(void**)&PQescapeIdentifier, "PQescapeIdentifier"); 506 bindFunc(cast(void**)&PQescapeByteaConn, "PQescapeByteaConn"); 507 bindFunc(cast(void**)&PQunescapeBytea, "PQunescapeBytea"); 508 bindFunc(cast(void**)&PQescapeString, "PQescapeString"); 509 bindFunc(cast(void**)&PQescapeBytea, "PQescapeBytea"); 510 bindFunc(cast(void**)&PQprint, "PQprint"); 511 bindFunc(cast(void**)&PQdisplayTuples, "PQdisplayTuples"); 512 bindFunc(cast(void**)&PQprintTuples, "PQprintTuples"); 513 bindFunc(cast(void**)&lo_open, "lo_open"); 514 bindFunc(cast(void**)&lo_close, "lo_close"); 515 bindFunc(cast(void**)&lo_read, "lo_read"); 516 bindFunc(cast(void**)&lo_write, "lo_write"); 517 bindFunc(cast(void**)&lo_lseek, "lo_lseek"); 518 bindFunc(cast(void**)&lo_creat, "lo_creat"); 519 bindFunc(cast(void**)&lo_create, "lo_create"); 520 bindFunc(cast(void**)&lo_tell, "lo_tell"); 521 bindFunc(cast(void**)&lo_truncate, "lo_truncate"); 522 bindFunc(cast(void**)&lo_unlink, "lo_unlink"); 523 bindFunc(cast(void**)&lo_import, "lo_import"); 524 bindFunc(cast(void**)&lo_import_with_oid, "lo_import_with_oid"); 525 bindFunc(cast(void**)&lo_export, "lo_export"); 526 bindFunc(cast(void**)&PQlibVersion, "PQlibVersion"); 527 bindFunc(cast(void**)&PQmblen, "PQmblen"); 528 bindFunc(cast(void**)&PQdsplen, "PQdsplen"); 529 bindFunc(cast(void**)&PQenv2encoding, "PQenv2encoding"); 530 bindFunc(cast(void**)&PQencryptPassword, "PQencryptPassword"); 531 bindFunc(cast(void**)&pg_char_to_encoding, "pg_char_to_encoding"); 532 bindFunc(cast(void**)&pg_encoding_to_char, "pg_encoding_to_char"); 533 bindFunc(cast(void**)&pg_valid_server_encoding_id, "pg_valid_server_encoding_id"); 534 bindFunc(cast(void**)&PQregisterEventProc, "PQregisterEventProc"); 535 bindFunc(cast(void**)&PQsetInstanceData, "PQsetInstanceData"); 536 bindFunc(cast(void**)&PQsetSingleRowMode, "PQsetSingleRowMode"); 537 bindFunc(cast(void**)&PQconninfo, "PQconninfo"); 538 bindFunc(cast(void**)&lo_lseek64, "lo_lseek64"); 539 bindFunc(cast(void**)&lo_tell64, "lo_tell64"); 540 bindFunc(cast(void**)&lo_truncate64, "lo_truncate64"); 541 } 542 } 543 544 __gshared DerelictPQLoader DerelictPQ; 545 546 shared static this() 547 { 548 DerelictPQ = new DerelictPQLoader(); 549 } 550 551 private: 552 static if(Derelict_OS_Windows) 553 enum libNames = "libpq.dll"; 554 else static if(Derelict_OS_Mac) 555 enum libNames = "libpq.dylib"; 556 else static if(Derelict_OS_Posix) 557 enum libNames = "libpq.so"; 558 else 559 static assert(0, "Need to implement PostgreSQL libNames for this operating system.");