クラス SQLiteCSLib.Inner.OSQLiteFunc

SQLite3 ユーザ定義関数. [詳細]

SQLiteCSLib.Inner.OSQLiteFuncのコラボレーション図
Collaboration graph
[凡例]

すべてのメンバ一覧

Public メソッド

 OSQLiteFunc (OSQLiteDBWrap db, ICallUserFunction iCallinterface)
 コンストラクタ
void Dispose ()
 破棄
ResultEnum CreateFunction (string funcname, int inArg)

Protected メソッド

unsafe delegate void CallFuncDelegate (IntPtr context, int argc, void **inparams)
 コールバック型(マネージ)
unsafe delegate void CallStepDelegate (IntPtr context, int argc, void **inparams)
unsafe delegate void CallFinalDelegate (IntPtr context)
unsafe virtual void CallFunc (IntPtr context, int argc, void **inparams)
 スカラー関数コールバック
unsafe virtual void CallStep (IntPtr context, int argc, void **inparams)
 集約関数ステップコールバック
unsafe virtual void CallFinal (IntPtr context)
 集約関数最終コールバック
unsafe object[] CreateParams (int argc, void **inparams)
 ユーザ定義関数パラメータ作成

Static Protected メソッド

static int osqlite3_createfunction (IntPtr instance, string funcname, int iarg, int eTextRep, CallFuncDelegate xFunc, CallStepDelegate xStep, CallFinalDelegate xFinal)
static int __sqlite3_value_type (IntPtr inparam)
static long __sqlite3_value_int64 (IntPtr inparam)
static double __sqlite3_value_double (IntPtr inparam)
static int __sqlite3_value_bytes (IntPtr inparam)
static IntPtr __sqlite3_value_blob (IntPtr inparam)
static string __sqlite3_value_text16 (IntPtr inparam)
static void __sqlite3_result_int (IntPtr inparam, int val)
static void __sqlite3_result_int64 (IntPtr inparam, long val)
static void __sqlite3_result_double (IntPtr inparam, double val)
static void __sqlite3_result_text16 (IntPtr inparam, string val, int ilen)
static void __sqlite3_result_blob (IntPtr inparam, IntPtr val, int ilen)
static void __sqlite3_result_error16 (IntPtr inparam, string val, int ilen)
static void __sqlite3_result_error_toobig (IntPtr inparam)
static void __sqlite3_result_error_nomem (IntPtr inparam)
static void __sqlite3_result_error_code (IntPtr inparam, int icode)

Protected 変数

OSQLiteDBWrap m_db
 データベース
ICallUserFunction m_callinterface
 コールバックインターフェース

説明

SQLite3 ユーザ定義関数.

OSQLiteFunc.cs11 行で定義されています。


コンストラクタとデストラクタ

SQLiteCSLib.Inner.OSQLiteFunc.OSQLiteFunc ( OSQLiteDBWrap  db,
ICallUserFunction  iCallinterface 
)

コンストラクタ

OSQLiteFunc.cs58 行で定義されています。

00059                 {
00060                         m_db = db;
00061                         m_callinterface = iCallinterface;
00062 
00063                         unsafe
00064                         {
00065                                 m_funcpoint = GCHandle.Alloc( new CallFuncDelegate( CallFunc ) );
00066                                 m_steppoint = GCHandle.Alloc( new CallStepDelegate( CallStep ) );
00067                                 m_finalpoint = GCHandle.Alloc( new CallFinalDelegate( CallFinal ) );
00068                         }
00069 
00070 #if MOBILEPC
00071                         m_disposeevent = CreateEvent( IntPtr.Zero , true, false, IntPtr.Zero );
00072 #endif
00073                 }


メソッド

unsafe virtual void SQLiteCSLib.Inner.OSQLiteFunc.CallFinal ( IntPtr  context  )  [protected, virtual]

集約関数最終コールバック

引数:
context コンテキスト

OSQLiteFunc.cs264 行で定義されています。

00265                 {
00266                         IAggregateCallUserFunction iAggregate = m_callinterface as IAggregateCallUserFunction;
00267                         if( iAggregate != null  )
00268                         {
00269                                 try
00270                                 {
00271                                         object returnval = iAggregate.CallFinal();
00272                                         if( returnval != null )
00273                                         {
00274                                                 SetResultValue( context, returnval );
00275                                         }
00276                                 }
00277                                 catch( CallUserException ex )
00278                                 {
00279                                         SetErrorResult( context, ex );
00280                                 }
00281                         }
00282                 }

unsafe virtual void SQLiteCSLib.Inner.OSQLiteFunc.CallFunc ( IntPtr  context,
int  argc,
void **  inparams 
) [protected, virtual]

スカラー関数コールバック

引数:
context コンテキスト
argc 引数数
inparams 引数リスト

OSQLiteFunc.cs218 行で定義されています。

00219                 {
00220                         IScalarCallUserFunction iScalar = m_callinterface as IScalarCallUserFunction;
00221                         if( iScalar != null  )
00222                         {
00223                                 try
00224                                 {
00225                                         object returnval = iScalar.CallFunc( CreateParams(argc,inparams) );
00226                                         if( returnval != null )
00227                                         {
00228                                                 SetResultValue( context, returnval );
00229                                         }
00230                                 }
00231                                 catch( CallUserException ex )
00232                                 {
00233                                         SetErrorResult( context, ex );
00234                                 }
00235                         }
00236                 }

unsafe delegate void SQLiteCSLib.Inner.OSQLiteFunc.CallFuncDelegate ( IntPtr  context,
int  argc,
void **  inparams 
) [protected]

コールバック型(マネージ)

unsafe virtual void SQLiteCSLib.Inner.OSQLiteFunc.CallStep ( IntPtr  context,
int  argc,
void **  inparams 
) [protected, virtual]

集約関数ステップコールバック

引数:
context コンテキスト
argc 引数数
inparams 引数リスト

OSQLiteFunc.cs244 行で定義されています。

00245                 {
00246                         IAggregateCallUserFunction iAggregate = m_callinterface as IAggregateCallUserFunction;
00247                         if( iAggregate != null  )
00248                         {
00249                                 try
00250                                 {
00251                                         iAggregate.CallStep( CreateParams(argc,inparams) );
00252                                 }
00253                                 catch( CallUserException ex )
00254                                 {
00255                                         SetErrorResult( context, ex );
00256                                 }
00257                         }
00258                 }

unsafe object [] SQLiteCSLib.Inner.OSQLiteFunc.CreateParams ( int  argc,
void **  inparams 
) [protected]

ユーザ定義関数パラメータ作成

引数:
argc 引数数
inparams 引数リスト
戻り値:
マネージ引数リスト

OSQLiteFunc.cs339 行で定義されています。

00340                 {
00341                         object[] argslist = new object[argc];
00342 
00343                         for( int iIdx=0; iIdx<argc; iIdx++ )
00344                         {
00345                                 void* val = inparams[ iIdx ];
00346 
00347                                 if( val != null )
00348                                 {
00349                                         IntPtr context = new IntPtr(val);
00350 
00351                                         DATATYPE iType = (DATATYPE)__sqlite3_value_type( context );
00352 
00353                                         switch( iType )
00354                                         {
00355                                         case DATATYPE.INTEGER:
00356                                                 argslist[ iIdx ] = __sqlite3_value_int64( context );
00357                                                 break;
00358                                         case DATATYPE.FLOAT:
00359                                                 argslist[ iIdx ] = __sqlite3_value_double( context ) ;
00360                                                 break;
00361                                         case DATATYPE.BLOB:
00362                                                 {
00363                                                         IntPtr pBin = __sqlite3_value_blob( context );
00364                                                         int valsize = __sqlite3_value_bytes( context );
00365 
00366                                                         byte[] managememory = new byte[valsize];
00367                                                         Marshal.Copy( pBin, managememory, 0, valsize );
00368 
00369                                                         argslist[ iIdx ] = managememory;
00370                                                 }
00371 
00372                                                 break;
00373                                         case DATATYPE.DBNULL:
00374                                                 argslist[ iIdx ] = null;
00375                                                 break;
00376                                         case DATATYPE.TEXT:
00377                                                 argslist[ iIdx ] = __sqlite3_value_text16( context );
00378                                                 break;
00379                                         }
00380                                 }
00381                         }
00382 
00383                         return argslist;
00384                 }

void SQLiteCSLib.Inner.OSQLiteFunc.Dispose (  ) 

破棄

OSQLiteFunc.cs86 行で定義されています。

00087                 {
00088 #if MOBILEPC
00089                         EventModify( m_disposeevent, 3 );
00090                         CloseHandle( m_disposeevent );
00091                         CloseHandle( m_clrevent );
00092 #endif
00093 
00094                         if( m_db != null )
00095                         {
00096                                 m_funcpoint.Free();
00097                                 m_steppoint.Free();
00098                                 m_finalpoint.Free();
00099                                 m_db = null;
00100                                 m_callinterface = null;
00101                         }
00102                 }


変数

コールバックインターフェース

OSQLiteFunc.cs28 行で定義されています。

データベース

OSQLiteFunc.cs23 行で定義されています。


このクラスの説明は次のファイルから生成されました:

SQLite3 Wrap ADO For .Net1.1 or Compact Frameworkに対してTue Jan 12 12:05:13 2010に生成されました。  doxygen 1.6.1