Methods
Constants
STATIC | = | ::DL::PtrData.new(0) |
TRANSIENT | = | ::DL::PtrData.new(-1) |
Public Class methods
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 255 255: def self.api_delegate( name ) 256: define_method( name ) { |*args| API.send( "sqlite3_#{name}", *args ) } 257: end
Public Instance methods
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 218 218: def aggregate_context( context ) 219: ptr = API.sqlite3_aggregate_context( context, 4 ) 220: ptr.free = nil 221: obj = ( ptr ? ptr.to_object : nil ) 222: if obj.nil? 223: obj = Hash.new 224: ptr.set_object obj 225: end 226: obj 227: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 229 229: def bind_blob( stmt, index, value ) 230: s = value.to_s 231: API.sqlite3_bind_blob( stmt, index, s, s.length, TRANSIENT ) 232: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 234 234: def bind_text( stmt, index, value, utf16=false ) 235: s = value.to_s 236: method = ( utf16 ? :sqlite3_bind_text16 : :sqlite3_bind_text ) 237: API.send( method, stmt, index, s, s.length, TRANSIENT ) 238: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 141 141: def busy_handler( db, data=nil, &block ) 142: @busy_handler = block 143: 144: unless @busy_handler_callback 145: @busy_handler_callback = ::DL.callback( "IPI" ) do |cookie, timeout| 146: @busy_handler.call( cookie, timeout ) || 0 147: end 148: end 149: 150: API.sqlite3_busy_handler( db, block&&@busy_handler_callback, data ) 151: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 123 123: def column_blob( stmt, column ) 124: blob = API.sqlite3_column_blob( stmt, column ) 125: blob.free = nil 126: blob.to_s( API.sqlite3_column_bytes( stmt, column ) ) 127: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 250 250: def column_decltype( stmt, column ) 251: result = API.sqlite3_column_decltype( stmt, column ) 252: result ? result.to_s : nil 253: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 245 245: def column_name( stmt, column ) 246: result = API.sqlite3_column_name( stmt, column ) 247: result ? result.to_s : nil 248: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 240 240: def column_text( stmt, column ) 241: result = API.sqlite3_column_text( stmt, column ) 242: result ? result.to_s : nil 243: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 307 307: def commit_hook( db, data=nil, &block ) 308: @commit_hook_handler = block 309: 310: unless @commit_hook_handler_callback 311: @commit_hook_handler_callback = ::DL.callback( "IP" ) do |cookie| 312: @commit_hook_handler.call( cookie ) 313: end 314: end 315: 316: API.sqlite3_commit_hook( db, block&&@commit_hook_handler_callback, 317: data ) 318: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 95 95: def complete?( sql, utf16=false ) 96: API.send( utf16 ? :sqlite3_complete16 : :sqlite3_complete, sql+"\0" ) 97: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 180 180: def create_function( db, name, args, text, cookie, 181: func, step, final ) 182: # begin 183: if @func_handler_callback.nil? && func 184: @func_handler_callback = ::DL.callback( "0PIP" ) do |context,nargs,args| 185: args = args.to_s(nargs*4).unpack("L*").map {|i| ::DL::PtrData.new(i)} 186: data = API.sqlite3_user_data( context ).to_object 187: data[:func].call( context, *args ) 188: end 189: end 190: 191: if @step_handler_callback.nil? && step 192: @step_handler_callback = ::DL.callback( "0PIP" ) do |context,nargs,args| 193: args = args.to_s(nargs*4).unpack("L*").map {|i| ::DL::PtrData.new(i)} 194: data = API.sqlite3_user_data( context ).to_object 195: data[:step].call( context, *args ) 196: end 197: end 198: 199: if @final_handler_callback.nil? && final 200: @final_handler_callback = ::DL.callback( "0P" ) do |context| 201: data = API.sqlite3_user_data( context ).to_object 202: data[:final].call( context ) 203: end 204: end 205: 206: data = { :cookie => cookie, 207: :name => name, 208: :func => func, 209: :step => step, 210: :final => final } 211: 212: API.sqlite3_create_function( db, name, args, text, data, 213: ( func ? @func_handler_callback : nil ), 214: ( step ? @step_handler_callback : nil ), 215: ( final ? @final_handler_callback : nil ) ) 216: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 72 72: def errmsg( db, utf16=false ) 73: if utf16 74: msg = API.sqlite3_errmsg16( db ) 75: msg.free = nil 76: msg.to_s(utf16_length(msg)) 77: else 78: API.sqlite3_errmsg( db ) 79: end 80: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 65 65: def open( filename, utf16=false ) 66: handle = ::DL::PtrData.new(0) 67: result = API.send( ( utf16 ? :sqlite3_open16 : :sqlite3_open ), 68: filename+"\0", handle.ref ) 69: [ result, handle ] 70: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 82 82: def prepare( db, sql, utf16=false ) 83: handle = ::DL::PtrData.new(0) 84: remainder = ::DL::PtrData.new(0) 85: 86: result = API.send( ( utf16 ? :sqlite3_prepare16 : :sqlite3_prepare ), 87: db, sql+"\0", sql.length, handle.ref, remainder.ref ) 88: 89: args = utf16 ? [ utf16_length(remainder) ] : [] 90: remainder = remainder.to_s( *args ) 91: 92: [ result, handle, remainder ] 93: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 294 294: def progress_handler( db, n, data=nil, &block ) 295: @progress_handler = block 296: 297: unless @progress_handler_callback 298: @progress_handler_callback = ::DL.callback( "IP" ) do |cookie| 299: @progress_handler.call( cookie ) 300: end 301: end 302: 303: API.sqlite3_progress_handler( db, n, block&&@progress_handler_callback, 304: data ) 305: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 129 129: def result_text( func, text, utf16=false ) 130: method = case utf16 131: when false, nil then :sqlite3_result_text 132: when :le then :sqlite3_result_text16le 133: when :be then :sqlite3_result_text16be 134: else :sqlite3_result_text16 135: end 136: 137: s = text.to_s 138: API.send( method, func, s, s.length, TRANSIENT ) 139: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 153 153: def set_authorizer( db, data=nil, &block ) 154: @authorizer_handler = block 155: 156: unless @authorizer_handler_callback 157: @authorizer_handler_callback = ::DL.callback( "IPIPPPP" 158: ) do |cookie,mode,a,b,c,d| 159: @authorizer_handler.call( cookie, mode, 160: a&&a.to_s, b&&b.to_s, c&&c.to_s, d&&d.to_s ) || 0 161: end 162: end 163: 164: API.sqlite3_set_authorizer( db, block&&@authorizer_handler_callback, 165: data ) 166: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 168 168: def trace( db, data=nil, &block ) 169: @trace_handler = block 170: 171: unless @trace_handler_callback 172: @trace_handler_callback = ::DL.callback( "IPS" ) do |cookie,sql| 173: @trace_handler.call( cookie ? cookie.to_object : nil, sql ) || 0 174: end 175: end 176: 177: API.sqlite3_trace( db, block&&@trace_handler_callback, data ) 178: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 99 99: def value_blob( value ) 100: blob = API.sqlite3_value_blob( value ) 101: blob.free = nil 102: blob.to_s( API.sqlite3_value_bytes( value ) ) 103: end
[ show source ]
# File lib/sqlite3/driver/dl/driver.rb, line 105 105: def value_text( value, utf16=false ) 106: method = case utf16 107: when nil, false then :sqlite3_value_text 108: when :le then :sqlite3_value_text16le 109: when :be then :sqlite3_value_text16be 110: else :sqlite3_value_text16 111: end 112: 113: result = API.send( method, value ) 114: if utf16 115: result.free = nil 116: size = API.sqlite3_value_bytes( value ) 117: result = result.to_s( size ) 118: end 119: 120: result 121: end