diff --git a/output b/output new file mode 100644 index 0000000..11a5057 --- /dev/null +++ b/output @@ -0,0 +1,957 @@ +[CLink] +public static extern void __va_start( va_list* bf_arg0); +[CLink] +public static extern void __security_init_cookie(); +[CLink] +public static extern void __security_check_cookie( c_uintptr _StackCookie); +[CLink] +public static extern void __report_gsfailure( c_uintptr _StackCookie); +[CLink] +public static extern c_char* sqlite3_libversion(); +[CLink] +public static extern c_char* sqlite3_sourceid(); +[CLink] +public static extern c_int sqlite3_libversion_number(); +[CLink] +public static extern c_int sqlite3_compileoption_used( c_char* zOptName); +[CLink] +public static extern c_char* sqlite3_compileoption_get( c_int N); +[CLink] +public static extern c_int sqlite3_threadsafe(); +[CLink] +public static extern c_int sqlite3_close( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_close_v2( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_exec( sqlite3* bf_arg0, c_char* sql, int(*)(void*,int,char**,char**) callback, void* bf_arg3, c_char** errmsg); +[CLink] +public static extern c_int sqlite3_initialize(); +[CLink] +public static extern c_int sqlite3_shutdown(); +[CLink] +public static extern c_int sqlite3_os_init(); +[CLink] +public static extern c_int sqlite3_os_end(); +[CLink] +public static extern c_int sqlite3_config( c_int bf_arg0); +[CLink] +public static extern c_int sqlite3_db_config( sqlite3* bf_arg0, c_int op); +[CLink] +public static extern c_int sqlite3_extended_result_codes( sqlite3* bf_arg0, c_int onoff); +[CLink] +public static extern sqlite3_int64 sqlite3_last_insert_rowid( sqlite3* bf_arg0); +[CLink] +public static extern void sqlite3_set_last_insert_rowid( sqlite3* bf_arg0, sqlite3_int64 bf_arg1); +[CLink] +public static extern c_int sqlite3_changes( sqlite3* bf_arg0); +[CLink] +public static extern sqlite3_int64 sqlite3_changes64( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_total_changes( sqlite3* bf_arg0); +[CLink] +public static extern sqlite3_int64 sqlite3_total_changes64( sqlite3* bf_arg0); +[CLink] +public static extern void sqlite3_interrupt( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_is_interrupted( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_complete( c_char* sql); +[CLink] +public static extern c_int sqlite3_complete16( void* sql); +[CLink] +public static extern c_int sqlite3_busy_handler( sqlite3* bf_arg0, int(*)(void*,int) bf_arg1, void* bf_arg2); +[CLink] +public static extern c_int sqlite3_busy_timeout( sqlite3* bf_arg0, c_int ms); +[CLink] +public static extern c_int sqlite3_get_table( sqlite3* db, c_char* zSql, c_char*** pazResult, c_int* pnRow, c_int* pnColumn, c_char** pzErrmsg); +[CLink] +public static extern void sqlite3_free_table( c_char** result); +[CLink] +public static extern c_char* sqlite3_mprintf( c_char* bf_arg0); +[CLink] +public static extern c_char* sqlite3_vmprintf( c_char* bf_arg0, va_list bf_arg1); +[CLink] +public static extern c_char* sqlite3_snprintf( c_int bf_arg0, c_char* bf_arg1, c_char* bf_arg2); +[CLink] +public static extern c_char* sqlite3_vsnprintf( c_int bf_arg0, c_char* bf_arg1, c_char* bf_arg2, va_list bf_arg3); +[CLink] +public static extern void* sqlite3_malloc( c_int bf_arg0); +[CLink] +public static extern void* sqlite3_malloc64( sqlite3_uint64 bf_arg0); +[CLink] +public static extern void* sqlite3_realloc( void* bf_arg0, c_int bf_arg1); +[CLink] +public static extern void* sqlite3_realloc64( void* bf_arg0, sqlite3_uint64 bf_arg1); +[CLink] +public static extern void sqlite3_free( void* bf_arg0); +[CLink] +public static extern sqlite3_uint64 sqlite3_msize( void* bf_arg0); +[CLink] +public static extern sqlite3_int64 sqlite3_memory_used(); +[CLink] +public static extern sqlite3_int64 sqlite3_memory_highwater( c_int resetFlag); +[CLink] +public static extern void sqlite3_randomness( c_int N, void* P); +[CLink] +public static extern c_int sqlite3_set_authorizer( sqlite3* bf_arg0, int(*)(void*,int,char*,char*,char*,char*) xAuth, void* pUserData); +[CLink] +public static extern void* sqlite3_trace( sqlite3* bf_arg0, void(*)(void*,char*) xTrace, void* bf_arg2); +[CLink] +public static extern void* sqlite3_profile( sqlite3* bf_arg0, void(*)(void*,char*,sqlite3_uint64) xProfile, void* bf_arg2); +[CLink] +public static extern c_int sqlite3_trace_v2( sqlite3* bf_arg0, c_uint uMask, int(*)(unsignedint,void*,void*,void*) xCallback, void* pCtx); +[CLink] +public static extern void sqlite3_progress_handler( sqlite3* bf_arg0, c_int bf_arg1, int(*)(void*) bf_arg2, void* bf_arg3); +[CLink] +public static extern c_int sqlite3_open( c_char* filename, sqlite3** ppDb); +[CLink] +public static extern c_int sqlite3_open16( void* filename, sqlite3** ppDb); +[CLink] +public static extern c_int sqlite3_open_v2( c_char* filename, sqlite3** ppDb, c_int flags, c_char* zVfs); +[CLink] +public static extern c_char* sqlite3_uri_parameter( sqlite3_filename z, c_char* zParam); +[CLink] +public static extern c_int sqlite3_uri_boolean( sqlite3_filename z, c_char* zParam, c_int bDefault); +[CLink] +public static extern sqlite3_int64 sqlite3_uri_int64( sqlite3_filename bf_arg0, c_char* bf_arg1, sqlite3_int64 bf_arg2); +[CLink] +public static extern c_char* sqlite3_uri_key( sqlite3_filename z, c_int N); +[CLink] +public static extern c_char* sqlite3_filename_database( sqlite3_filename bf_arg0); +[CLink] +public static extern c_char* sqlite3_filename_journal( sqlite3_filename bf_arg0); +[CLink] +public static extern c_char* sqlite3_filename_wal( sqlite3_filename bf_arg0); +[CLink] +public static extern sqlite3_file* sqlite3_database_file_object( c_char* bf_arg0); +[CLink] +public static extern sqlite3_filename sqlite3_create_filename( c_char* zDatabase, c_char* zJournal, c_char* zWal, c_int nParam, c_char** azParam); +[CLink] +public static extern void sqlite3_free_filename( sqlite3_filename bf_arg0); +[CLink] +public static extern c_int sqlite3_errcode( sqlite3* db); +[CLink] +public static extern c_int sqlite3_extended_errcode( sqlite3* db); +[CLink] +public static extern c_char* sqlite3_errmsg( sqlite3* bf_arg0); +[CLink] +public static extern void* sqlite3_errmsg16( sqlite3* bf_arg0); +[CLink] +public static extern c_char* sqlite3_errstr( c_int bf_arg0); +[CLink] +public static extern c_int sqlite3_error_offset( sqlite3* db); +[CLink] +public static extern c_int sqlite3_limit( sqlite3* bf_arg0, c_int id, c_int newVal); +[CLink] +public static extern c_int sqlite3_prepare( sqlite3* db, c_char* zSql, c_int nByte, sqlite3_stmt** ppStmt, c_char** pzTail); +[CLink] +public static extern c_int sqlite3_prepare_v2( sqlite3* db, c_char* zSql, c_int nByte, sqlite3_stmt** ppStmt, c_char** pzTail); +[CLink] +public static extern c_int sqlite3_prepare_v3( sqlite3* db, c_char* zSql, c_int nByte, c_uint prepFlags, sqlite3_stmt** ppStmt, c_char** pzTail); +[CLink] +public static extern c_int sqlite3_prepare16( sqlite3* db, void* zSql, c_int nByte, sqlite3_stmt** ppStmt, void** pzTail); +[CLink] +public static extern c_int sqlite3_prepare16_v2( sqlite3* db, void* zSql, c_int nByte, sqlite3_stmt** ppStmt, void** pzTail); +[CLink] +public static extern c_int sqlite3_prepare16_v3( sqlite3* db, void* zSql, c_int nByte, c_uint prepFlags, sqlite3_stmt** ppStmt, void** pzTail); +[CLink] +public static extern c_char* sqlite3_sql( sqlite3_stmt* pStmt); +[CLink] +public static extern c_char* sqlite3_expanded_sql( sqlite3_stmt* pStmt); +[CLink] +public static extern c_int sqlite3_stmt_readonly( sqlite3_stmt* pStmt); +[CLink] +public static extern c_int sqlite3_stmt_isexplain( sqlite3_stmt* pStmt); +[CLink] +public static extern c_int sqlite3_stmt_explain( sqlite3_stmt* pStmt, c_int eMode); +[CLink] +public static extern c_int sqlite3_stmt_busy( sqlite3_stmt* bf_arg0); +[CLink] +public static extern c_int sqlite3_bind_blob( sqlite3_stmt* bf_arg0, c_int bf_arg1, void* bf_arg2, c_int n, void(*)(void*) bf_arg4); +[CLink] +public static extern c_int sqlite3_bind_blob64( sqlite3_stmt* bf_arg0, c_int bf_arg1, void* bf_arg2, sqlite3_uint64 bf_arg3, void(*)(void*) bf_arg4); +[CLink] +public static extern c_int sqlite3_bind_double( sqlite3_stmt* bf_arg0, c_int bf_arg1, double bf_arg2); +[CLink] +public static extern c_int sqlite3_bind_int( sqlite3_stmt* bf_arg0, c_int bf_arg1, c_int bf_arg2); +[CLink] +public static extern c_int sqlite3_bind_int64( sqlite3_stmt* bf_arg0, c_int bf_arg1, sqlite3_int64 bf_arg2); +[CLink] +public static extern c_int sqlite3_bind_null( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern c_int sqlite3_bind_text( sqlite3_stmt* bf_arg0, c_int bf_arg1, c_char* bf_arg2, c_int bf_arg3, void(*)(void*) bf_arg4); +[CLink] +public static extern c_int sqlite3_bind_text16( sqlite3_stmt* bf_arg0, c_int bf_arg1, void* bf_arg2, c_int bf_arg3, void(*)(void*) bf_arg4); +[CLink] +public static extern c_int sqlite3_bind_text64( sqlite3_stmt* bf_arg0, c_int bf_arg1, c_char* bf_arg2, sqlite3_uint64 bf_arg3, void(*)(void*) bf_arg4, c_uchar encoding); +[CLink] +public static extern c_int sqlite3_bind_value( sqlite3_stmt* bf_arg0, c_int bf_arg1, sqlite3_value* bf_arg2); +[CLink] +public static extern c_int sqlite3_bind_pointer( sqlite3_stmt* bf_arg0, c_int bf_arg1, void* bf_arg2, c_char* bf_arg3, void(*)(void*) bf_arg4); +[CLink] +public static extern c_int sqlite3_bind_zeroblob( sqlite3_stmt* bf_arg0, c_int bf_arg1, c_int n); +[CLink] +public static extern c_int sqlite3_bind_zeroblob64( sqlite3_stmt* bf_arg0, c_int bf_arg1, sqlite3_uint64 bf_arg2); +[CLink] +public static extern c_int sqlite3_bind_parameter_count( sqlite3_stmt* bf_arg0); +[CLink] +public static extern c_char* sqlite3_bind_parameter_name( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern c_int sqlite3_bind_parameter_index( sqlite3_stmt* bf_arg0, c_char* zName); +[CLink] +public static extern c_int sqlite3_clear_bindings( sqlite3_stmt* bf_arg0); +[CLink] +public static extern c_int sqlite3_column_count( sqlite3_stmt* pStmt); +[CLink] +public static extern c_char* sqlite3_column_name( sqlite3_stmt* bf_arg0, c_int N); +[CLink] +public static extern void* sqlite3_column_name16( sqlite3_stmt* bf_arg0, c_int N); +[CLink] +public static extern c_char* sqlite3_column_database_name( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern void* sqlite3_column_database_name16( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern c_char* sqlite3_column_table_name( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern void* sqlite3_column_table_name16( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern c_char* sqlite3_column_origin_name( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern void* sqlite3_column_origin_name16( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern c_char* sqlite3_column_decltype( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern void* sqlite3_column_decltype16( sqlite3_stmt* bf_arg0, c_int bf_arg1); +[CLink] +public static extern c_int sqlite3_step( sqlite3_stmt* bf_arg0); +[CLink] +public static extern c_int sqlite3_data_count( sqlite3_stmt* pStmt); +[CLink] +public static extern void* sqlite3_column_blob( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern double sqlite3_column_double( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern c_int sqlite3_column_int( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern sqlite3_int64 sqlite3_column_int64( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern c_uchar* sqlite3_column_text( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern void* sqlite3_column_text16( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern sqlite3_value* sqlite3_column_value( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern c_int sqlite3_column_bytes( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern c_int sqlite3_column_bytes16( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern c_int sqlite3_column_type( sqlite3_stmt* bf_arg0, c_int iCol); +[CLink] +public static extern c_int sqlite3_finalize( sqlite3_stmt* pStmt); +[CLink] +public static extern c_int sqlite3_reset( sqlite3_stmt* pStmt); +[CLink] +public static extern c_int sqlite3_create_function( sqlite3* db, c_char* zFunctionName, c_int nArg, c_int eTextRep, void* pApp, void(*)(sqlite3_context*,int,sqlite3_value**) xFunc, void(*)(sqlite3_context*,int,sqlite3_value**) xStep, void(*)(sqlite3_context*) xFinal); +[CLink] +public static extern c_int sqlite3_create_function16( sqlite3* db, void* zFunctionName, c_int nArg, c_int eTextRep, void* pApp, void(*)(sqlite3_context*,int,sqlite3_value**) xFunc, void(*)(sqlite3_context*,int,sqlite3_value**) xStep, void(*)(sqlite3_context*) xFinal); +[CLink] +public static extern c_int sqlite3_create_function_v2( sqlite3* db, c_char* zFunctionName, c_int nArg, c_int eTextRep, void* pApp, void(*)(sqlite3_context*,int,sqlite3_value**) xFunc, void(*)(sqlite3_context*,int,sqlite3_value**) xStep, void(*)(sqlite3_context*) xFinal, void(*)(void*) xDestroy); +[CLink] +public static extern c_int sqlite3_create_window_function( sqlite3* db, c_char* zFunctionName, c_int nArg, c_int eTextRep, void* pApp, void(*)(sqlite3_context*,int,sqlite3_value**) xStep, void(*)(sqlite3_context*) xFinal, void(*)(sqlite3_context*) xValue, void(*)(sqlite3_context*,int,sqlite3_value**) xInverse, void(*)(void*) xDestroy); +[CLink] +public static extern c_int sqlite3_aggregate_count( sqlite3_context* bf_arg0); +[CLink] +public static extern c_int sqlite3_expired( sqlite3_stmt* bf_arg0); +[CLink] +public static extern c_int sqlite3_transfer_bindings( sqlite3_stmt* bf_arg0, sqlite3_stmt* bf_arg1); +[CLink] +public static extern c_int sqlite3_global_recover(); +[CLink] +public static extern void sqlite3_thread_cleanup(); +[CLink] +public static extern c_int sqlite3_memory_alarm( void(*)(void*,sqlite3_int64,int) bf_arg0, void* bf_arg1, sqlite3_int64 bf_arg2); +[CLink] +public static extern void* sqlite3_value_blob( sqlite3_value* bf_arg0); +[CLink] +public static extern double sqlite3_value_double( sqlite3_value* bf_arg0); +[CLink] +public static extern c_int sqlite3_value_int( sqlite3_value* bf_arg0); +[CLink] +public static extern sqlite3_int64 sqlite3_value_int64( sqlite3_value* bf_arg0); +[CLink] +public static extern void* sqlite3_value_pointer( sqlite3_value* bf_arg0, c_char* bf_arg1); +[CLink] +public static extern c_uchar* sqlite3_value_text( sqlite3_value* bf_arg0); +[CLink] +public static extern void* sqlite3_value_text16( sqlite3_value* bf_arg0); +[CLink] +public static extern void* sqlite3_value_text16le( sqlite3_value* bf_arg0); +[CLink] +public static extern void* sqlite3_value_text16be( sqlite3_value* bf_arg0); +[CLink] +public static extern c_int sqlite3_value_bytes( sqlite3_value* bf_arg0); +[CLink] +public static extern c_int sqlite3_value_bytes16( sqlite3_value* bf_arg0); +[CLink] +public static extern c_int sqlite3_value_type( sqlite3_value* bf_arg0); +[CLink] +public static extern c_int sqlite3_value_numeric_type( sqlite3_value* bf_arg0); +[CLink] +public static extern c_int sqlite3_value_nochange( sqlite3_value* bf_arg0); +[CLink] +public static extern c_int sqlite3_value_frombind( sqlite3_value* bf_arg0); +[CLink] +public static extern c_int sqlite3_value_encoding( sqlite3_value* bf_arg0); +[CLink] +public static extern c_uint sqlite3_value_subtype( sqlite3_value* bf_arg0); +[CLink] +public static extern sqlite3_value* sqlite3_value_dup( sqlite3_value* bf_arg0); +[CLink] +public static extern void sqlite3_value_free( sqlite3_value* bf_arg0); +[CLink] +public static extern void* sqlite3_aggregate_context( sqlite3_context* bf_arg0, c_int nBytes); +[CLink] +public static extern void* sqlite3_user_data( sqlite3_context* bf_arg0); +[CLink] +public static extern sqlite3* sqlite3_context_db_handle( sqlite3_context* bf_arg0); +[CLink] +public static extern void* sqlite3_get_auxdata( sqlite3_context* bf_arg0, c_int N); +[CLink] +public static extern void sqlite3_set_auxdata( sqlite3_context* bf_arg0, c_int N, void* bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void* sqlite3_get_clientdata( sqlite3* bf_arg0, c_char* bf_arg1); +[CLink] +public static extern c_int sqlite3_set_clientdata( sqlite3* bf_arg0, c_char* bf_arg1, void* bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void sqlite3_result_blob( sqlite3_context* bf_arg0, void* bf_arg1, c_int bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void sqlite3_result_blob64( sqlite3_context* bf_arg0, void* bf_arg1, sqlite3_uint64 bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void sqlite3_result_double( sqlite3_context* bf_arg0, double bf_arg1); +[CLink] +public static extern void sqlite3_result_error( sqlite3_context* bf_arg0, c_char* bf_arg1, c_int bf_arg2); +[CLink] +public static extern void sqlite3_result_error16( sqlite3_context* bf_arg0, void* bf_arg1, c_int bf_arg2); +[CLink] +public static extern void sqlite3_result_error_toobig( sqlite3_context* bf_arg0); +[CLink] +public static extern void sqlite3_result_error_nomem( sqlite3_context* bf_arg0); +[CLink] +public static extern void sqlite3_result_error_code( sqlite3_context* bf_arg0, c_int bf_arg1); +[CLink] +public static extern void sqlite3_result_int( sqlite3_context* bf_arg0, c_int bf_arg1); +[CLink] +public static extern void sqlite3_result_int64( sqlite3_context* bf_arg0, sqlite3_int64 bf_arg1); +[CLink] +public static extern void sqlite3_result_null( sqlite3_context* bf_arg0); +[CLink] +public static extern void sqlite3_result_text( sqlite3_context* bf_arg0, c_char* bf_arg1, c_int bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void sqlite3_result_text64( sqlite3_context* bf_arg0, c_char* bf_arg1, sqlite3_uint64 bf_arg2, void(*)(void*) bf_arg3, c_uchar encoding); +[CLink] +public static extern void sqlite3_result_text16( sqlite3_context* bf_arg0, void* bf_arg1, c_int bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void sqlite3_result_text16le( sqlite3_context* bf_arg0, void* bf_arg1, c_int bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void sqlite3_result_text16be( sqlite3_context* bf_arg0, void* bf_arg1, c_int bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void sqlite3_result_value( sqlite3_context* bf_arg0, sqlite3_value* bf_arg1); +[CLink] +public static extern void sqlite3_result_pointer( sqlite3_context* bf_arg0, void* bf_arg1, c_char* bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void sqlite3_result_zeroblob( sqlite3_context* bf_arg0, c_int n); +[CLink] +public static extern c_int sqlite3_result_zeroblob64( sqlite3_context* bf_arg0, sqlite3_uint64 n); +[CLink] +public static extern void sqlite3_result_subtype( sqlite3_context* bf_arg0, c_uint bf_arg1); +[CLink] +public static extern c_int sqlite3_create_collation( sqlite3* bf_arg0, c_char* zName, c_int eTextRep, void* pArg, int(*)(void*,int,void*,int,void*) xCompare); +[CLink] +public static extern c_int sqlite3_create_collation_v2( sqlite3* bf_arg0, c_char* zName, c_int eTextRep, void* pArg, int(*)(void*,int,void*,int,void*) xCompare, void(*)(void*) xDestroy); +[CLink] +public static extern c_int sqlite3_create_collation16( sqlite3* bf_arg0, void* zName, c_int eTextRep, void* pArg, int(*)(void*,int,void*,int,void*) xCompare); +[CLink] +public static extern c_int sqlite3_collation_needed( sqlite3* bf_arg0, void* bf_arg1, void(*)(void*,sqlite3*,int,char*) bf_arg2); +[CLink] +public static extern c_int sqlite3_collation_needed16( sqlite3* bf_arg0, void* bf_arg1, void(*)(void*,sqlite3*,int,void*) bf_arg2); +[CLink] +public static extern c_int sqlite3_sleep( c_int bf_arg0); +[CLink] +public static extern c_int sqlite3_win32_set_directory( c_ulong type, void* zValue); +[CLink] +public static extern c_int sqlite3_win32_set_directory8( c_ulong type, c_char* zValue); +[CLink] +public static extern c_int sqlite3_win32_set_directory16( c_ulong type, void* zValue); +[CLink] +public static extern c_int sqlite3_get_autocommit( sqlite3* bf_arg0); +[CLink] +public static extern sqlite3* sqlite3_db_handle( sqlite3_stmt* bf_arg0); +[CLink] +public static extern c_char* sqlite3_db_name( sqlite3* db, c_int N); +[CLink] +public static extern sqlite3_filename sqlite3_db_filename( sqlite3* db, c_char* zDbName); +[CLink] +public static extern c_int sqlite3_db_readonly( sqlite3* db, c_char* zDbName); +[CLink] +public static extern c_int sqlite3_txn_state( sqlite3* bf_arg0, c_char* zSchema); +[CLink] +public static extern sqlite3_stmt* sqlite3_next_stmt( sqlite3* pDb, sqlite3_stmt* pStmt); +[CLink] +public static extern void* sqlite3_commit_hook( sqlite3* bf_arg0, int(*)(void*) bf_arg1, void* bf_arg2); +[CLink] +public static extern void* sqlite3_rollback_hook( sqlite3* bf_arg0, void(*)(void*) bf_arg1, void* bf_arg2); +[CLink] +public static extern c_int sqlite3_autovacuum_pages( sqlite3* db, unsignedint(*)(void*,char*,unsignedint,unsignedint,unsignedint) bf_arg1, void* bf_arg2, void(*)(void*) bf_arg3); +[CLink] +public static extern void* sqlite3_update_hook( sqlite3* bf_arg0, void(*)(void*,int,char*,char*,sqlite3_int64) bf_arg1, void* bf_arg2); +[CLink] +public static extern c_int sqlite3_enable_shared_cache( c_int bf_arg0); +[CLink] +public static extern c_int sqlite3_release_memory( c_int bf_arg0); +[CLink] +public static extern c_int sqlite3_db_release_memory( sqlite3* bf_arg0); +[CLink] +public static extern sqlite3_int64 sqlite3_soft_heap_limit64( sqlite3_int64 N); +[CLink] +public static extern sqlite3_int64 sqlite3_hard_heap_limit64( sqlite3_int64 N); +[CLink] +public static extern void sqlite3_soft_heap_limit( c_int N); +[CLink] +public static extern c_int sqlite3_table_column_metadata( sqlite3* db, c_char* zDbName, c_char* zTableName, c_char* zColumnName, c_char** pzDataType, c_char** pzCollSeq, c_int* pNotNull, c_int* pPrimaryKey, c_int* pAutoinc); +[CLink] +public static extern c_int sqlite3_load_extension( sqlite3* db, c_char* zFile, c_char* zProc, c_char** pzErrMsg); +[CLink] +public static extern c_int sqlite3_enable_load_extension( sqlite3* db, c_int onoff); +[CLink] +public static extern c_int sqlite3_auto_extension( void(*)(void) xEntryPoint); +[CLink] +public static extern c_int sqlite3_cancel_auto_extension( void(*)(void) xEntryPoint); +[CLink] +public static extern void sqlite3_reset_auto_extension(); +[CLink] +public static extern c_int sqlite3_create_module( sqlite3* db, c_char* zName, sqlite3_module* p, void* pClientData); +[CLink] +public static extern c_int sqlite3_create_module_v2( sqlite3* db, c_char* zName, sqlite3_module* p, void* pClientData, void(*)(void*) xDestroy); +[CLink] +public static extern c_int sqlite3_drop_modules( sqlite3* db, c_char** azKeep); +[CLink] +public static extern c_int sqlite3_declare_vtab( sqlite3* bf_arg0, c_char* zSQL); +[CLink] +public static extern c_int sqlite3_overload_function( sqlite3* bf_arg0, c_char* zFuncName, c_int nArg); +[CLink] +public static extern c_int sqlite3_blob_open( sqlite3* bf_arg0, c_char* zDb, c_char* zTable, c_char* zColumn, sqlite3_int64 iRow, c_int flags, sqlite3_blob** ppBlob); +[CLink] +public static extern c_int sqlite3_blob_reopen( sqlite3_blob* bf_arg0, sqlite3_int64 bf_arg1); +[CLink] +public static extern c_int sqlite3_blob_close( sqlite3_blob* bf_arg0); +[CLink] +public static extern c_int sqlite3_blob_bytes( sqlite3_blob* bf_arg0); +[CLink] +public static extern c_int sqlite3_blob_read( sqlite3_blob* bf_arg0, void* Z, c_int N, c_int iOffset); +[CLink] +public static extern c_int sqlite3_blob_write( sqlite3_blob* bf_arg0, void* z, c_int n, c_int iOffset); +[CLink] +public static extern sqlite3_vfs* sqlite3_vfs_find( c_char* zVfsName); +[CLink] +public static extern c_int sqlite3_vfs_register( sqlite3_vfs* bf_arg0, c_int makeDflt); +[CLink] +public static extern c_int sqlite3_vfs_unregister( sqlite3_vfs* bf_arg0); +[CLink] +public static extern sqlite3_mutex* sqlite3_mutex_alloc( c_int bf_arg0); +[CLink] +public static extern void sqlite3_mutex_free( sqlite3_mutex* bf_arg0); +[CLink] +public static extern void sqlite3_mutex_enter( sqlite3_mutex* bf_arg0); +[CLink] +public static extern c_int sqlite3_mutex_try( sqlite3_mutex* bf_arg0); +[CLink] +public static extern void sqlite3_mutex_leave( sqlite3_mutex* bf_arg0); +[CLink] +public static extern c_int sqlite3_mutex_held( sqlite3_mutex* bf_arg0); +[CLink] +public static extern c_int sqlite3_mutex_notheld( sqlite3_mutex* bf_arg0); +[CLink] +public static extern sqlite3_mutex* sqlite3_db_mutex( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_file_control( sqlite3* bf_arg0, c_char* zDbName, c_int op, void* bf_arg3); +[CLink] +public static extern c_int sqlite3_test_control( c_int op); +[CLink] +public static extern c_int sqlite3_keyword_count(); +[CLink] +public static extern c_int sqlite3_keyword_name( c_int bf_arg0, c_char** bf_arg1, c_int* bf_arg2); +[CLink] +public static extern c_int sqlite3_keyword_check( c_char* bf_arg0, c_int bf_arg1); +[CLink] +public static extern sqlite3_str* sqlite3_str_new( sqlite3* bf_arg0); +[CLink] +public static extern c_char* sqlite3_str_finish( sqlite3_str* bf_arg0); +[CLink] +public static extern void sqlite3_str_appendf( sqlite3_str* bf_arg0, c_char* zFormat); +[CLink] +public static extern void sqlite3_str_vappendf( sqlite3_str* bf_arg0, c_char* zFormat, va_list bf_arg2); +[CLink] +public static extern void sqlite3_str_append( sqlite3_str* bf_arg0, c_char* zIn, c_int N); +[CLink] +public static extern void sqlite3_str_appendall( sqlite3_str* bf_arg0, c_char* zIn); +[CLink] +public static extern void sqlite3_str_appendchar( sqlite3_str* bf_arg0, c_int N, c_char C); +[CLink] +public static extern void sqlite3_str_reset( sqlite3_str* bf_arg0); +[CLink] +public static extern c_int sqlite3_str_errcode( sqlite3_str* bf_arg0); +[CLink] +public static extern c_int sqlite3_str_length( sqlite3_str* bf_arg0); +[CLink] +public static extern c_char* sqlite3_str_value( sqlite3_str* bf_arg0); +[CLink] +public static extern c_int sqlite3_status( c_int op, c_int* pCurrent, c_int* pHighwater, c_int resetFlag); +[CLink] +public static extern c_int sqlite3_status64( c_int op, sqlite3_int64* pCurrent, sqlite3_int64* pHighwater, c_int resetFlag); +[CLink] +public static extern c_int sqlite3_db_status( sqlite3* bf_arg0, c_int op, c_int* pCur, c_int* pHiwtr, c_int resetFlg); +[CLink] +public static extern c_int sqlite3_stmt_status( sqlite3_stmt* bf_arg0, c_int op, c_int resetFlg); +[CLink] +public static extern sqlite3_backup* sqlite3_backup_init( sqlite3* pDest, c_char* zDestName, sqlite3* pSource, c_char* zSourceName); +[CLink] +public static extern c_int sqlite3_backup_step( sqlite3_backup* p, c_int nPage); +[CLink] +public static extern c_int sqlite3_backup_finish( sqlite3_backup* p); +[CLink] +public static extern c_int sqlite3_backup_remaining( sqlite3_backup* p); +[CLink] +public static extern c_int sqlite3_backup_pagecount( sqlite3_backup* p); +[CLink] +public static extern c_int sqlite3_unlock_notify( sqlite3* pBlocked, void(*)(void**,int) xNotify, void* pNotifyArg); +[CLink] +public static extern c_int sqlite3_stricmp( c_char* bf_arg0, c_char* bf_arg1); +[CLink] +public static extern c_int sqlite3_strnicmp( c_char* bf_arg0, c_char* bf_arg1, c_int bf_arg2); +[CLink] +public static extern c_int sqlite3_strglob( c_char* zGlob, c_char* zStr); +[CLink] +public static extern c_int sqlite3_strlike( c_char* zGlob, c_char* zStr, c_uint cEsc); +[CLink] +public static extern void sqlite3_log( c_int iErrCode, c_char* zFormat); +[CLink] +public static extern void* sqlite3_wal_hook( sqlite3* bf_arg0, int(*)(void*,sqlite3*,char*,int) bf_arg1, void* bf_arg2); +[CLink] +public static extern c_int sqlite3_wal_autocheckpoint( sqlite3* db, c_int N); +[CLink] +public static extern c_int sqlite3_wal_checkpoint( sqlite3* db, c_char* zDb); +[CLink] +public static extern c_int sqlite3_wal_checkpoint_v2( sqlite3* db, c_char* zDb, c_int eMode, c_int* pnLog, c_int* pnCkpt); +[CLink] +public static extern c_int sqlite3_vtab_config( sqlite3* bf_arg0, c_int op); +[CLink] +public static extern c_int sqlite3_vtab_on_conflict( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_vtab_nochange( sqlite3_context* bf_arg0); +[CLink] +public static extern c_char* sqlite3_vtab_collation( sqlite3_index_info* bf_arg0, c_int bf_arg1); +[CLink] +public static extern c_int sqlite3_vtab_distinct( sqlite3_index_info* bf_arg0); +[CLink] +public static extern c_int sqlite3_vtab_in( sqlite3_index_info* bf_arg0, c_int iCons, c_int bHandle); +[CLink] +public static extern c_int sqlite3_vtab_in_first( sqlite3_value* pVal, sqlite3_value** ppOut); +[CLink] +public static extern c_int sqlite3_vtab_in_next( sqlite3_value* pVal, sqlite3_value** ppOut); +[CLink] +public static extern c_int sqlite3_vtab_rhs_value( sqlite3_index_info* bf_arg0, c_int bf_arg1, sqlite3_value** ppVal); +[CLink] +public static extern c_int sqlite3_stmt_scanstatus( sqlite3_stmt* pStmt, c_int idx, c_int iScanStatusOp, void* pOut); +[CLink] +public static extern c_int sqlite3_stmt_scanstatus_v2( sqlite3_stmt* pStmt, c_int idx, c_int iScanStatusOp, c_int flags, void* pOut); +[CLink] +public static extern void sqlite3_stmt_scanstatus_reset( sqlite3_stmt* bf_arg0); +[CLink] +public static extern c_int sqlite3_db_cacheflush( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_system_errno( sqlite3* bf_arg0); +[CLink] +public static extern c_int sqlite3_snapshot_get( sqlite3* db, c_char* zSchema, sqlite3_snapshot** ppSnapshot); +[CLink] +public static extern c_int sqlite3_snapshot_open( sqlite3* db, c_char* zSchema, sqlite3_snapshot* pSnapshot); +[CLink] +public static extern void sqlite3_snapshot_free( sqlite3_snapshot* bf_arg0); +[CLink] +public static extern c_int sqlite3_snapshot_cmp( sqlite3_snapshot* p1, sqlite3_snapshot* p2); +[CLink] +public static extern c_int sqlite3_snapshot_recover( sqlite3* db, c_char* zDb); +[CLink] +public static extern c_uchar* sqlite3_serialize( sqlite3* db, c_char* zSchema, sqlite3_int64* piSize, c_uint mFlags); +[CLink] +public static extern c_int sqlite3_deserialize( sqlite3* db, c_char* zSchema, c_uchar* pData, sqlite3_int64 szDb, sqlite3_int64 szBuf, c_uint mFlags); +[CLink] +public static extern c_int sqlite3_rtree_geometry_callback( sqlite3* db, c_char* zGeom, int(*)(sqlite3_rtree_geometry*,int,sqlite3_rtree_dbl*,int*) xGeom, void* pContext); +[CLink] +public static extern c_int sqlite3_rtree_query_callback( sqlite3* db, c_char* zQueryFunc, int(*)(sqlite3_rtree_query_info*) xQueryFunc, void* pContext, void(*)(void*) xDestructor); +[CRepr] +public struct sqlite3 +{ +} +[CRepr] +public struct sqlite3_file +{ +} +[CRepr] +public struct sqlite3_file +{ +} +[CRepr] +public struct sqlite3_io_methods +{ + public structsqlite3_io_methods* pMethods; +} +[CRepr] +public struct sqlite3_io_methods +{ +} +[CRepr] +public struct sqlite3_mutex +{ +} +[CRepr] +public struct sqlite3_api_routines +{ +} +[CRepr] +public struct sqlite3_vfs +{ +} +[CRepr] +public struct sqlite3_vfs +{ +} +[CRepr] +public struct sqlite3_mem_methods +{ +} +[CRepr] +public struct sqlite3_mem_methods +{ + public void*(*)(int) xMalloc; + public void(*)(void*) xFree; + public void*(*)(void*,int) xRealloc; + public int(*)(void*) xSize; + public int(*)(int) xRoundup; + public int(*)(void*) xInit; + public void(*)(void*) xShutdown; + public void* pAppData; +} +[CRepr] +public struct sqlite3_stmt +{ +} +[CRepr] +public struct sqlite3_value +{ +} +[CRepr] +public struct sqlite3_context +{ +} +[CRepr] +public struct sqlite3_vtab +{ +} +[CRepr] +public struct sqlite3_index_info +{ +} +[CRepr] +public struct sqlite3_vtab_cursor +{ +} +[CRepr] +public struct sqlite3_module +{ +} +[CRepr] +public struct sqlite3_module +{ + public c_int iVersion; + public int(*)(sqlite3*,void*,int,char**,sqlite3_vtab**,char**) xCreate; + public int(*)(sqlite3*,void*,int,char**,sqlite3_vtab**,char**) xConnect; + public int(*)(sqlite3_vtab*,sqlite3_index_info*) xBestIndex; + public int(*)(sqlite3_vtab*) xDisconnect; + public int(*)(sqlite3_vtab*) xDestroy; + public int(*)(sqlite3_vtab*,sqlite3_vtab_cursor**) xOpen; + public int(*)(sqlite3_vtab_cursor*) xClose; + public int(*)(sqlite3_vtab_cursor*,int,char*,int,sqlite3_value**) xFilter; + public int(*)(sqlite3_vtab_cursor*) xNext; + public int(*)(sqlite3_vtab_cursor*) xEof; + public int(*)(sqlite3_vtab_cursor*,sqlite3_context*,int) xColumn; + public int(*)(sqlite3_vtab_cursor*,sqlite3_int64*) xRowid; + public int(*)(sqlite3_vtab*,int,sqlite3_value**,sqlite3_int64*) xUpdate; + public int(*)(sqlite3_vtab*) xBegin; + public int(*)(sqlite3_vtab*) xSync; + public int(*)(sqlite3_vtab*) xCommit; + public int(*)(sqlite3_vtab*) xRollback; + public int(*)(sqlite3_vtab*,int,char*,void(**)(sqlite3_context*,int,sqlite3_value**),void**) xFindFunction; + public int(*)(sqlite3_vtab*,char*) xRename; + public int(*)(sqlite3_vtab*,int) xSavepoint; + public int(*)(sqlite3_vtab*,int) xRelease; + public int(*)(sqlite3_vtab*,int) xRollbackTo; + public int(*)(char*) xShadowName; + public int(*)(sqlite3_vtab*,char*,char*,int,char**) xIntegrity; +} +[CRepr] +public struct sqlite3_index_info +{ + public c_int nConstraint; +} +[CRepr] +public struct sqlite3_index_constraint +{ + public c_int iColumn; + public c_uchar op; + public c_uchar usable; + public c_int iTermOffset; + public structsqlite3_index_raint* aConstraint; + public c_int nOrderBy; +} +[CRepr] +public struct sqlite3_index_orderby +{ + public c_int iColumn; + public c_uchar desc; + public structsqlite3_index_orderby* aOrderBy; +} +[CRepr] +public struct sqlite3_index_orderby +{ + public c_int iColumn; + public c_uchar desc; +} +[CRepr] +public struct sqlite3_index_constraint_usage +{ + public c_int argvIndex; + public c_uchar omit; + public structsqlite3_index_raint_usage* aConstraintUsage; +} +[CRepr] +public struct sqlite3_index_constraint_usage +{ + public c_int argvIndex; + public c_uchar omit; + public c_int idxNum; + public c_char* idxStr; + public c_int needToFreeIdxStr; + public c_int orderByConsumed; + public double estimatedCost; + public sqlite3_int64 estimatedRows; + public c_int idxFlags; + public sqlite3_uint64 colUsed; +} +[CRepr] +public struct sqlite3_vtab +{ + public sqlite3_module* pModule; + public c_int nRef; + public c_char* zErrMsg; +} +[CRepr] +public struct sqlite3_vtab_cursor +{ + public sqlite3_vtab* pVtab; +} +[CRepr] +public struct sqlite3_blob +{ +} +[CRepr] +public struct sqlite3_mutex_methods +{ +} +[CRepr] +public struct sqlite3_mutex_methods +{ + public int(*)(void) xMutexInit; + public int(*)(void) xMutexEnd; + public sqlite3_mutex*(*)(int) xMutexAlloc; + public void(*)(sqlite3_mutex*) xMutexFree; + public void(*)(sqlite3_mutex*) xMutexEnter; + public int(*)(sqlite3_mutex*) xMutexTry; + public void(*)(sqlite3_mutex*) xMutexLeave; + public int(*)(sqlite3_mutex*) xMutexHeld; + public int(*)(sqlite3_mutex*) xMutexNotheld; +} +[CRepr] +public struct sqlite3_str +{ +} +[CRepr] +public struct sqlite3_pcache +{ +} +[CRepr] +public struct sqlite3_pcache_page +{ +} +[CRepr] +public struct sqlite3_pcache_page +{ + public void* pBuf; + public void* pExtra; +} +[CRepr] +public struct sqlite3_pcache_methods2 +{ +} +[CRepr] +public struct sqlite3_pcache_methods2 +{ + public c_int iVersion; + public void* pArg; + public int(*)(void*) xInit; + public void(*)(void*) xShutdown; + public sqlite3_pcache*(*)(int,int,int) xCreate; + public void(*)(sqlite3_pcache*,int) xCachesize; + public int(*)(sqlite3_pcache*) xPagecount; + public sqlite3_pcache_page*(*)(sqlite3_pcache*,unsignedint,int) xFetch; + public void(*)(sqlite3_pcache*,sqlite3_pcache_page*,int) xUnpin; + public void(*)(sqlite3_pcache*,sqlite3_pcache_page*,unsignedint,unsignedint) xRekey; + public void(*)(sqlite3_pcache*,unsignedint) xTruncate; + public void(*)(sqlite3_pcache*) xDestroy; + public void(*)(sqlite3_pcache*) xShrink; +} +[CRepr] +public struct sqlite3_pcache_methods +{ +} +[CRepr] +public struct sqlite3_pcache_methods +{ + public void* pArg; + public int(*)(void*) xInit; + public void(*)(void*) xShutdown; + public sqlite3_pcache*(*)(int,int) xCreate; + public void(*)(sqlite3_pcache*,int) xCachesize; + public int(*)(sqlite3_pcache*) xPagecount; + public void*(*)(sqlite3_pcache*,unsignedint,int) xFetch; + public void(*)(sqlite3_pcache*,void*,int) xUnpin; + public void(*)(sqlite3_pcache*,void*,unsignedint,unsignedint) xRekey; + public void(*)(sqlite3_pcache*,unsignedint) xTruncate; + public void(*)(sqlite3_pcache*) xDestroy; +} +[CRepr] +public struct sqlite3_backup +{ +} +[CRepr] +public struct sqlite3_snapshot +{ + public unsignedchar[48] hidden; +} +[CRepr] +public struct sqlite3_rtree_geometry +{ +} +[CRepr] +public struct sqlite3_rtree_query_info +{ +} +[CRepr] +public struct sqlite3_rtree_geometry +{ + public void* pContext; + public c_int nParam; + public sqlite3_rtree_dbl* aParam; + public void* pUser; + public void(*)(void*) xDelUser; +} +[CRepr] +public struct sqlite3_rtree_query_info +{ + public void* pContext; + public c_int nParam; + public sqlite3_rtree_dbl* aParam; + public void* pUser; + public void(*)(void*) xDelUser; + public sqlite3_rtree_dbl* aCoord; + public c_uint* anQueue; + public c_int nCoord; + public c_int iLevel; + public c_int mxLevel; + public sqlite3_int64 iRowid; + public sqlite3_rtree_dbl rParentScore; + public c_int eParentWithin; + public c_int eWithin; + public sqlite3_rtree_dbl rScore; + public sqlite3_value** apSqlParam; +} +[CRepr] +public struct Fts5ExtensionApi +{ +} +[CRepr] +public struct Fts5Context +{ +} +[CRepr] +public struct Fts5PhraseIter +{ +} +[CRepr] +public struct Fts5PhraseIter +{ + public c_uchar* a; + public c_uchar* b; +} +[CRepr] +public struct Fts5ExtensionApi +{ + public c_int iVersion; + public void*(*)(Fts5Context*) xUserData; + public int(*)(Fts5Context*) xColumnCount; + public int(*)(Fts5Context*,sqlite3_int64*) xRowCount; + public int(*)(Fts5Context*,int,sqlite3_int64*) xColumnTotalSize; + public int(*)(Fts5Context*,char*,int,void*,int(*)(void*,int,char*,int,int,int)) xTokenize; + public int(*)(Fts5Context*) xPhraseCount; + public int(*)(Fts5Context*,int) xPhraseSize; + public int(*)(Fts5Context*,int*) xInstCount; + public int(*)(Fts5Context*,int,int*,int*,int*) xInst; + public sqlite3_int64(*)(Fts5Context*) xRowid; + public int(*)(Fts5Context*,int,char**,int*) xColumnText; + public int(*)(Fts5Context*,int,int*) xColumnSize; + public int(*)(Fts5Context*,int,void*,int(*)(Fts5ExtensionApi*,Fts5Context*,void*)) xQueryPhrase; + public int(*)(Fts5Context*,void*,void(*)(void*)) xSetAuxdata; + public void*(*)(Fts5Context*,int) xGetAuxdata; + public int(*)(Fts5Context*,int,Fts5PhraseIter*,int*,int*) xPhraseFirst; + public void(*)(Fts5Context*,Fts5PhraseIter*,int*,int*) xPhraseNext; + public int(*)(Fts5Context*,int,Fts5PhraseIter*,int*) xPhraseFirstColumn; + public void(*)(Fts5Context*,Fts5PhraseIter*,int*) xPhraseNextColumn; + public int(*)(Fts5Context*,int,int,char**,int*) xQueryToken; + public int(*)(Fts5Context*,int,int,char**,int*) xInstToken; +} +[CRepr] +public struct Fts5Tokenizer +{ +} +[CRepr] +public struct fts5_tokenizer +{ +} +[CRepr] +public struct fts5_tokenizer +{ + public int(*)(void*,char**,int,Fts5Tokenizer**) xCreate; + public void(*)(Fts5Tokenizer*) xDelete; + public int(*)(Fts5Tokenizer*,void*,int,char*,int,int(*)(void*,int,char*,int,int,int)) xTokenize; +} +[CRepr] +public struct fts5_api +{ +} +[CRepr] +public struct fts5_api +{ + public c_int iVersion; + public int(*)(fts5_api*,char*,void*,fts5_tokenizer*,void(*)(void*)) xCreateTokenizer; + public int(*)(fts5_api*,char*,void**,fts5_tokenizer*) xFindTokenizer; + public int(*)(fts5_api*,char*,void*,fts5_extension_function,void(*)(void*)) xCreateFunction; +} diff --git a/src/Binding.bf b/src/Binding.bf index e57f48c..7c7b501 100644 --- a/src/Binding.bf +++ b/src/Binding.bf @@ -9,9 +9,20 @@ class Binding public static List Function = new .() ~ DeleteContainerAndItems!(_); public static List Enums = new .() ~ DeleteContainerAndItems!(_); public static List Structs = new .() ~ DeleteContainerAndItems!(_); - public static BindingOptions Options; + public static BindingOptions Options = new .() ~ delete _; + public static Dictionary CursorHandlers = new .() { + (.CXCursor_FunctionDecl, => HandleFunctionDecl), + (.CXCursor_StructDecl, => HandleStructDecl), + (.CXCursor_FieldDecl, => HandleFieldDecl), + (.CXCursor_EnumDecl, => HandleEnumDecl), + (.CXCursor_EnumConstantDecl, => HandleEnumConstDecl), + (.CXCursor_ParmDecl, => DoNothing), - public static void Bind(ref String[] pArgs, BindingOptions pOptions) + + + } ~ delete _; + + public static void Bind(ref String[] pArgs) { CXIndex index = clang_createIndex(0, 0); CXTranslationUnit* unit; @@ -28,33 +39,11 @@ class Binding clang_visitChildren( cursor, (cursor, parent, client_data) => { - if(clang_getCursorKind(cursor) == .CXCursor_FunctionDecl) - { - var name = clang_getCursorSpelling(cursor); - BindingFunction func = new .(name.text, clang_getCursorResultType(cursor)); - var count = clang_Cursor_getNumArguments(cursor); - for(int i < count) - { - var arg = clang_Cursor_getArgument(cursor, (.)i); - var argType = clang_getCursorType(arg); - var argName = clang_getCursorSpelling(arg); - func.Args.Add(new .(argName.text, argType)); - } - Function.Add(func); - } - else if(clang_getCursorKind(cursor) == .CXCursor_StructDecl) - { - var name = clang_getCursorSpelling(cursor); - BindingStruct strct = new .(name.text); - Structs.Add(strct); - - } - else if(clang_getCursorKind(cursor) == .CXCursor_FieldDecl) - { - if(Structs.Count > 0) - Structs[Structs.Count-1].Fields.Add(new .(clang_getCursorSpelling(cursor).text, clang_getCursorType(cursor))); - } + if(CursorHandlers.ContainsKey(clang_getCursorKind(cursor))) + CursorHandlers[clang_getCursorKind(cursor)](cursor); + else + Console.WriteLine(scope $"{clang_getCursorKind(cursor)} {clang_getCursorSpelling(cursor).text}"); return CXChildVisitResult.CXChildVisit_Recurse; @@ -65,13 +54,64 @@ class Binding clang_disposeIndex(index); } + public static void HandleFunctionDecl(CXCursor cursor) + { + var name = clang_getCursorSpelling(cursor); + BindingFunction func = new .(name.text, clang_getCursorResultType(cursor)); + + var count = clang_Cursor_getNumArguments(cursor); + for(int i < count) + { + var arg = clang_Cursor_getArgument(cursor, (.)i); + var argType = clang_getCursorType(arg); + var argName = clang_getCursorSpelling(arg); + func.Args.Add(new .(argName.text, argType)); + } + Function.Add(func); + } + + public static void HandleStructDecl(CXCursor cursor) + { + var name = clang_getCursorSpelling(cursor); + BindingStruct strct = new .(name.text); + Structs.Add(strct); + } + + public static void HandleFieldDecl(CXCursor cursor) + { + if(Structs.Count > 0) + Structs[Structs.Count-1].Fields.Add(new .(clang_getCursorSpelling(cursor).text, clang_getCursorType(cursor))); + } + + public static void HandleEnumDecl(CXCursor cursor) + { + var name = clang_getCursorSpelling(cursor); + BindingEnum enm = new .(name.text); + Enums.Add(enm); + } + + public static void HandleEnumConstDecl(CXCursor cursor) + { + if(Enums.Count > 0) + { + Enums[Enums.Count-1].Entries.Add(new .(clang_getCursorSpelling(cursor).text, (.)clang_getEnumConstantDeclValue(cursor))); + } + } + + private static void DoNothing(CXCursor cursor) {} + + ///Generate the actual file strings and try to write them according to the input parameter and the options public static Result Generate(StringView pOutputDir = "") { if(pOutputDir == "") return .Err; - String toWrite = new .(); + String toWrite = new .(scope $""" + namespace {Binding.Options.Namespace}; + static + \{\n + """); defer delete toWrite; for(var i in Function) @@ -80,6 +120,7 @@ class Binding i.ToBeef(toWrite); for(var i in Enums) i.ToBeef(toWrite); + toWrite.Append("\n}"); return System.IO.File.WriteAllText(pOutputDir, toWrite); } diff --git a/src/BindingEnum.bf b/src/BindingEnum.bf index 662eae7..0d981f2 100644 --- a/src/BindingEnum.bf +++ b/src/BindingEnum.bf @@ -14,23 +14,30 @@ class BindingEnum public this(StringView pName, c_int pValue) { Name = new .(pName); + if(Binding.Options.LowercaseEnums) + Name.ToLower(); Value = pValue; } } public String Name ~ delete _; - public List Entries = new .() ~ delete _; + public List Entries = new .() ~ DeleteContainerAndItems!(_); public this(StringView pName) { Name = new .(pName); + if(Name.StartsWith(Binding.Options.Namespace) && Name.Length > Binding.Options.Namespace.Length) + Name.Remove(0, Binding.Options.Namespace.Length); } ///Generate the beef representation of an enum public void ToBeef(String pBuffer) { + if(Binding.Options.RemoveEnumStart) + CalcCommonDenominator(); + pBuffer.Append(scope $""" - [AllowDublicates] + [AllowDuplicates] public enum {Name} \{\n """); @@ -38,4 +45,33 @@ class BindingEnum pBuffer.Append(scope $"{i.Name} = {i.Value},\n"); pBuffer.Append("}\n"); } + + + private void CalcCommonDenominator() + { + if(Entries.Count < 2) + return; //Otherwise we remove too much + + StringView? denominator = null; + for(var i in Entries) + { + if(denominator == null) + denominator = i.Name; + else + { + for(int j = 0; j < i.Name.Length && j < denominator.Value.Length; j++) + { + if(denominator.Value[j] == i.Name[j]) + continue; + else + { + denominator = i.Name.Substring(0, j); + } + } + } + } + + for(var i in Entries) + i.Name.Remove(0, denominator.Value.Length); + } } \ No newline at end of file diff --git a/src/BindingFunction.bf b/src/BindingFunction.bf index 7450035..48a031a 100644 --- a/src/BindingFunction.bf +++ b/src/BindingFunction.bf @@ -15,6 +15,9 @@ class BindingFunction { Name = new .(pName); Type = new .(pType); + + if(Name.StartsWith(Binding.Options.Namespace) && Name.Length > Binding.Options.Namespace.Length) + Name.Remove(0, Binding.Options.Namespace.Length); } } @@ -26,6 +29,9 @@ class BindingFunction { Name = new .(pName); Output = new .(pOutput); + + if(Name.StartsWith(Binding.Options.Namespace) && Name.Length > Binding.Options.Namespace.Length) + Name.Remove(0, Binding.Options.Namespace.Length); } public void ToBeef(String pBuffer) diff --git a/src/BindingOptions.bf b/src/BindingOptions.bf index bb85f1d..ec05a7b 100644 --- a/src/BindingOptions.bf +++ b/src/BindingOptions.bf @@ -1,5 +1,24 @@ namespace Caa; +using System; + class BindingOptions { + /* + This handles the C way of namespacing + If something has the namespace infront of it we remove it and incase of functions, generate the linkname property + */ + private String _Namespace = new .("") ~ delete _; + public String Namespace + { + get => _Namespace; + set + { + delete _Namespace; + _Namespace = new .(value); + } + }; + + public bool RemoveEnumStart = true; + public bool LowercaseEnums = false; } \ No newline at end of file diff --git a/src/BindingStruct.bf b/src/BindingStruct.bf index 76d5c4c..7eec436 100644 --- a/src/BindingStruct.bf +++ b/src/BindingStruct.bf @@ -15,6 +15,9 @@ class BindingStruct { Name = new .(pName); Type = new .(pType); + + if(Name.StartsWith(Binding.Options.Namespace) && Name.Length > Binding.Options.Namespace.Length) + Name.Remove(0, Binding.Options.Namespace.Length); } } @@ -25,6 +28,9 @@ class BindingStruct public this(StringView pName) { Name = new .(pName); + + if(Name.StartsWith(Binding.Options.Namespace) && Name.Length > Binding.Options.Namespace.Length) + Name.Remove(0, Binding.Options.Namespace.Length); } public void ToBeef(String pBuffer) diff --git a/src/BindingType.bf b/src/BindingType.bf index 9ceacea..96d0aeb 100644 --- a/src/BindingType.bf +++ b/src/BindingType.bf @@ -42,5 +42,10 @@ class BindingType TypeName.Replace(" ", ""); //TODO: bools exist and we should really be able to autoparse those + + if(TypeName.StartsWith(Binding.Options.Namespace) && TypeName.Length > Binding.Options.Namespace.Length) + TypeName.Remove(0, Binding.Options.Namespace.Length); + if(TypeName.Length > Binding.Options.Namespace.Length) + TypeName.Replace(Binding.Options.Namespace, ""); } } \ No newline at end of file diff --git a/src/Program.bf b/src/Program.bf index 40cce37..cdfb3f9 100644 --- a/src/Program.bf +++ b/src/Program.bf @@ -44,8 +44,7 @@ class Program arguments[i] = arg; } - BindingOptions options = scope .(); - Binding.Bind(ref arguments, options); + Binding.Bind(ref arguments); Console.WriteLine("Finished analyzing the file now please input your output directory/file"); String output = scope .();