diff --git a/sqlite3/lib/src/ffi/libsqlite3.g.dart b/sqlite3/lib/src/ffi/libsqlite3.g.dart index a59c4c3d..2f25f008 100644 --- a/sqlite3/lib/src/ffi/libsqlite3.g.dart +++ b/sqlite3/lib/src/ffi/libsqlite3.g.dart @@ -2,56 +2,114 @@ // AUTO GENERATED FILE, DO NOT EDIT. // // Generated by `package:ffigen`. -// ignore_for_file: unused_import +// ignore_for_file: unused_import, unused_element, deprecated_member_use_from_same_package @ffi.DefaultAsset('package:sqlite3/src/ffi/libsqlite3.g.dart') library; import 'dart:ffi' as ffi; import '' as self; -@ffi.Native>() -external ffi.Pointer sqlite3_temp_directory; +@ffi.Native< + ffi.Pointer Function(ffi.Pointer, ffi.Int) +>() +external ffi.Pointer sqlite3_aggregate_context( + ffi.Pointer ctx, + int nBytes, +); -@ffi.Native() -external int sqlite3_initialize(); +@ffi.Native)>() +external int sqlite3_auto_extension(ffi.Pointer xEntryPoint); -@ffi.Native)>() -external void sqlite3_free(ffi.Pointer arg0); +@ffi.Native)>() +external int sqlite3_backup_finish(ffi.Pointer p); @ffi.Native< - ffi.Int Function( + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, - ffi.Pointer>, - ffi.Int, + ffi.Pointer, ffi.Pointer, ) >() -external int sqlite3_open_v2( - ffi.Pointer filename, - ffi.Pointer> ppDb, - int flags, - ffi.Pointer zVfs, +external ffi.Pointer sqlite3_backup_init( + ffi.Pointer pDestDb, + ffi.Pointer zDestDb, + ffi.Pointer pSrcDb, + ffi.Pointer zSrcDb, ); -@ffi.Native)>() -external int sqlite3_close_v2(ffi.Pointer db); +@ffi.Native)>() +external int sqlite3_backup_pagecount(ffi.Pointer p); + +@ffi.Native)>() +external int sqlite3_backup_remaining(ffi.Pointer p); + +@ffi.Native, ffi.Int)>() +external int sqlite3_backup_step(ffi.Pointer p, int nPage); @ffi.Native< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Uint64, + ffi.Pointer)>>, ) >() -external ffi.Pointer sqlite3_db_filename( - ffi.Pointer db, - ffi.Pointer zDbName, +external int sqlite3_bind_blob64( + ffi.Pointer pStmt, + int index, + ffi.Pointer data, + int length, + ffi.Pointer)>> + destructor, ); -@ffi.Native)>() -external int sqlite3_compileoption_used(ffi.Pointer zOptName); +@ffi.Native, ffi.Int, ffi.Double)>() +external int sqlite3_bind_double( + ffi.Pointer pStmt, + int index, + double data, +); -@ffi.Native Function(ffi.Int)>() -external ffi.Pointer sqlite3_compileoption_get(int N); +@ffi.Native, ffi.Int, ffi.Int64)>() +external int sqlite3_bind_int64( + ffi.Pointer pStmt, + int index, + int data, +); + +@ffi.Native, ffi.Int)>() +external int sqlite3_bind_null(ffi.Pointer pStmt, int index); + +@ffi.Native)>(isLeaf: true) +external int sqlite3_bind_parameter_count(ffi.Pointer pStmt); + +@ffi.Native< + ffi.Int Function(ffi.Pointer, ffi.Pointer) +>() +external int sqlite3_bind_parameter_index( + ffi.Pointer arg0, + ffi.Pointer zName, +); + +@ffi.Native< + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Pointer)>>, + ) +>() +external int sqlite3_bind_text( + ffi.Pointer pStmt, + int index, + ffi.Pointer data, + int length, + ffi.Pointer)>> + destructor, +); @ffi.Native< ffi.Int Function( @@ -71,313 +129,128 @@ external int sqlite3_busy_handler( ffi.Pointer context, ); -@ffi.Native, ffi.Int)>() -external int sqlite3_extended_result_codes(ffi.Pointer db, int onoff); +@ffi.Native)>(isLeaf: true) +external int sqlite3_changes(ffi.Pointer db); @ffi.Native)>() -external int sqlite3_extended_errcode(ffi.Pointer db); +external int sqlite3_close_v2(ffi.Pointer db); -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer sqlite3_errmsg(ffi.Pointer db); +@ffi.Native< + ffi.Pointer Function(ffi.Pointer, ffi.Int) +>() +external ffi.Pointer sqlite3_column_blob( + ffi.Pointer pStmt, + int iCol, +); -@ffi.Native Function(ffi.Int)>() -external ffi.Pointer sqlite3_errstr(int code); +@ffi.Native, ffi.Int)>() +external int sqlite3_column_bytes(ffi.Pointer pStmt, int iCol); -@ffi.Native)>() -external int sqlite3_error_offset(ffi.Pointer db); +@ffi.Native)>(isLeaf: true) +external int sqlite3_column_count(ffi.Pointer pStmt); -@ffi.Native Function()>() -external ffi.Pointer sqlite3_libversion(); +@ffi.Native, ffi.Int)>() +external double sqlite3_column_double( + ffi.Pointer pStmt, + int iCol, +); -@ffi.Native Function()>() -external ffi.Pointer sqlite3_sourceid(); +@ffi.Native, ffi.Int)>() +external int sqlite3_column_int64(ffi.Pointer pStmt, int iCol); -@ffi.Native() -external int sqlite3_libversion_number(); +@ffi.Native< + ffi.Pointer Function(ffi.Pointer, ffi.Int) +>() +external ffi.Pointer sqlite3_column_name( + ffi.Pointer pStmt, + int N, +); -@ffi.Native)>(isLeaf: true) -external int sqlite3_last_insert_rowid(ffi.Pointer db); +@ffi.Native< + ffi.Pointer Function(ffi.Pointer, ffi.Int) +>() +external ffi.Pointer sqlite3_column_table_name( + ffi.Pointer pStmt, + int N, +); -@ffi.Native)>(isLeaf: true) -external int sqlite3_changes(ffi.Pointer db); +@ffi.Native< + ffi.Pointer Function(ffi.Pointer, ffi.Int) +>() +external ffi.Pointer sqlite3_column_text( + ffi.Pointer pStmt, + int iCol, +); + +@ffi.Native, ffi.Int)>() +external int sqlite3_column_type(ffi.Pointer pStmt, int iCol); @ffi.Native< - ffi.Int Function( + ffi.Pointer Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Pointer)>>, ffi.Pointer, - ffi.Pointer>, ) ->() -external int sqlite3_exec( - ffi.Pointer db, - ffi.Pointer sql, - ffi.Pointer callback, - ffi.Pointer argToCb, - ffi.Pointer> errorOut, +>(isLeaf: true) +external ffi.Pointer sqlite3_commit_hook( + ffi.Pointer arg0, + ffi.Pointer)>> arg1, + ffi.Pointer arg2, ); +@ffi.Native Function(ffi.Int)>() +external ffi.Pointer sqlite3_compileoption_get(int N); + +@ffi.Native)>() +external int sqlite3_compileoption_used(ffi.Pointer zOptName); + @ffi.Native< - ffi.Pointer Function( + ffi.Int Function( ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Pointer, ffi.Pointer< ffi.NativeFunction< - ffi.Void Function( + ffi.Int Function( ffi.Pointer, ffi.Int, - ffi.Pointer, - ffi.Pointer, - ffi.Int64, + ffi.Pointer, + ffi.Int, + ffi.Pointer, ) > >, - ffi.Pointer, + ffi.Pointer)>>, ) ->(isLeaf: true) -external ffi.Pointer sqlite3_update_hook( +>() +external int sqlite3_create_collation_v2( ffi.Pointer arg0, + ffi.Pointer zName, + int eTextRep, + ffi.Pointer pArg, ffi.Pointer< ffi.NativeFunction< - ffi.Void Function( + ffi.Int Function( ffi.Pointer, ffi.Int, - ffi.Pointer, - ffi.Pointer, - ffi.Int64, + ffi.Pointer, + ffi.Int, + ffi.Pointer, ) > > - arg1, - ffi.Pointer arg2, -); - -@ffi.Native< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer)>>, - ffi.Pointer, - ) ->(isLeaf: true) -external ffi.Pointer sqlite3_commit_hook( - ffi.Pointer arg0, - ffi.Pointer)>> arg1, - ffi.Pointer arg2, + xCompare, + ffi.Pointer)>> + xDestroy, ); @ffi.Native< - ffi.Pointer Function( + ffi.Int Function( ffi.Pointer, - ffi.Pointer)>>, - ffi.Pointer, - ) ->(isLeaf: true) -external ffi.Pointer sqlite3_rollback_hook( - ffi.Pointer arg0, - ffi.Pointer)>> - arg1, - ffi.Pointer arg2, -); - -@ffi.Native)>(isLeaf: true) -external int sqlite3_get_autocommit(ffi.Pointer db); - -@ffi.Native< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Pointer>, - ffi.Pointer>, - ) ->() -external int sqlite3_prepare_v2( - ffi.Pointer db, - ffi.Pointer zSql, - int nByte, - ffi.Pointer> ppStmt, - ffi.Pointer> pzTail, -); - -@ffi.Native< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.UnsignedInt, - ffi.Pointer>, - ffi.Pointer>, - ) ->() -external int sqlite3_prepare_v3( - ffi.Pointer db, - ffi.Pointer zSql, - int nByte, - int prepFlags, - ffi.Pointer> ppStmt, - ffi.Pointer> pzTail, -); - -@ffi.Native)>() -external int sqlite3_finalize(ffi.Pointer pStmt); - -@ffi.Native)>() -external int sqlite3_step(ffi.Pointer pStmt); - -@ffi.Native)>() -external int sqlite3_reset(ffi.Pointer pStmt); - -@ffi.Native)>(isLeaf: true) -external int sqlite3_stmt_isexplain(ffi.Pointer pStmt); - -@ffi.Native)>(isLeaf: true) -external int sqlite3_stmt_readonly(ffi.Pointer pStmt); - -@ffi.Native)>(isLeaf: true) -external int sqlite3_column_count(ffi.Pointer pStmt); - -@ffi.Native)>(isLeaf: true) -external int sqlite3_bind_parameter_count(ffi.Pointer pStmt); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Pointer) ->() -external int sqlite3_bind_parameter_index( - ffi.Pointer arg0, - ffi.Pointer zName, -); - -@ffi.Native< - ffi.Pointer Function(ffi.Pointer, ffi.Int) ->() -external ffi.Pointer sqlite3_column_name( - ffi.Pointer pStmt, - int N, -); - -@ffi.Native< - ffi.Pointer Function(ffi.Pointer, ffi.Int) ->() -external ffi.Pointer sqlite3_column_table_name( - ffi.Pointer pStmt, - int N, -); - -@ffi.Native< - ffi.Int Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Uint64, - ffi.Pointer)>>, - ) ->() -external int sqlite3_bind_blob64( - ffi.Pointer pStmt, - int index, - ffi.Pointer data, - int length, - ffi.Pointer)>> - destructor, -); - -@ffi.Native, ffi.Int, ffi.Double)>() -external int sqlite3_bind_double( - ffi.Pointer pStmt, - int index, - double data, -); - -@ffi.Native, ffi.Int, ffi.Int64)>() -external int sqlite3_bind_int64( - ffi.Pointer pStmt, - int index, - int data, -); - -@ffi.Native, ffi.Int)>() -external int sqlite3_bind_null(ffi.Pointer pStmt, int index); - -@ffi.Native< - ffi.Int Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Int, - ffi.Pointer)>>, - ) ->() -external int sqlite3_bind_text( - ffi.Pointer pStmt, - int index, - ffi.Pointer data, - int length, - ffi.Pointer)>> - destructor, -); - -@ffi.Native< - ffi.Pointer Function(ffi.Pointer, ffi.Int) ->() -external ffi.Pointer sqlite3_column_blob( - ffi.Pointer pStmt, - int iCol, -); - -@ffi.Native, ffi.Int)>() -external double sqlite3_column_double( - ffi.Pointer pStmt, - int iCol, -); - -@ffi.Native, ffi.Int)>() -external int sqlite3_column_int64(ffi.Pointer pStmt, int iCol); - -@ffi.Native< - ffi.Pointer Function(ffi.Pointer, ffi.Int) ->() -external ffi.Pointer sqlite3_column_text( - ffi.Pointer pStmt, - int iCol, -); - -@ffi.Native, ffi.Int)>() -external int sqlite3_column_bytes(ffi.Pointer pStmt, int iCol); - -@ffi.Native, ffi.Int)>() -external int sqlite3_column_type(ffi.Pointer pStmt, int iCol); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer sqlite3_value_blob( - ffi.Pointer value, -); - -@ffi.Native)>() -external double sqlite3_value_double(ffi.Pointer value); - -@ffi.Native)>() -external int sqlite3_value_type(ffi.Pointer value); - -@ffi.Native)>() -external int sqlite3_value_int64(ffi.Pointer value); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer sqlite3_value_text( - ffi.Pointer value, -); - -@ffi.Native)>() -external int sqlite3_value_bytes(ffi.Pointer value); - -@ffi.Native)>() -external int sqlite3_value_subtype(ffi.Pointer value); - -@ffi.Native< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Int, ffi.Pointer, ffi.Pointer< ffi.NativeFunction< @@ -510,265 +383,300 @@ external int sqlite3_create_window_function( ); @ffi.Native< - ffi.Pointer Function(ffi.Pointer, ffi.Int) ->() -external ffi.Pointer sqlite3_aggregate_context( - ffi.Pointer ctx, - int nBytes, -); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer sqlite3_user_data( - ffi.Pointer ctx, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Uint64, - ffi.Pointer, + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.VarArgs<(ffi.Int, ffi.Pointer)>, ) >() -external void sqlite3_result_blob64( - ffi.Pointer ctx, - ffi.Pointer data, - int length, - ffi.Pointer destructor, -); - -@ffi.Native, ffi.Double)>() -external void sqlite3_result_double( - ffi.Pointer ctx, - double result, +external int sqlite3_db_config( + ffi.Pointer db, + int op, + int va, + ffi.Pointer va$1, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, - ffi.Int, ) >() -external void sqlite3_result_error( - ffi.Pointer ctx, - ffi.Pointer msg, - int length, +external ffi.Pointer sqlite3_db_filename( + ffi.Pointer db, + ffi.Pointer zDbName, ); -@ffi.Native, ffi.Int64)>() -external void sqlite3_result_int64( - ffi.Pointer ctx, - int result, -); - -@ffi.Native)>() -external void sqlite3_result_null(ffi.Pointer ctx); +@ffi.Native Function(ffi.Pointer)>() +external ffi.Pointer sqlite3_errmsg(ffi.Pointer db); -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ) ->() -external void sqlite3_result_text( - ffi.Pointer ctx, - ffi.Pointer data, - int length, - ffi.Pointer destructor, -); +@ffi.Native)>() +external int sqlite3_error_offset(ffi.Pointer db); -@ffi.Native, ffi.UnsignedInt)>() -external void sqlite3_result_subtype( - ffi.Pointer ctx, - int subtype, -); +@ffi.Native Function(ffi.Int)>() +external ffi.Pointer sqlite3_errstr(int code); @ffi.Native< ffi.Int Function( ffi.Pointer, ffi.Pointer, - ffi.Int, ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ) - > - >, - ffi.Pointer)>>, + ffi.Pointer, + ffi.Pointer>, ) >() -external int sqlite3_create_collation_v2( - ffi.Pointer arg0, - ffi.Pointer zName, - int eTextRep, - ffi.Pointer pArg, - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ) - > - > - xCompare, - ffi.Pointer)>> - xDestroy, +external int sqlite3_exec( + ffi.Pointer db, + ffi.Pointer sql, + ffi.Pointer callback, + ffi.Pointer argToCb, + ffi.Pointer> errorOut, ); +@ffi.Native)>() +external int sqlite3_extended_errcode(ffi.Pointer db); + +@ffi.Native, ffi.Int)>() +external int sqlite3_extended_result_codes(ffi.Pointer db, int onoff); + +@ffi.Native)>() +external int sqlite3_finalize(ffi.Pointer pStmt); + +@ffi.Native)>() +external void sqlite3_free(ffi.Pointer arg0); + +@ffi.Native)>(isLeaf: true) +external int sqlite3_get_autocommit(ffi.Pointer db); + +@ffi.Native() +external int sqlite3_initialize(); + +@ffi.Native)>(isLeaf: true) +external int sqlite3_last_insert_rowid(ffi.Pointer db); + +@ffi.Native Function()>() +external ffi.Pointer sqlite3_libversion(); + +@ffi.Native() +external int sqlite3_libversion_number(); + @ffi.Native< - ffi.Pointer Function( - ffi.Pointer, + ffi.Int Function( ffi.Pointer, - ffi.Pointer, + ffi.Pointer>, + ffi.Int, ffi.Pointer, ) >() -external ffi.Pointer sqlite3_backup_init( - ffi.Pointer pDestDb, - ffi.Pointer zDestDb, - ffi.Pointer pSrcDb, - ffi.Pointer zSrcDb, +external int sqlite3_open_v2( + ffi.Pointer filename, + ffi.Pointer> ppDb, + int flags, + ffi.Pointer zVfs, ); -@ffi.Native, ffi.Int)>() -external int sqlite3_backup_step(ffi.Pointer p, int nPage); - -@ffi.Native)>() -external int sqlite3_backup_finish(ffi.Pointer p); - -@ffi.Native)>() -external int sqlite3_backup_remaining(ffi.Pointer p); - -@ffi.Native)>() -external int sqlite3_backup_pagecount(ffi.Pointer p); - -@ffi.Native)>() -external int sqlite3_auto_extension(ffi.Pointer xEntryPoint); - @ffi.Native< ffi.Int Function( ffi.Pointer, + ffi.Pointer, ffi.Int, - ffi.VarArgs<(ffi.Int, ffi.Pointer)>, + ffi.Pointer>, + ffi.Pointer>, ) >() -external int sqlite3_db_config( +external int sqlite3_prepare_v2( ffi.Pointer db, - int op, - int va, - ffi.Pointer va$1, + ffi.Pointer zSql, + int nByte, + ffi.Pointer> ppStmt, + ffi.Pointer> pzTail, ); -@ffi.Native, ffi.Int)>() -external int sqlite3_vfs_register(ffi.Pointer arg0, int makeDflt); - -@ffi.Native)>() -external int sqlite3_vfs_unregister(ffi.Pointer arg0); - @ffi.Native< ffi.Int Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer>, + ffi.Int, + ffi.UnsignedInt, + ffi.Pointer>, + ffi.Pointer>, ) >() -external int sqlite3session_create( +external int sqlite3_prepare_v3( ffi.Pointer db, - ffi.Pointer zDb, - ffi.Pointer> ppSession, + ffi.Pointer zSql, + int nByte, + int prepFlags, + ffi.Pointer> ppStmt, + ffi.Pointer> pzTail, ); -@ffi.Native)>() -external void sqlite3session_delete(ffi.Pointer pSession); +@ffi.Native)>() +external int sqlite3_reset(ffi.Pointer pStmt); -@ffi.Native, ffi.Int)>() -external int sqlite3session_enable( - ffi.Pointer pSession, - int bEnable, +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Uint64, + ffi.Pointer, + ) +>() +external void sqlite3_result_blob64( + ffi.Pointer ctx, + ffi.Pointer data, + int length, + ffi.Pointer destructor, ); -@ffi.Native, ffi.Int)>() -external int sqlite3session_indirect( - ffi.Pointer pSession, - int bIndirect, +@ffi.Native, ffi.Double)>() +external void sqlite3_result_double( + ffi.Pointer ctx, + double result, ); @ffi.Native< - ffi.Int Function( - ffi.Pointer>, + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, ffi.Int, - ffi.Pointer, ) >() -external int sqlite3changeset_start( - ffi.Pointer> pp, - int nChangeset, - ffi.Pointer pChangeset, +external void sqlite3_result_error( + ffi.Pointer ctx, + ffi.Pointer msg, + int length, ); -@ffi.Native)>() -external int sqlite3changeset_finalize( - ffi.Pointer pIter, +@ffi.Native, ffi.Int64)>() +external void sqlite3_result_int64( + ffi.Pointer ctx, + int result, ); -@ffi.Native)>() -external int sqlite3changeset_next(ffi.Pointer pIter); +@ffi.Native)>() +external void sqlite3_result_null(ffi.Pointer ctx); -@ffi.Native< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ) ->() -external int sqlite3changeset_op( - ffi.Pointer pIter, - ffi.Pointer> pzTab, - ffi.Pointer pnCol, - ffi.Pointer pOp, - ffi.Pointer pbIndirect, +@ffi.Native, ffi.UnsignedInt)>() +external void sqlite3_result_subtype( + ffi.Pointer ctx, + int subtype, ); @ffi.Native< - ffi.Int Function( - ffi.Pointer, + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, ffi.Int, - ffi.Pointer>, + ffi.Pointer, ) >() -external int sqlite3changeset_old( - ffi.Pointer pIter, - int iVal, - ffi.Pointer> ppValue, +external void sqlite3_result_text( + ffi.Pointer ctx, + ffi.Pointer data, + int length, + ffi.Pointer destructor, ); @ffi.Native< - ffi.Int Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer>, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>>, + ffi.Pointer, ) ->() -external int sqlite3changeset_new( - ffi.Pointer pIter, - int iVal, - ffi.Pointer> ppValue, +>(isLeaf: true) +external ffi.Pointer sqlite3_rollback_hook( + ffi.Pointer arg0, + ffi.Pointer)>> + arg1, + ffi.Pointer arg2, ); +@ffi.Native Function()>() +external ffi.Pointer sqlite3_sourceid(); + +@ffi.Native)>() +external int sqlite3_step(ffi.Pointer pStmt); + +@ffi.Native)>(isLeaf: true) +external int sqlite3_stmt_isexplain(ffi.Pointer pStmt); + +@ffi.Native)>(isLeaf: true) +external int sqlite3_stmt_readonly(ffi.Pointer pStmt); + +@ffi.Native>() +external ffi.Pointer sqlite3_temp_directory; + +@ffi.Native< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Pointer, + ffi.Int64, + ) + > + >, + ffi.Pointer, + ) +>(isLeaf: true) +external ffi.Pointer sqlite3_update_hook( + ffi.Pointer arg0, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Pointer, + ffi.Int64, + ) + > + > + arg1, + ffi.Pointer arg2, +); + +@ffi.Native Function(ffi.Pointer)>() +external ffi.Pointer sqlite3_user_data( + ffi.Pointer ctx, +); + +@ffi.Native Function(ffi.Pointer)>() +external ffi.Pointer sqlite3_value_blob( + ffi.Pointer value, +); + +@ffi.Native)>() +external int sqlite3_value_bytes(ffi.Pointer value); + +@ffi.Native)>() +external double sqlite3_value_double(ffi.Pointer value); + +@ffi.Native)>() +external int sqlite3_value_int64(ffi.Pointer value); + +@ffi.Native)>() +external int sqlite3_value_subtype(ffi.Pointer value); + +@ffi.Native Function(ffi.Pointer)>() +external ffi.Pointer sqlite3_value_text( + ffi.Pointer value, +); + +@ffi.Native)>() +external int sqlite3_value_type(ffi.Pointer value); + +@ffi.Native, ffi.Int)>() +external int sqlite3_vfs_register(ffi.Pointer arg0, int makeDflt); + +@ffi.Native)>() +external int sqlite3_vfs_unregister(ffi.Pointer arg0); + @ffi.Native< ffi.Int Function( ffi.Pointer, @@ -814,6 +722,11 @@ external int sqlite3changeset_apply( ffi.Pointer pCtx, ); +@ffi.Native)>() +external int sqlite3changeset_finalize( + ffi.Pointer pIter, +); + @ffi.Native< ffi.Int Function( ffi.Int, @@ -831,15 +744,69 @@ external int sqlite3changeset_invert( @ffi.Native< ffi.Int Function( - ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Pointer>, + ) +>() +external int sqlite3changeset_new( + ffi.Pointer pIter, + int iVal, + ffi.Pointer> ppValue, +); + +@ffi.Native)>() +external int sqlite3changeset_next(ffi.Pointer pIter); + +@ffi.Native< + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer>, + ) +>() +external int sqlite3changeset_old( + ffi.Pointer pIter, + int iVal, + ffi.Pointer> ppValue, +); + +@ffi.Native< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer, ffi.Pointer, - ffi.Pointer>, ) >() -external int sqlite3session_patchset( +external int sqlite3changeset_op( + ffi.Pointer pIter, + ffi.Pointer> pzTab, + ffi.Pointer pnCol, + ffi.Pointer pOp, + ffi.Pointer pbIndirect, +); + +@ffi.Native< + ffi.Int Function( + ffi.Pointer>, + ffi.Int, + ffi.Pointer, + ) +>() +external int sqlite3changeset_start( + ffi.Pointer> pp, + int nChangeset, + ffi.Pointer pChangeset, +); + +@ffi.Native< + ffi.Int Function(ffi.Pointer, ffi.Pointer) +>() +external int sqlite3session_attach( ffi.Pointer pSession, - ffi.Pointer pnPatchset, - ffi.Pointer> ppPatchset, + ffi.Pointer zTab, ); @ffi.Native< @@ -855,17 +822,22 @@ external int sqlite3session_changeset( ffi.Pointer> ppChangeset, ); -@ffi.Native)>() -external int sqlite3session_isempty(ffi.Pointer pSession); - @ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Pointer) + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ) >() -external int sqlite3session_attach( - ffi.Pointer pSession, - ffi.Pointer zTab, +external int sqlite3session_create( + ffi.Pointer db, + ffi.Pointer zDb, + ffi.Pointer> ppSession, ); +@ffi.Native)>() +external void sqlite3session_delete(ffi.Pointer pSession); + @ffi.Native< ffi.Int Function( ffi.Pointer, @@ -881,202 +853,71 @@ external int sqlite3session_diff( ffi.Pointer> pzErrMsg, ); +@ffi.Native, ffi.Int)>() +external int sqlite3session_enable( + ffi.Pointer pSession, + int bEnable, +); + +@ffi.Native, ffi.Int)>() +external int sqlite3session_indirect( + ffi.Pointer pSession, + int bIndirect, +); + +@ffi.Native)>() +external int sqlite3session_isempty(ffi.Pointer pSession); + +@ffi.Native< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ) +>() +external int sqlite3session_patchset( + ffi.Pointer pSession, + ffi.Pointer pnPatchset, + ffi.Pointer> ppPatchset, +); + const addresses = _SymbolAddresses(); class _SymbolAddresses { const _SymbolAddresses(); - ffi.Pointer> get sqlite3_initialize => - ffi.Native.addressOf(self.sqlite3_initialize); - ffi.Pointer)>> - get sqlite3_free => ffi.Native.addressOf(self.sqlite3_free); - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer>, - ffi.Int, - ffi.Pointer, - ) - > - > - get sqlite3_open_v2 => ffi.Native.addressOf(self.sqlite3_open_v2); - ffi.Pointer)>> - get sqlite3_close_v2 => ffi.Native.addressOf(self.sqlite3_close_v2); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ) - > - > - get sqlite3_db_filename => ffi.Native.addressOf(self.sqlite3_db_filename); - ffi.Pointer)>> - get sqlite3_compileoption_used => - ffi.Native.addressOf(self.sqlite3_compileoption_used); - ffi.Pointer Function(ffi.Int)>> - get sqlite3_compileoption_get => - ffi.Native.addressOf(self.sqlite3_compileoption_get); - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction, ffi.Int)> - >, - ffi.Pointer, - ) - > - > - get sqlite3_busy_handler => ffi.Native.addressOf(self.sqlite3_busy_handler); - ffi.Pointer< - ffi.NativeFunction, ffi.Int)> - > - get sqlite3_extended_result_codes => - ffi.Native.addressOf(self.sqlite3_extended_result_codes); - ffi.Pointer)>> - get sqlite3_extended_errcode => - ffi.Native.addressOf(self.sqlite3_extended_errcode); - ffi.Pointer< - ffi.NativeFunction Function(ffi.Pointer)> - > - get sqlite3_errmsg => ffi.Native.addressOf(self.sqlite3_errmsg); - ffi.Pointer Function(ffi.Int)>> - get sqlite3_errstr => ffi.Native.addressOf(self.sqlite3_errstr); - ffi.Pointer)>> - get sqlite3_error_offset => ffi.Native.addressOf(self.sqlite3_error_offset); - ffi.Pointer Function()>> - get sqlite3_libversion => ffi.Native.addressOf(self.sqlite3_libversion); - ffi.Pointer Function()>> - get sqlite3_sourceid => ffi.Native.addressOf(self.sqlite3_sourceid); - ffi.Pointer> - get sqlite3_libversion_number => - ffi.Native.addressOf(self.sqlite3_libversion_number); - ffi.Pointer)>> - get sqlite3_last_insert_rowid => - ffi.Native.addressOf(self.sqlite3_last_insert_rowid); - ffi.Pointer)>> - get sqlite3_changes => ffi.Native.addressOf(self.sqlite3_changes); - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ) - > - > - get sqlite3_exec => ffi.Native.addressOf(self.sqlite3_exec); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Pointer, - ffi.Int64, - ) - > - >, - ffi.Pointer, - ) - > - > - get sqlite3_update_hook => ffi.Native.addressOf(self.sqlite3_update_hook); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction)> - >, - ffi.Pointer, - ) - > - > - get sqlite3_commit_hook => ffi.Native.addressOf(self.sqlite3_commit_hook); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction)> - >, - ffi.Pointer, - ) - > - > - get sqlite3_rollback_hook => ffi.Native.addressOf(self.sqlite3_rollback_hook); - ffi.Pointer)>> - get sqlite3_get_autocommit => - ffi.Native.addressOf(self.sqlite3_get_autocommit); ffi.Pointer< ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Pointer>, - ffi.Pointer>, - ) - > - > - get sqlite3_prepare_v2 => ffi.Native.addressOf(self.sqlite3_prepare_v2); - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.UnsignedInt, - ffi.Pointer>, - ffi.Pointer>, - ) - > - > - get sqlite3_prepare_v3 => ffi.Native.addressOf(self.sqlite3_prepare_v3); - ffi.Pointer)>> - get sqlite3_finalize => ffi.Native.addressOf(self.sqlite3_finalize); - ffi.Pointer)>> - get sqlite3_step => ffi.Native.addressOf(self.sqlite3_step); - ffi.Pointer)>> - get sqlite3_reset => ffi.Native.addressOf(self.sqlite3_reset); - ffi.Pointer)>> - get sqlite3_stmt_isexplain => - ffi.Native.addressOf(self.sqlite3_stmt_isexplain); - ffi.Pointer)>> - get sqlite3_stmt_readonly => ffi.Native.addressOf(self.sqlite3_stmt_readonly); - ffi.Pointer)>> - get sqlite3_column_count => ffi.Native.addressOf(self.sqlite3_column_count); - ffi.Pointer)>> - get sqlite3_bind_parameter_count => - ffi.Native.addressOf(self.sqlite3_bind_parameter_count); - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function(ffi.Pointer, ffi.Pointer) + ffi.Pointer Function(ffi.Pointer, ffi.Int) > > - get sqlite3_bind_parameter_index => - ffi.Native.addressOf(self.sqlite3_bind_parameter_index); + get sqlite3_aggregate_context => + ffi.Native.addressOf(self.sqlite3_aggregate_context); + ffi.Pointer)>> + get sqlite3_auto_extension => + ffi.Native.addressOf(self.sqlite3_auto_extension); + ffi.Pointer)>> + get sqlite3_backup_finish => ffi.Native.addressOf(self.sqlite3_backup_finish); ffi.Pointer< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, ffi.Int) + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) > > - get sqlite3_column_name => ffi.Native.addressOf(self.sqlite3_column_name); + get sqlite3_backup_init => ffi.Native.addressOf(self.sqlite3_backup_init); + ffi.Pointer)>> + get sqlite3_backup_pagecount => + ffi.Native.addressOf(self.sqlite3_backup_pagecount); + ffi.Pointer)>> + get sqlite3_backup_remaining => + ffi.Native.addressOf(self.sqlite3_backup_remaining); ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, ffi.Int) - > + ffi.NativeFunction, ffi.Int)> > - get sqlite3_column_table_name => - ffi.Native.addressOf(self.sqlite3_column_table_name); + get sqlite3_backup_step => ffi.Native.addressOf(self.sqlite3_backup_step); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( @@ -1107,6 +948,16 @@ class _SymbolAddresses { ffi.NativeFunction, ffi.Int)> > get sqlite3_bind_null => ffi.Native.addressOf(self.sqlite3_bind_null); + ffi.Pointer)>> + get sqlite3_bind_parameter_count => + ffi.Native.addressOf(self.sqlite3_bind_parameter_count); + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, ffi.Pointer) + > + > + get sqlite3_bind_parameter_index => + ffi.Native.addressOf(self.sqlite3_bind_parameter_index); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( @@ -1121,12 +972,34 @@ class _SymbolAddresses { > > get sqlite3_bind_text => ffi.Native.addressOf(self.sqlite3_bind_text); + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + >, + ffi.Pointer, + ) + > + > + get sqlite3_busy_handler => ffi.Native.addressOf(self.sqlite3_busy_handler); + ffi.Pointer)>> + get sqlite3_changes => ffi.Native.addressOf(self.sqlite3_changes); + ffi.Pointer)>> + get sqlite3_close_v2 => ffi.Native.addressOf(self.sqlite3_close_v2); ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function(ffi.Pointer, ffi.Int) > > get sqlite3_column_blob => ffi.Native.addressOf(self.sqlite3_column_blob); + ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + get sqlite3_column_bytes => ffi.Native.addressOf(self.sqlite3_column_bytes); + ffi.Pointer)>> + get sqlite3_column_count => ffi.Native.addressOf(self.sqlite3_column_count); ffi.Pointer< ffi.NativeFunction, ffi.Int)> > @@ -1140,133 +1013,247 @@ class _SymbolAddresses { ffi.Pointer Function(ffi.Pointer, ffi.Int) > > - get sqlite3_column_text => ffi.Native.addressOf(self.sqlite3_column_text); + get sqlite3_column_name => ffi.Native.addressOf(self.sqlite3_column_name); ffi.Pointer< - ffi.NativeFunction, ffi.Int)> + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, ffi.Int) + > > - get sqlite3_column_bytes => ffi.Native.addressOf(self.sqlite3_column_bytes); + get sqlite3_column_table_name => + ffi.Native.addressOf(self.sqlite3_column_table_name); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, ffi.Int) + > + > + get sqlite3_column_text => ffi.Native.addressOf(self.sqlite3_column_text); ffi.Pointer< ffi.NativeFunction, ffi.Int)> > get sqlite3_column_type => ffi.Native.addressOf(self.sqlite3_column_type); ffi.Pointer< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer) + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction)> + >, + ffi.Pointer, + ) > > - get sqlite3_value_blob => ffi.Native.addressOf(self.sqlite3_value_blob); + get sqlite3_commit_hook => ffi.Native.addressOf(self.sqlite3_commit_hook); + ffi.Pointer Function(ffi.Int)>> + get sqlite3_compileoption_get => + ffi.Native.addressOf(self.sqlite3_compileoption_get); + ffi.Pointer)>> + get sqlite3_compileoption_used => + ffi.Native.addressOf(self.sqlite3_compileoption_used); ffi.Pointer< - ffi.NativeFunction)> + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ) + > + >, + ffi.Pointer< + ffi.NativeFunction)> + >, + ) + > > - get sqlite3_value_double => ffi.Native.addressOf(self.sqlite3_value_double); - ffi.Pointer)>> - get sqlite3_value_type => ffi.Native.addressOf(self.sqlite3_value_type); + get sqlite3_create_collation_v2 => + ffi.Native.addressOf(self.sqlite3_create_collation_v2); ffi.Pointer< - ffi.NativeFunction)> + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Int, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer>, + ) + > + >, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer>, + ) + > + >, + ffi.Pointer< + ffi.NativeFunction)> + >, + ffi.Pointer< + ffi.NativeFunction)> + >, + ) + > > - get sqlite3_value_int64 => ffi.Native.addressOf(self.sqlite3_value_int64); + get sqlite3_create_function_v2 => + ffi.Native.addressOf(self.sqlite3_create_function_v2); + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Int, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer>, + ) + > + >, + ffi.Pointer< + ffi.NativeFunction)> + >, + ffi.Pointer< + ffi.NativeFunction)> + >, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer>, + ) + > + >, + ffi.Pointer< + ffi.NativeFunction)> + >, + ) + > + > + get sqlite3_create_window_function => + ffi.Native.addressOf(self.sqlite3_create_window_function); + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.VarArgs<(ffi.Int, ffi.Pointer)>, + ) + > + > + get sqlite3_db_config => ffi.Native.addressOf(self.sqlite3_db_config); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ) + > + > + get sqlite3_db_filename => ffi.Native.addressOf(self.sqlite3_db_filename); + ffi.Pointer< + ffi.NativeFunction Function(ffi.Pointer)> + > + get sqlite3_errmsg => ffi.Native.addressOf(self.sqlite3_errmsg); + ffi.Pointer)>> + get sqlite3_error_offset => ffi.Native.addressOf(self.sqlite3_error_offset); + ffi.Pointer Function(ffi.Int)>> + get sqlite3_errstr => ffi.Native.addressOf(self.sqlite3_errstr); + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ) + > + > + get sqlite3_exec => ffi.Native.addressOf(self.sqlite3_exec); + ffi.Pointer)>> + get sqlite3_extended_errcode => + ffi.Native.addressOf(self.sqlite3_extended_errcode); + ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + get sqlite3_extended_result_codes => + ffi.Native.addressOf(self.sqlite3_extended_result_codes); + ffi.Pointer)>> + get sqlite3_finalize => ffi.Native.addressOf(self.sqlite3_finalize); + ffi.Pointer)>> + get sqlite3_free => ffi.Native.addressOf(self.sqlite3_free); + ffi.Pointer)>> + get sqlite3_get_autocommit => + ffi.Native.addressOf(self.sqlite3_get_autocommit); + ffi.Pointer> get sqlite3_initialize => + ffi.Native.addressOf(self.sqlite3_initialize); + ffi.Pointer)>> + get sqlite3_last_insert_rowid => + ffi.Native.addressOf(self.sqlite3_last_insert_rowid); + ffi.Pointer Function()>> + get sqlite3_libversion => ffi.Native.addressOf(self.sqlite3_libversion); + ffi.Pointer> + get sqlite3_libversion_number => + ffi.Native.addressOf(self.sqlite3_libversion_number); ffi.Pointer< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer) + ffi.Int Function( + ffi.Pointer, + ffi.Pointer>, + ffi.Int, + ffi.Pointer, + ) > > - get sqlite3_value_text => ffi.Native.addressOf(self.sqlite3_value_text); - ffi.Pointer)>> - get sqlite3_value_bytes => ffi.Native.addressOf(self.sqlite3_value_bytes); - ffi.Pointer< - ffi.NativeFunction)> - > - get sqlite3_value_subtype => ffi.Native.addressOf(self.sqlite3_value_subtype); + get sqlite3_open_v2 => ffi.Native.addressOf(self.sqlite3_open_v2); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( ffi.Pointer, ffi.Pointer, ffi.Int, - ffi.Int, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer>, - ) - > - >, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer>, - ) - > - >, - ffi.Pointer< - ffi.NativeFunction)> - >, - ffi.Pointer< - ffi.NativeFunction)> - >, + ffi.Pointer>, + ffi.Pointer>, ) > > - get sqlite3_create_function_v2 => - ffi.Native.addressOf(self.sqlite3_create_function_v2); + get sqlite3_prepare_v2 => ffi.Native.addressOf(self.sqlite3_prepare_v2); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( ffi.Pointer, ffi.Pointer, ffi.Int, - ffi.Int, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer>, - ) - > - >, - ffi.Pointer< - ffi.NativeFunction)> - >, - ffi.Pointer< - ffi.NativeFunction)> - >, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer>, - ) - > - >, - ffi.Pointer< - ffi.NativeFunction)> - >, + ffi.UnsignedInt, + ffi.Pointer>, + ffi.Pointer>, ) > > - get sqlite3_create_window_function => - ffi.Native.addressOf(self.sqlite3_create_window_function); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, ffi.Int) - > - > - get sqlite3_aggregate_context => - ffi.Native.addressOf(self.sqlite3_aggregate_context); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer) - > - > - get sqlite3_user_data => ffi.Native.addressOf(self.sqlite3_user_data); + get sqlite3_prepare_v3 => ffi.Native.addressOf(self.sqlite3_prepare_v3); + ffi.Pointer)>> + get sqlite3_reset => ffi.Native.addressOf(self.sqlite3_reset); ffi.Pointer< ffi.NativeFunction< ffi.Void Function( @@ -1304,6 +1291,13 @@ class _SymbolAddresses { ffi.NativeFunction)> > get sqlite3_result_null => ffi.Native.addressOf(self.sqlite3_result_null); + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.UnsignedInt) + > + > + get sqlite3_result_subtype => + ffi.Native.addressOf(self.sqlite3_result_subtype); ffi.Pointer< ffi.NativeFunction< ffi.Void Function( @@ -1317,73 +1311,79 @@ class _SymbolAddresses { get sqlite3_result_text => ffi.Native.addressOf(self.sqlite3_result_text); ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.UnsignedInt) + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction)> + >, + ffi.Pointer, + ) > > - get sqlite3_result_subtype => - ffi.Native.addressOf(self.sqlite3_result_subtype); + get sqlite3_rollback_hook => ffi.Native.addressOf(self.sqlite3_rollback_hook); + ffi.Pointer Function()>> + get sqlite3_sourceid => ffi.Native.addressOf(self.sqlite3_sourceid); + ffi.Pointer)>> + get sqlite3_step => ffi.Native.addressOf(self.sqlite3_step); + ffi.Pointer)>> + get sqlite3_stmt_isexplain => + ffi.Native.addressOf(self.sqlite3_stmt_isexplain); + ffi.Pointer)>> + get sqlite3_stmt_readonly => ffi.Native.addressOf(self.sqlite3_stmt_readonly); ffi.Pointer< ffi.NativeFunction< - ffi.Int Function( + ffi.Pointer Function( ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Pointer, ffi.Pointer< ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Int, + ffi.Void Function( ffi.Pointer, ffi.Int, - ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int64, ) > >, - ffi.Pointer< - ffi.NativeFunction)> - >, + ffi.Pointer, ) > > - get sqlite3_create_collation_v2 => - ffi.Native.addressOf(self.sqlite3_create_collation_v2); + get sqlite3_update_hook => ffi.Native.addressOf(self.sqlite3_update_hook); ffi.Pointer< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ) + ffi.Pointer Function(ffi.Pointer) > > - get sqlite3_backup_init => ffi.Native.addressOf(self.sqlite3_backup_init); + get sqlite3_user_data => ffi.Native.addressOf(self.sqlite3_user_data); ffi.Pointer< - ffi.NativeFunction, ffi.Int)> + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer) + > > - get sqlite3_backup_step => ffi.Native.addressOf(self.sqlite3_backup_step); - ffi.Pointer)>> - get sqlite3_backup_finish => ffi.Native.addressOf(self.sqlite3_backup_finish); - ffi.Pointer)>> - get sqlite3_backup_remaining => - ffi.Native.addressOf(self.sqlite3_backup_remaining); - ffi.Pointer)>> - get sqlite3_backup_pagecount => - ffi.Native.addressOf(self.sqlite3_backup_pagecount); - ffi.Pointer)>> - get sqlite3_auto_extension => - ffi.Native.addressOf(self.sqlite3_auto_extension); + get sqlite3_value_blob => ffi.Native.addressOf(self.sqlite3_value_blob); + ffi.Pointer)>> + get sqlite3_value_bytes => ffi.Native.addressOf(self.sqlite3_value_bytes); + ffi.Pointer< + ffi.NativeFunction)> + > + get sqlite3_value_double => ffi.Native.addressOf(self.sqlite3_value_double); + ffi.Pointer< + ffi.NativeFunction)> + > + get sqlite3_value_int64 => ffi.Native.addressOf(self.sqlite3_value_int64); + ffi.Pointer< + ffi.NativeFunction)> + > + get sqlite3_value_subtype => ffi.Native.addressOf(self.sqlite3_value_subtype); ffi.Pointer< ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, - ffi.Int, - ffi.VarArgs<(ffi.Int, ffi.Pointer)>, - ) + ffi.Pointer Function(ffi.Pointer) > > - get sqlite3_db_config => ffi.Native.addressOf(self.sqlite3_db_config); + get sqlite3_value_text => ffi.Native.addressOf(self.sqlite3_value_text); + ffi.Pointer)>> + get sqlite3_value_type => ffi.Native.addressOf(self.sqlite3_value_type); ffi.Pointer< ffi.NativeFunction, ffi.Int)> > @@ -1395,57 +1395,62 @@ class _SymbolAddresses { ffi.NativeFunction< ffi.Int Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, + ffi.Int, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer pCtx, + ffi.Pointer zTab, + ) + > + >, + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer pCtx, + ffi.Int eConflict, + ffi.Pointer p, + ) + > + >, + ffi.Pointer, ) > > - get sqlite3session_create => ffi.Native.addressOf(self.sqlite3session_create); - ffi.Pointer< - ffi.NativeFunction)> - > - get sqlite3session_delete => ffi.Native.addressOf(self.sqlite3session_delete); - ffi.Pointer< - ffi.NativeFunction, ffi.Int)> - > - get sqlite3session_enable => ffi.Native.addressOf(self.sqlite3session_enable); + get sqlite3changeset_apply => + ffi.Native.addressOf(self.sqlite3changeset_apply); ffi.Pointer< - ffi.NativeFunction, ffi.Int)> + ffi.NativeFunction)> > - get sqlite3session_indirect => - ffi.Native.addressOf(self.sqlite3session_indirect); + get sqlite3changeset_finalize => + ffi.Native.addressOf(self.sqlite3changeset_finalize); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( - ffi.Pointer>, ffi.Int, ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, ) > > - get sqlite3changeset_start => - ffi.Native.addressOf(self.sqlite3changeset_start); - ffi.Pointer< - ffi.NativeFunction)> - > - get sqlite3changeset_finalize => - ffi.Native.addressOf(self.sqlite3changeset_finalize); - ffi.Pointer< - ffi.NativeFunction)> - > - get sqlite3changeset_next => ffi.Native.addressOf(self.sqlite3changeset_next); + get sqlite3changeset_invert => + ffi.Native.addressOf(self.sqlite3changeset_invert); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Int, + ffi.Pointer>, ) > > - get sqlite3changeset_op => ffi.Native.addressOf(self.sqlite3changeset_op); + get sqlite3changeset_new => ffi.Native.addressOf(self.sqlite3changeset_new); + ffi.Pointer< + ffi.NativeFunction)> + > + get sqlite3changeset_next => ffi.Native.addressOf(self.sqlite3changeset_next); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( @@ -1460,117 +1465,115 @@ class _SymbolAddresses { ffi.NativeFunction< ffi.Int Function( ffi.Pointer, - ffi.Int, - ffi.Pointer>, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ) > > - get sqlite3changeset_new => ffi.Native.addressOf(self.sqlite3changeset_new); + get sqlite3changeset_op => ffi.Native.addressOf(self.sqlite3changeset_op); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( - ffi.Pointer, + ffi.Pointer>, ffi.Int, ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer pCtx, - ffi.Pointer zTab, - ) - > - >, - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer pCtx, - ffi.Int eConflict, - ffi.Pointer p, - ) - > - >, - ffi.Pointer, ) > > - get sqlite3changeset_apply => - ffi.Native.addressOf(self.sqlite3changeset_apply); + get sqlite3changeset_start => + ffi.Native.addressOf(self.sqlite3changeset_start); + ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, ffi.Pointer) + > + > + get sqlite3session_attach => ffi.Native.addressOf(self.sqlite3session_attach); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( - ffi.Int, - ffi.Pointer, + ffi.Pointer, ffi.Pointer, ffi.Pointer>, ) > > - get sqlite3changeset_invert => - ffi.Native.addressOf(self.sqlite3changeset_invert); + get sqlite3session_changeset => + ffi.Native.addressOf(self.sqlite3session_changeset); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, ) > > - get sqlite3session_patchset => - ffi.Native.addressOf(self.sqlite3session_patchset); + get sqlite3session_create => ffi.Native.addressOf(self.sqlite3session_create); + ffi.Pointer< + ffi.NativeFunction)> + > + get sqlite3session_delete => ffi.Native.addressOf(self.sqlite3session_delete); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, ) > > - get sqlite3session_changeset => - ffi.Native.addressOf(self.sqlite3session_changeset); + get sqlite3session_diff => ffi.Native.addressOf(self.sqlite3session_diff); + ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + get sqlite3session_enable => ffi.Native.addressOf(self.sqlite3session_enable); + ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + get sqlite3session_indirect => + ffi.Native.addressOf(self.sqlite3session_indirect); ffi.Pointer< ffi.NativeFunction)> > get sqlite3session_isempty => ffi.Native.addressOf(self.sqlite3session_isempty); - ffi.Pointer< - ffi.NativeFunction< - ffi.Int Function(ffi.Pointer, ffi.Pointer) - > - > - get sqlite3session_attach => ffi.Native.addressOf(self.sqlite3session_attach); ffi.Pointer< ffi.NativeFunction< ffi.Int Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>, ) > > - get sqlite3session_diff => ffi.Native.addressOf(self.sqlite3session_diff); + get sqlite3session_patchset => + ffi.Native.addressOf(self.sqlite3session_patchset); } -final class sqlite3_char extends ffi.Opaque {} - final class sqlite3 extends ffi.Opaque {} -final class sqlite3_stmt extends ffi.Opaque {} - -final class sqlite3_backup extends ffi.Opaque {} - final class sqlite3_api_routines extends ffi.Opaque {} -final class sqlite3_session extends ffi.Opaque {} +final class sqlite3_backup extends ffi.Opaque {} final class sqlite3_changeset_iter extends ffi.Opaque {} -final class sqlite3_value extends ffi.Opaque {} +final class sqlite3_char extends ffi.Opaque {} final class sqlite3_context extends ffi.Opaque {} +final class sqlite3_file extends ffi.Struct { + external ffi.Pointer pMethods; + + static ffi.Pointer $allocate( + ffi.Allocator $allocator, { + required ffi.Pointer pMethods, + }) => $allocator()..ref.pMethods = pMethods; +} + final class sqlite3_io_methods extends ffi.Struct { @ffi.Int() external int iVersion; @@ -1711,12 +1714,157 @@ final class sqlite3_io_methods extends ffi.Struct { > > xUnfetch; -} -final class sqlite3_file extends ffi.Struct { - external ffi.Pointer pMethods; + static ffi.Pointer $allocate( + ffi.Allocator $allocator, { + required int iVersion, + required ffi.Pointer< + ffi.NativeFunction)> + > + xClose, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Int64, + ) + > + > + xRead, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Int64, + ) + > + > + xWrite, + required ffi.Pointer< + ffi.NativeFunction, ffi.Int64)> + > + xTruncate, + required ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + xSync, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, ffi.Pointer) + > + > + xFileSize, + required ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + xLock, + required ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + xUnlock, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, ffi.Pointer) + > + > + xCheckReservedLock, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ) + > + > + xFileControl, + required ffi.Pointer< + ffi.NativeFunction)> + > + xSectorSize, + required ffi.Pointer< + ffi.NativeFunction)> + > + xDeviceCharacteristics, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.Int, + ffi.Int, + ffi.Pointer>, + ) + > + > + xShmMap, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, ffi.Int, ffi.Int, ffi.Int) + > + > + xShmLock, + required ffi.Pointer< + ffi.NativeFunction)> + > + xShmBarrier, + required ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + xShmUnmap, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Int64, + ffi.Int, + ffi.Pointer>, + ) + > + > + xFetch, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Int64, + ffi.Pointer, + ) + > + > + xUnfetch, + }) => $allocator() + ..ref.iVersion = iVersion + ..ref.xClose = xClose + ..ref.xRead = xRead + ..ref.xWrite = xWrite + ..ref.xTruncate = xTruncate + ..ref.xSync = xSync + ..ref.xFileSize = xFileSize + ..ref.xLock = xLock + ..ref.xUnlock = xUnlock + ..ref.xCheckReservedLock = xCheckReservedLock + ..ref.xFileControl = xFileControl + ..ref.xSectorSize = xSectorSize + ..ref.xDeviceCharacteristics = xDeviceCharacteristics + ..ref.xShmMap = xShmMap + ..ref.xShmLock = xShmLock + ..ref.xShmBarrier = xShmBarrier + ..ref.xShmUnmap = xShmUnmap + ..ref.xFetch = xFetch + ..ref.xUnfetch = xUnfetch; } +final class sqlite3_session extends ffi.Opaque {} + +final class sqlite3_stmt extends ffi.Opaque {} + +final class sqlite3_value extends ffi.Opaque {} + final class sqlite3_vfs extends ffi.Struct { @ffi.Int() external int iVersion; @@ -1879,4 +2027,179 @@ final class sqlite3_vfs extends ffi.Struct { > > xNextSystemCall; + + static ffi.Pointer $allocate( + ffi.Allocator $allocator, { + required int iVersion, + required int szOsFile, + required int mxPathname, + required ffi.Pointer pNext, + required ffi.Pointer zName, + required ffi.Pointer pAppData, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ) + > + > + xOpen, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ) + > + > + xDelete, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ) + > + > + xAccess, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ) + > + > + xFullPathname, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ) + > + > + xDlOpen, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ) + > + > + xDlError, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + > + xDlSym, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer) + > + > + xDlClose, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ) + > + > + xRandomness, + required ffi.Pointer< + ffi.NativeFunction, ffi.Int)> + > + xSleep, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, ffi.Pointer) + > + > + xCurrentTime, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ) + > + > + xGetLastError, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, ffi.Pointer) + > + > + xCurrentTimeInt64, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ) + > + > + xSetSystemCall, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ) + > + > + xGetSystemCall, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ) + > + > + xNextSystemCall, + }) => $allocator() + ..ref.iVersion = iVersion + ..ref.szOsFile = szOsFile + ..ref.mxPathname = mxPathname + ..ref.pNext = pNext + ..ref.zName = zName + ..ref.pAppData = pAppData + ..ref.xOpen = xOpen + ..ref.xDelete = xDelete + ..ref.xAccess = xAccess + ..ref.xFullPathname = xFullPathname + ..ref.xDlOpen = xDlOpen + ..ref.xDlError = xDlError + ..ref.xDlSym = xDlSym + ..ref.xDlClose = xDlClose + ..ref.xRandomness = xRandomness + ..ref.xSleep = xSleep + ..ref.xCurrentTime = xCurrentTime + ..ref.xGetLastError = xGetLastError + ..ref.xCurrentTimeInt64 = xCurrentTimeInt64 + ..ref.xSetSystemCall = xSetSystemCall + ..ref.xGetSystemCall = xGetSystemCall + ..ref.xNextSystemCall = xNextSystemCall; } diff --git a/sqlite3/lib/src/hook/compile/used_symbols.dart b/sqlite3/lib/src/hook/compile/used_symbols.dart index ce0f2e2e..30978816 100644 --- a/sqlite3/lib/src/hook/compile/used_symbols.dart +++ b/sqlite3/lib/src/hook/compile/used_symbols.dart @@ -3,96 +3,96 @@ // dart format off const usedSqliteSymbols = { - 'sqlite3_temp_directory', - 'sqlite3_initialize', - 'sqlite3_free', - 'sqlite3_open_v2', - 'sqlite3_close_v2', - 'sqlite3_db_filename', - 'sqlite3_compileoption_used', - 'sqlite3_compileoption_get', - 'sqlite3_busy_handler', - 'sqlite3_extended_result_codes', - 'sqlite3_extended_errcode', - 'sqlite3_errmsg', - 'sqlite3_errstr', - 'sqlite3_error_offset', - 'sqlite3_libversion', - 'sqlite3_sourceid', - 'sqlite3_libversion_number', - 'sqlite3_last_insert_rowid', - 'sqlite3_changes', - 'sqlite3_exec', - 'sqlite3_update_hook', - 'sqlite3_commit_hook', - 'sqlite3_rollback_hook', - 'sqlite3_get_autocommit', - 'sqlite3_prepare_v2', - 'sqlite3_prepare_v3', - 'sqlite3_finalize', - 'sqlite3_step', - 'sqlite3_reset', - 'sqlite3_stmt_isexplain', - 'sqlite3_stmt_readonly', - 'sqlite3_column_count', - 'sqlite3_bind_parameter_count', - 'sqlite3_bind_parameter_index', - 'sqlite3_column_name', - 'sqlite3_column_table_name', + 'sqlite3_aggregate_context', + 'sqlite3_auto_extension', + 'sqlite3_backup_finish', + 'sqlite3_backup_init', + 'sqlite3_backup_pagecount', + 'sqlite3_backup_remaining', + 'sqlite3_backup_step', 'sqlite3_bind_blob64', 'sqlite3_bind_double', 'sqlite3_bind_int64', 'sqlite3_bind_null', + 'sqlite3_bind_parameter_count', + 'sqlite3_bind_parameter_index', 'sqlite3_bind_text', + 'sqlite3_busy_handler', + 'sqlite3_changes', + 'sqlite3_close_v2', 'sqlite3_column_blob', + 'sqlite3_column_bytes', + 'sqlite3_column_count', 'sqlite3_column_double', 'sqlite3_column_int64', + 'sqlite3_column_name', + 'sqlite3_column_table_name', 'sqlite3_column_text', - 'sqlite3_column_bytes', 'sqlite3_column_type', - 'sqlite3_value_blob', - 'sqlite3_value_double', - 'sqlite3_value_type', - 'sqlite3_value_int64', - 'sqlite3_value_text', - 'sqlite3_value_bytes', - 'sqlite3_value_subtype', + 'sqlite3_commit_hook', + 'sqlite3_compileoption_get', + 'sqlite3_compileoption_used', + 'sqlite3_create_collation_v2', 'sqlite3_create_function_v2', 'sqlite3_create_window_function', - 'sqlite3_aggregate_context', - 'sqlite3_user_data', + 'sqlite3_db_config', + 'sqlite3_db_filename', + 'sqlite3_errmsg', + 'sqlite3_error_offset', + 'sqlite3_errstr', + 'sqlite3_exec', + 'sqlite3_extended_errcode', + 'sqlite3_extended_result_codes', + 'sqlite3_finalize', + 'sqlite3_free', + 'sqlite3_get_autocommit', + 'sqlite3_initialize', + 'sqlite3_last_insert_rowid', + 'sqlite3_libversion', + 'sqlite3_libversion_number', + 'sqlite3_open_v2', + 'sqlite3_prepare_v2', + 'sqlite3_prepare_v3', + 'sqlite3_reset', 'sqlite3_result_blob64', 'sqlite3_result_double', 'sqlite3_result_error', 'sqlite3_result_int64', 'sqlite3_result_null', - 'sqlite3_result_text', 'sqlite3_result_subtype', - 'sqlite3_create_collation_v2', - 'sqlite3_backup_init', - 'sqlite3_backup_step', - 'sqlite3_backup_finish', - 'sqlite3_backup_remaining', - 'sqlite3_backup_pagecount', - 'sqlite3_auto_extension', - 'sqlite3_db_config', + 'sqlite3_result_text', + 'sqlite3_rollback_hook', + 'sqlite3_sourceid', + 'sqlite3_step', + 'sqlite3_stmt_isexplain', + 'sqlite3_stmt_readonly', + 'sqlite3_temp_directory', + 'sqlite3_update_hook', + 'sqlite3_user_data', + 'sqlite3_value_blob', + 'sqlite3_value_bytes', + 'sqlite3_value_double', + 'sqlite3_value_int64', + 'sqlite3_value_subtype', + 'sqlite3_value_text', + 'sqlite3_value_type', 'sqlite3_vfs_register', 'sqlite3_vfs_unregister', - 'sqlite3session_create', - 'sqlite3session_delete', - 'sqlite3session_enable', - 'sqlite3session_indirect', - 'sqlite3changeset_start', + 'sqlite3changeset_apply', 'sqlite3changeset_finalize', + 'sqlite3changeset_invert', + 'sqlite3changeset_new', 'sqlite3changeset_next', - 'sqlite3changeset_op', 'sqlite3changeset_old', - 'sqlite3changeset_new', - 'sqlite3changeset_apply', - 'sqlite3changeset_invert', - 'sqlite3session_patchset', - 'sqlite3session_changeset', - 'sqlite3session_isempty', + 'sqlite3changeset_op', + 'sqlite3changeset_start', 'sqlite3session_attach', + 'sqlite3session_changeset', + 'sqlite3session_create', + 'sqlite3session_delete', 'sqlite3session_diff', + 'sqlite3session_enable', + 'sqlite3session_indirect', + 'sqlite3session_isempty', + 'sqlite3session_patchset', }; diff --git a/sqlite3/lib/src/wasm/sqlite3_wasm.g.dart b/sqlite3/lib/src/wasm/sqlite3_wasm.g.dart index 42ad26ae..1f66d19e 100644 --- a/sqlite3/lib/src/wasm/sqlite3_wasm.g.dart +++ b/sqlite3/lib/src/wasm/sqlite3_wasm.g.dart @@ -9,74 +9,80 @@ typedef Pointer = int; /// /// Generated by `tool/generate_bindings.dart`. extension type SqliteExports(JSObject raw) implements JSObject { - external Global get sqlite3_temp_directory; - external int sqlite3_initialize(); - external void sqlite3_free(Pointer /**/ arg0); - external int sqlite3_open_v2( - Pointer /**/ filename, - Pointer /**/ ppDb, - int flags, - Pointer /**/ zVfs, + external int dart_sqlite3_bind_blob( + Pointer /**/ stmt, + int index, + Pointer /**/ buf, + int len, ); - external int sqlite3_close_v2(Pointer /**/ db); - external int sqlite3_extended_result_codes( + external int dart_sqlite3_bind_text( + Pointer /**/ stmt, + int index, + Pointer /**/ buf, + int len, + ); + external int dart_sqlite3_busy_handler( Pointer /**/ db, - int onoff, + ExternalDartReference? callback, ); - external int sqlite3_extended_errcode(Pointer /**/ db); - external Pointer /**/ sqlite3_errmsg( + external void dart_sqlite3_commits( Pointer /**/ db, + ExternalDartReference? callback, ); - external Pointer /**/ sqlite3_errstr(int code); - external int sqlite3_error_offset(Pointer /**/ db); - external Pointer /**/ sqlite3_libversion(); - external Pointer /**/ sqlite3_sourceid(); - external int sqlite3_libversion_number(); - external JSBigInt sqlite3_last_insert_rowid( + external int dart_sqlite3_create_collation( Pointer /**/ db, + Pointer /**/ zName, + int eTextRep, + ExternalDartReference? function, ); - external int sqlite3_changes(Pointer /**/ db); - external int sqlite3_exec( + external int dart_sqlite3_create_function_v2( Pointer /**/ db, - Pointer /**/ sql, - Pointer /**/ callback, - Pointer /**/ argToCb, - Pointer /**/ errorOut, + Pointer /**/ zFunctionName, + int nArg, + int eTextRep, + int isAggregate, + ExternalDartReference? handlers, ); - external int sqlite3_get_autocommit(Pointer /**/ db); - external int sqlite3_prepare_v2( + external int dart_sqlite3_create_window_function( Pointer /**/ db, - Pointer /**/ zSql, - int nByte, - Pointer /**/ ppStmt, - Pointer /**/ pzTail, + Pointer /**/ zFunctionName, + int nArg, + int eTextRep, + ExternalDartReference? handlers, ); - external int sqlite3_prepare_v3( + external int dart_sqlite3_db_config_int( Pointer /**/ db, - Pointer /**/ zSql, - int nByte, - int prepFlags, - Pointer /**/ ppStmt, - Pointer /**/ pzTail, + int op, + int arg, ); - external int sqlite3_finalize(Pointer /**/ pStmt); - external int sqlite3_step(Pointer /**/ pStmt); - external int sqlite3_reset(Pointer /**/ pStmt); - external int sqlite3_stmt_isexplain( - Pointer /**/ pStmt, + external void dart_sqlite3_free(Pointer /**/ ptr); + external Pointer /**/ dart_sqlite3_malloc(int size); + external Pointer /**/ dart_sqlite3_register_vfs( + Pointer /**/ name, + ExternalDartReference? vfs, + int makeDefault, ); - external int sqlite3_stmt_readonly(Pointer /**/ pStmt); - external int sqlite3_column_count(Pointer /**/ pStmt); - external int sqlite3_bind_parameter_count( - Pointer /**/ pStmt, + external void dart_sqlite3_rollbacks( + Pointer /**/ db, + ExternalDartReference? callback, ); - external int sqlite3_bind_parameter_index( - Pointer /**/ arg0, - Pointer /**/ zName, + external int dart_sqlite3_unregister_vfs( + Pointer /**/ vfs, ); - external Pointer /**/ sqlite3_column_name( - Pointer /**/ pStmt, - int N, + external void dart_sqlite3_updates( + Pointer /**/ db, + ExternalDartReference? callback, + ); + external int dart_sqlite3changeset_apply( + Pointer /**/ db, + int nChangeset, + Pointer /**/ pChangeset, + ExternalDartReference? callbacks, + int filter, + ); + external Pointer /**/ sqlite3_aggregate_context( + Pointer /**/ ctx, + int nBytes, ); external int sqlite3_bind_double( Pointer /**/ pStmt, @@ -92,10 +98,24 @@ extension type SqliteExports(JSObject raw) implements JSObject { Pointer /**/ pStmt, int index, ); + external int sqlite3_bind_parameter_count( + Pointer /**/ pStmt, + ); + external int sqlite3_bind_parameter_index( + Pointer /**/ arg0, + Pointer /**/ zName, + ); + external int sqlite3_changes(Pointer /**/ db); + external int sqlite3_close_v2(Pointer /**/ db); external Pointer /**/ sqlite3_column_blob( Pointer /**/ pStmt, int iCol, ); + external int sqlite3_column_bytes( + Pointer /**/ pStmt, + int iCol, + ); + external int sqlite3_column_count(Pointer /**/ pStmt); external double sqlite3_column_double( Pointer /**/ pStmt, int iCol, @@ -104,11 +124,11 @@ extension type SqliteExports(JSObject raw) implements JSObject { Pointer /**/ pStmt, int iCol, ); - external Pointer /**/ sqlite3_column_text( + external Pointer /**/ sqlite3_column_name( Pointer /**/ pStmt, - int iCol, + int N, ); - external int sqlite3_column_bytes( + external Pointer /**/ sqlite3_column_text( Pointer /**/ pStmt, int iCol, ); @@ -116,30 +136,55 @@ extension type SqliteExports(JSObject raw) implements JSObject { Pointer /**/ pStmt, int iCol, ); - external Pointer /**/ sqlite3_value_blob( - Pointer /**/ value, + external int sqlite3_db_config(Pointer /**/ db, int op); + external Pointer /**/ sqlite3_errmsg( + Pointer /**/ db, ); - external double sqlite3_value_double( - Pointer /**/ value, + external int sqlite3_error_offset(Pointer /**/ db); + external Pointer /**/ sqlite3_errstr(int code); + external int sqlite3_exec( + Pointer /**/ db, + Pointer /**/ sql, + Pointer /**/ callback, + Pointer /**/ argToCb, + Pointer /**/ errorOut, ); - external int sqlite3_value_type(Pointer /**/ value); - external JSBigInt sqlite3_value_int64( - Pointer /**/ value, + external int sqlite3_extended_errcode(Pointer /**/ db); + external int sqlite3_extended_result_codes( + Pointer /**/ db, + int onoff, ); - external Pointer /**/ sqlite3_value_text( - Pointer /**/ value, + external int sqlite3_finalize(Pointer /**/ pStmt); + external void sqlite3_free(Pointer /**/ arg0); + external int sqlite3_get_autocommit(Pointer /**/ db); + external int sqlite3_initialize(); + external JSBigInt sqlite3_last_insert_rowid( + Pointer /**/ db, ); - external int sqlite3_value_bytes(Pointer /**/ value); - external int sqlite3_value_subtype( - Pointer /**/ value, + external Pointer /**/ sqlite3_libversion(); + external int sqlite3_libversion_number(); + external int sqlite3_open_v2( + Pointer /**/ filename, + Pointer /**/ ppDb, + int flags, + Pointer /**/ zVfs, ); - external Pointer /**/ sqlite3_aggregate_context( - Pointer /**/ ctx, - int nBytes, + external int sqlite3_prepare_v2( + Pointer /**/ db, + Pointer /**/ zSql, + int nByte, + Pointer /**/ ppStmt, + Pointer /**/ pzTail, ); - external Pointer /**/ sqlite3_user_data( - Pointer /**/ ctx, + external int sqlite3_prepare_v3( + Pointer /**/ db, + Pointer /**/ zSql, + int nByte, + int prepFlags, + Pointer /**/ ppStmt, + Pointer /**/ pzTail, ); + external int sqlite3_reset(Pointer /**/ pStmt); external void sqlite3_result_blob64( Pointer /**/ ctx, Pointer /**/ data, @@ -160,83 +205,93 @@ extension type SqliteExports(JSObject raw) implements JSObject { JSBigInt result, ); external void sqlite3_result_null(Pointer /**/ ctx); + external void sqlite3_result_subtype( + Pointer /**/ ctx, + int subtype, + ); external void sqlite3_result_text( Pointer /**/ ctx, Pointer /**/ data, int length, Pointer /**/ destructor, ); - external void sqlite3_result_subtype( + external Pointer /**/ sqlite3_sourceid(); + external int sqlite3_step(Pointer /**/ pStmt); + external int sqlite3_stmt_isexplain( + Pointer /**/ pStmt, + ); + external int sqlite3_stmt_readonly(Pointer /**/ pStmt); + external Global get sqlite3_temp_directory; + external Pointer /**/ sqlite3_user_data( Pointer /**/ ctx, - int subtype, ); - external int sqlite3_db_config(Pointer /**/ db, int op); - external int sqlite3session_create( - Pointer /**/ db, - Pointer /**/ zDb, - Pointer /**/ ppSession, + external Pointer /**/ sqlite3_value_blob( + Pointer /**/ value, ); - external void sqlite3session_delete( - Pointer /**/ pSession, + external int sqlite3_value_bytes(Pointer /**/ value); + external double sqlite3_value_double( + Pointer /**/ value, ); - external int sqlite3session_enable( - Pointer /**/ pSession, - int bEnable, + external JSBigInt sqlite3_value_int64( + Pointer /**/ value, ); - external int sqlite3session_indirect( - Pointer /**/ pSession, - int bIndirect, + external int sqlite3_value_subtype( + Pointer /**/ value, ); - external int sqlite3changeset_start( - Pointer /**/ pp, - int nChangeset, - Pointer /**/ pChangeset, + external Pointer /**/ sqlite3_value_text( + Pointer /**/ value, ); + external int sqlite3_value_type(Pointer /**/ value); external int sqlite3changeset_finalize( Pointer /**/ pIter, ); - external int sqlite3changeset_next( + external int sqlite3changeset_invert( + int nIn, + Pointer /**/ pIn, + Pointer /**/ pnOut, + Pointer /**/ ppOut, + ); + external int sqlite3changeset_new( Pointer /**/ pIter, + int iVal, + Pointer /**/ ppValue, ); - external int sqlite3changeset_op( + external int sqlite3changeset_next( Pointer /**/ pIter, - Pointer /**/ pzTab, - Pointer /**/ pnCol, - Pointer /**/ pOp, - Pointer /**/ pbIndirect, ); external int sqlite3changeset_old( Pointer /**/ pIter, int iVal, Pointer /**/ ppValue, ); - external int sqlite3changeset_new( + external int sqlite3changeset_op( Pointer /**/ pIter, - int iVal, - Pointer /**/ ppValue, + Pointer /**/ pzTab, + Pointer /**/ pnCol, + Pointer /**/ pOp, + Pointer /**/ pbIndirect, ); - external int sqlite3changeset_invert( - int nIn, - Pointer /**/ pIn, - Pointer /**/ pnOut, - Pointer /**/ ppOut, + external int sqlite3changeset_start( + Pointer /**/ pp, + int nChangeset, + Pointer /**/ pChangeset, ); - external int sqlite3session_patchset( + external int sqlite3session_attach( Pointer /**/ pSession, - Pointer /**/ pnPatchset, - Pointer /**/ ppPatchset, + Pointer /**/ zTab, ); external int sqlite3session_changeset( Pointer /**/ pSession, Pointer /**/ pnChangeset, Pointer /**/ ppChangeset, ); - external int sqlite3session_isempty( - Pointer /**/ pSession, + external int sqlite3session_create( + Pointer /**/ db, + Pointer /**/ zDb, + Pointer /**/ ppSession, ); - external int sqlite3session_attach( + external void sqlite3session_delete( Pointer /**/ pSession, - Pointer /**/ zTab, ); external int sqlite3session_diff( Pointer /**/ pSession, @@ -244,75 +299,20 @@ extension type SqliteExports(JSObject raw) implements JSObject { Pointer /**/ zTbl, Pointer /**/ pzErrMsg, ); - external Pointer /**/ dart_sqlite3_malloc(int size); - external void dart_sqlite3_free(Pointer /**/ ptr); - external int dart_sqlite3_bind_blob( - Pointer /**/ stmt, - int index, - Pointer /**/ buf, - int len, - ); - external int dart_sqlite3_bind_text( - Pointer /**/ stmt, - int index, - Pointer /**/ buf, - int len, - ); - external Pointer /**/ dart_sqlite3_register_vfs( - Pointer /**/ name, - ExternalDartReference? vfs, - int makeDefault, - ); - external int dart_sqlite3_unregister_vfs( - Pointer /**/ vfs, - ); - external int dart_sqlite3_create_function_v2( - Pointer /**/ db, - Pointer /**/ zFunctionName, - int nArg, - int eTextRep, - int isAggregate, - ExternalDartReference? handlers, - ); - external int dart_sqlite3_create_window_function( - Pointer /**/ db, - Pointer /**/ zFunctionName, - int nArg, - int eTextRep, - ExternalDartReference? handlers, - ); - external void dart_sqlite3_updates( - Pointer /**/ db, - ExternalDartReference? callback, - ); - external void dart_sqlite3_commits( - Pointer /**/ db, - ExternalDartReference? callback, - ); - external void dart_sqlite3_rollbacks( - Pointer /**/ db, - ExternalDartReference? callback, - ); - external int dart_sqlite3_create_collation( - Pointer /**/ db, - Pointer /**/ zName, - int eTextRep, - ExternalDartReference? function, + external int sqlite3session_enable( + Pointer /**/ pSession, + int bEnable, ); - external int dart_sqlite3_db_config_int( - Pointer /**/ db, - int op, - int arg, + external int sqlite3session_indirect( + Pointer /**/ pSession, + int bIndirect, ); - external int dart_sqlite3changeset_apply( - Pointer /**/ db, - int nChangeset, - Pointer /**/ pChangeset, - ExternalDartReference? callbacks, - int filter, + external int sqlite3session_isempty( + Pointer /**/ pSession, ); - external int dart_sqlite3_busy_handler( - Pointer /**/ db, - ExternalDartReference? callback, + external int sqlite3session_patchset( + Pointer /**/ pSession, + Pointer /**/ pnPatchset, + Pointer /**/ ppPatchset, ); } diff --git a/sqlite3/pubspec.yaml b/sqlite3/pubspec.yaml index 8b028b24..1a9cd46c 100644 --- a/sqlite3/pubspec.yaml +++ b/sqlite3/pubspec.yaml @@ -41,7 +41,11 @@ dev_dependencies: build_runner: ^2.1.7 build_web_compilers: ^4.0.3 dart_style: ^3.0.1 - ffigen: ^20.1.0 + ffigen: + git: + url: https://github.com/dart-lang/native.git + path: pkgs/ffigen + ref: ffigen_transformer http: ^1.2.1 lints: ^6.0.0 shelf: ^1.4.0 diff --git a/sqlite3/tool/generate_bindings.dart b/sqlite3/tool/generate_bindings.dart index 8718b3f6..03bb58ae 100644 --- a/sqlite3/tool/generate_bindings.dart +++ b/sqlite3/tool/generate_bindings.dart @@ -2,9 +2,9 @@ import 'dart:io'; import 'package:dart_style/dart_style.dart'; import 'package:ffigen/ffigen.dart'; +import 'package:ffigen/src/code_generator.dart' as ast; import 'package:ffigen/src/config_provider/config_types.dart'; import 'package:ffigen/src/config_provider/spec_utils.dart'; -import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/context.dart'; import 'package:ffigen/src/header_parser.dart' as ffigen; import 'package:logging/logging.dart'; @@ -19,11 +19,56 @@ void main() { writeWasmDefinitions(); } +class Sqlite3Visitor extends Visitor { + final bool Function(String name)? nameFilter; + + const Sqlite3Visitor([this.nameFilter]); + + bool _matches(String name) { + if (nameFilter != null) { + return nameFilter!(name); + } + return name.startsWith('sqlite3'); + } + + @override + void visitFunc(Func node) { + if (_matches(node.originalName)) { + node.isExcluded = false; + node.exposeSymbolAddress = true; + if (_leafFunctions.contains(node.originalName)) { + node.isLeaf = true; + } + } else { + node.isExcluded = true; + } + } + + @override + void visitStruct(Struct node) { + if (_matches(node.originalName)) { + node.isExcluded = false; + } else { + node.isExcluded = true; + } + } + + @override + void visitGlobal(Global node) { + if (node.originalName.startsWith('sqlite3')) { + node.isExcluded = false; + } else { + node.isExcluded = true; + } + } +} + FfiGenerator createGenerator( - bool Function(Declaration) filter, { + bool Function(String name) filter, { List headers = const ['assets/sqlite3.h'], }) { return FfiGenerator( + visitors: [Sqlite3Visitor(filter)], output: Output( dartFile: Uri.parse('lib/src/ffi/libsqlite3.g.dart'), preamble: '// ignore_for_file: type=lint', @@ -34,18 +79,13 @@ FfiGenerator createGenerator( headers: Headers( entryPoints: [for (final header in headers) Uri.parse(header)], ), - structs: Structs(include: filter), functions: Functions( - include: filter, - includeSymbolAddress: Declarations.includeAll, varArgs: makeVarArgFunctionsMapping({ 'sqlite3_db_config': [ RawVarArgFunction('', ['int', 'int*']), ], }, const {}), - isLeaf: (decl) => _leafFunctions.contains(decl.originalName), ), - globals: Globals(include: _includeSqlite3Only), ); } @@ -53,17 +93,12 @@ void _ffigen() { createGenerator(_includeSqlite3Only).generate(); } -bool _includeSqlite3Only(Declaration declaration) => - declaration.isSqlite3Symbol; - -extension on Declaration { - bool get isSqlite3Symbol => originalName.startsWith('sqlite3'); -} +bool _includeSqlite3Only(String name) => name.startsWith('sqlite3'); void writeWasmDefinitions() { - bool filter(Declaration d) { - return stableFunctions.contains(d.originalName) || - unstable.contains(d.originalName); + bool filter(String name) { + return stableFunctions.contains(name) || + unstable.contains(name); } final generator = createGenerator( @@ -86,24 +121,24 @@ typedef Pointer = int; extension type SqliteExports(JSObject raw) implements JSObject { '''); - void writeType(Type type) { + void writeType(ast.Type type) { const bigIntInJs = ['Int64', 'Uint64', 'Long']; switch (type) { - case PointerType(): - if (type.child.getNativeType() == 'externref ') { + case ast.PointerType(): + if (type.child.getNativeType(library.context) == 'externref ') { buffer.write('ExternalDartReference?'); } else { - buffer.write('Pointer /*<${type.getNativeType().trim()}>*/'); + buffer.write('Pointer /*<${type.getNativeType(library.context).trim()}>*/'); } return; - case NativeType(): + case ast.NativeType(): if (bigIntInJs.contains(type.toString())) { buffer.write('JSBigInt'); return; } - case ImportedType(): + case ast.ImportedType(): if (bigIntInJs.contains(type.cType)) { buffer.write('JSBigInt'); return; @@ -117,7 +152,7 @@ extension type SqliteExports(JSObject raw) implements JSObject { final mayBeAbsent = !stableFunctions.contains(binding.originalName); switch (binding) { - case Func(): + case ast.Func(): buffer.write('external '); if (mayBeAbsent) { buffer.writeln('JSFunction? get ${binding.originalName};'); @@ -138,7 +173,7 @@ extension type SqliteExports(JSObject raw) implements JSObject { buffer.writeln(');'); } - case Global(): + case ast.Global(): var jsType = 'Global'; if (mayBeAbsent) { jsType += '?'; @@ -172,7 +207,7 @@ const usedSqliteSymbols = { ); for (final binding in library.bindings) { - if (binding is Global || binding is Func) { + if (binding is ast.Global || binding is ast.Func) { buffer.writeln(" '${binding.originalName}',"); } } diff --git a/sqlite3_connection_pool/lib/src/ffi.g.dart b/sqlite3_connection_pool/lib/src/ffi.g.dart index 35af572a..628a9439 100644 --- a/sqlite3_connection_pool/lib/src/ffi.g.dart +++ b/sqlite3_connection_pool/lib/src/ffi.g.dart @@ -2,7 +2,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. // // Generated by `package:ffigen`. -// ignore_for_file: unused_import +// ignore_for_file: unused_import, unused_element, deprecated_member_use_from_same_package @ffi.DefaultAsset( 'package:sqlite3_connection_pool/sqlite3_connection_pool.dart', ) @@ -11,25 +11,29 @@ library; import 'dart:ffi' as ffi; import '' as self; -@ffi.Native< - ffi.Pointer Function( - ffi.Pointer, - ffi.UintPtr, - ffi.Pointer Function()>>, - ) ->() -external ffi.Pointer pkg_sqlite3_connection_pool_open( - ffi.Pointer name, - int name_len, - ffi.Pointer Function()>> - initialize, -); - @ffi.Native)>() external void pkg_sqlite3_connection_pool_close( ffi.Pointer pool, ); +@ffi.Native)>() +external void pkg_sqlite3_connection_pool_notify_updates( + ffi.Pointer request, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer>, + ffi.Size, + ) +>() +external void pkg_sqlite3_connection_pool_notify_updates_custom( + ffi.Pointer request, + ffi.Pointer> updates, + int updates_count, +); + @ffi.Native< ffi.Pointer Function( ffi.Pointer, @@ -37,7 +41,7 @@ external void pkg_sqlite3_connection_pool_close( ffi.Int64, ) >(isLeaf: true) -external ffi.Pointer pkg_sqlite3_connection_pool_obtain_read( +external ffi.Pointer pkg_sqlite3_connection_pool_obtain_exclusive( ffi.Pointer pool, int tag, int port, @@ -50,7 +54,7 @@ external ffi.Pointer pkg_sqlite3_connection_pool_obtain_read( ffi.Int64, ) >(isLeaf: true) -external ffi.Pointer pkg_sqlite3_connection_pool_obtain_write( +external ffi.Pointer pkg_sqlite3_connection_pool_obtain_read( ffi.Pointer pool, int tag, int port, @@ -63,15 +67,24 @@ external ffi.Pointer pkg_sqlite3_connection_pool_obtain_write( ffi.Int64, ) >(isLeaf: true) -external ffi.Pointer pkg_sqlite3_connection_pool_obtain_exclusive( +external ffi.Pointer pkg_sqlite3_connection_pool_obtain_write( ffi.Pointer pool, int tag, int port, ); -@ffi.Native)>() -external int pkg_sqlite3_connection_pool_query_read_connection_count( - ffi.Pointer pool, +@ffi.Native< + ffi.Pointer Function( + ffi.Pointer, + ffi.UintPtr, + ffi.Pointer Function()>>, + ) +>() +external ffi.Pointer pkg_sqlite3_connection_pool_open( + ffi.Pointer name, + int name_len, + ffi.Pointer Function()>> + initialize, ); @ffi.Native< @@ -89,38 +102,16 @@ external void pkg_sqlite3_connection_pool_query_connections( int reader_count, ); -@ffi.Native)>() -external void pkg_sqlite3_connection_pool_request_close( - ffi.Pointer request, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Int64) ->() -external void pkg_sqlite3_connection_pool_update_listener( +@ffi.Native)>() +external int pkg_sqlite3_connection_pool_query_read_connection_count( ffi.Pointer pool, - int add, - int listener, ); @ffi.Native)>() -external void pkg_sqlite3_connection_pool_notify_updates( +external void pkg_sqlite3_connection_pool_request_close( ffi.Pointer request, ); -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer>, - ffi.Size, - ) ->() -external void pkg_sqlite3_connection_pool_notify_updates_custom( - ffi.Pointer request, - ffi.Pointer> updates, - int updates_count, -); - @ffi.Native< ffi.Pointer Function( ffi.Pointer, @@ -152,6 +143,15 @@ external int pkg_sqlite3_connection_pool_stmt_cache_put( sqlite3_finalize, ); +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Int64) +>() +external void pkg_sqlite3_connection_pool_update_listener( + ffi.Pointer pool, + int add, + int listener, +); + const addresses = _SymbolAddresses(); class _SymbolAddresses { @@ -168,12 +168,6 @@ class _SymbolAddresses { final class ConnectionPool extends ffi.Opaque {} -final class PoolRequest extends ffi.Opaque {} - -final class PoolConnection extends ffi.Struct { - external ffi.Pointer raw; -} - final class ExternalFunctions extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< @@ -227,6 +221,63 @@ final class ExternalFunctions extends ffi.Struct { ffi.NativeFunction)> > dart_post_c_object; + + static ffi.Pointer $allocate( + ffi.Allocator $allocator, { + required ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + > + sqlite3_update_hook, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + > + sqlite3_commit_hook, + required ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ) + > + > + sqlite3_rollback_hook, + required ffi.Pointer< + ffi.NativeFunction)> + > + sqlite3_get_autocommit, + required ffi.Pointer< + ffi.NativeFunction)> + > + sqlite3_finalize, + required ffi.Pointer< + ffi.NativeFunction)> + > + sqlite3_close_v2, + required ffi.Pointer< + ffi.NativeFunction)> + > + dart_post_c_object, + }) => $allocator() + ..ref.sqlite3_update_hook = sqlite3_update_hook + ..ref.sqlite3_commit_hook = sqlite3_commit_hook + ..ref.sqlite3_rollback_hook = sqlite3_rollback_hook + ..ref.sqlite3_get_autocommit = sqlite3_get_autocommit + ..ref.sqlite3_finalize = sqlite3_finalize + ..ref.sqlite3_close_v2 = sqlite3_close_v2 + ..ref.dart_post_c_object = dart_post_c_object; } final class InitializedPool extends ffi.Struct { @@ -245,3 +296,14 @@ final class InitializedPool extends ffi.Struct { @ffi.UnsignedChar() external int enable_update_hooks; } + +final class PoolConnection extends ffi.Struct { + external ffi.Pointer raw; + + static ffi.Pointer $allocate( + ffi.Allocator $allocator, { + required ffi.Pointer raw, + }) => $allocator()..ref.raw = raw; +} + +final class PoolRequest extends ffi.Opaque {} diff --git a/sqlite3_connection_pool/pubspec.yaml b/sqlite3_connection_pool/pubspec.yaml index 5c96f7af..d39c1cdf 100644 --- a/sqlite3_connection_pool/pubspec.yaml +++ b/sqlite3_connection_pool/pubspec.yaml @@ -24,7 +24,11 @@ dependencies: dev_dependencies: async: ^2.13.0 lints: ^6.1.0 - ffigen: ^20.1.1 + ffigen: + git: + url: https://github.com/dart-lang/native.git + path: pkgs/ffigen + ref: ffigen_transformer logging: ^1.3.0 test: ^1.29.0 test_descriptor: ^2.0.2 diff --git a/sqlite3_connection_pool/tool/generate_bindings.dart b/sqlite3_connection_pool/tool/generate_bindings.dart index 611bc58f..2099927c 100644 --- a/sqlite3_connection_pool/tool/generate_bindings.dart +++ b/sqlite3_connection_pool/tool/generate_bindings.dart @@ -1,10 +1,45 @@ import 'package:ffigen/ffigen.dart'; import 'package:logging/logging.dart'; +class Sqlite3ConnectionPoolVisitor extends Visitor { + static const _structNames = { + 'InitializedPool', + 'PoolConnection', + }; + + const Sqlite3ConnectionPoolVisitor(); + + @override + void visitFunc(Func node) { + if (node.originalName.startsWith('pkg_sqlite3_connection_pool')) { + node.isExcluded = false; + if (node.originalName.contains('obtain') || + node.originalName.contains('stmt_cache')) { + node.isLeaf = true; + } + if (node.originalName.contains('close')) { + node.exposeSymbolAddress = true; + } + } else { + node.isExcluded = true; + } + } + + @override + void visitStruct(Struct node) { + if (_structNames.contains(node.originalName)) { + node.isExcluded = false; + } else { + node.isExcluded = true; + } + } +} + void main() { Logger.root.onRecord.listen(print); final generator = FfiGenerator( + visitors: const [Sqlite3ConnectionPoolVisitor()], output: Output( dartFile: Uri.parse('lib/src/ffi.g.dart'), preamble: '// ignore_for_file: type=lint', @@ -13,22 +48,6 @@ void main() { ), ), headers: Headers(entryPoints: [Uri.parse('src/headers.h')]), - functions: Functions( - include: (d) => d.originalName.startsWith('pkg_sqlite3_connection_pool'), - // The obtain functions post completions to a port and don't obtain any - // locks, so we can mark them as isLeaf. - isLeaf: (d) => - d.originalName.contains('obtain') || - d.originalName.contains('stmt_cache'), - // Close functions are used for native finalizers - includeSymbolAddress: (d) => d.originalName.contains('close'), - ), - structs: Structs( - include: Declarations.includeSet(const { - 'InitializedPool', - 'PoolConnection', - }), - ), ); generator.generate(); }