Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Rename the SQLiteVirtualTableCursorEnumerable class to SQLiteVirtualTableCursorEnumerator. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
4e38ea39a310f642bc26b42d4ee8f766 |
User & Date: | mistachkin 2013-06-26 03:18:01 |
Context
2013-06-26
| ||
04:23 | Add generic variants of the SQLiteModuleEnumerable and SQLiteVirtualTableCursorEnumerator classes. check-in: 7da399e402 user: mistachkin tags: trunk | |
03:18 | Rename the SQLiteVirtualTableCursorEnumerable class to SQLiteVirtualTableCursorEnumerator. check-in: 4e38ea39a3 user: mistachkin tags: trunk | |
02:20 | Modify the result code handling performed by the SQLiteModuleNoop class in order to make it more flexible for use with derived classes. Rename the ReturnCode property of the SQLiteException class to ResultCode. check-in: d2d80220a8 user: mistachkin tags: trunk | |
Changes
Changes to System.Data.SQLite/SQLiteModuleEnumerable.cs.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 .. 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ... 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 ... 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 ... 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 ... 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 ... 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 ... 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 ... 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 ... 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 ... 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 ... 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 |
********************************************************/ using System.Collections; using System.Globalization; namespace System.Data.SQLite { #region SQLiteVirtualTableCursorEnumerable Class /// <summary> /// This class represents a virtual table cursor to be used with the /// <see cref="SQLiteModuleEnumerable" /> class. It is not sealed and may /// be used as the base class for any user-defined virtual table cursor /// class that wraps an <see cref="IEnumerator" /> object instance. /// </summary> public class SQLiteVirtualTableCursorEnumerable : SQLiteVirtualTableCursor /* NOT SEALED */ { #region Private Data /// <summary> /// The <see cref="IEnumerator" /> instance provided when this cursor /// was created. /// </summary> ................................................................................ /// The <see cref="SQLiteVirtualTable" /> object instance associated /// with this object instance. /// </param> /// <param name="enumerator"> /// The <see cref="IEnumerator" /> instance to expose as a virtual /// table cursor. /// </param> public SQLiteVirtualTableCursorEnumerable( SQLiteVirtualTable table, IEnumerator enumerator ) : base(table) { this.enumerator = enumerator; this.endOfEnumerator = true; ................................................................................ /// </summary> private void CheckDisposed() /* throw */ { #if THROW_ON_DISPOSED if (disposed) { throw new ObjectDisposedException( typeof(SQLiteVirtualTableCursorEnumerable).Name); } #endif } /////////////////////////////////////////////////////////////////////// /// <summary> ................................................................................ #endregion /////////////////////////////////////////////////////////////////////////// #region SQLiteModuleEnumerable Class /// <summary> /// This class implements a virtual table module that exposes an /// IEnumerable instance as a read-only virtual table. It is not sealed /// and may be used as the base class for any user-defined virtual table /// class that wraps an <see cref="IEnumerable" /> object instance. /// </summary> public class SQLiteModuleEnumerable : SQLiteModuleNoop /* NOT SEALED */ { #region Private Constants /// <summary> /// The CREATE TABLE statement used to declare the schema for the /// virtual table. ................................................................................ /// <returns> /// The value of <see cref="SQLiteErrorCode.Error"/>. /// </returns> protected virtual SQLiteErrorCode CursorTypeMismatchError( SQLiteVirtualTableCursor cursor ) { SetCursorError(cursor, "not an \"enumerable\" cursor"); return SQLiteErrorCode.Error; } /////////////////////////////////////////////////////////////////////// /// <summary> /// Sets the table error message to one that indicates the virtual ................................................................................ public override SQLiteErrorCode Open( SQLiteVirtualTable table, ref SQLiteVirtualTableCursor cursor ) { CheckDisposed(); cursor = new SQLiteVirtualTableCursorEnumerable( table, enumerable.GetEnumerator()); return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// ................................................................................ /// </returns> public override SQLiteErrorCode Close( SQLiteVirtualTableCursor cursor ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerable enumerableCursor = cursor as SQLiteVirtualTableCursorEnumerable; if (enumerableCursor == null) return CursorTypeMismatchError(cursor); enumerableCursor.Close(); return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// /// <summary> /// See the <see cref="ISQLiteManagedModule.Filter" /> method. ................................................................................ int indexNumber, string indexString, SQLiteValue[] values ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerable enumerableCursor = cursor as SQLiteVirtualTableCursorEnumerable; if (enumerableCursor == null) return CursorTypeMismatchError(cursor); enumerableCursor.Filter(indexNumber, indexString, values); enumerableCursor.Reset(); /* NO RESULT */ enumerableCursor.MoveNext(); /* IGNORED */ return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// /// <summary> ................................................................................ /// </returns> public override SQLiteErrorCode Next( SQLiteVirtualTableCursor cursor ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerable enumerableCursor = cursor as SQLiteVirtualTableCursorEnumerable; if (enumerableCursor == null) return CursorTypeMismatchError(cursor); if (enumerableCursor.EndOfEnumerator) return CursorEndOfEnumeratorError(cursor); enumerableCursor.MoveNext(); /* IGNORED */ return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// /// <summary> /// See the <see cref="ISQLiteManagedModule.Eof" /> method. ................................................................................ /// </returns> public override bool Eof( SQLiteVirtualTableCursor cursor ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerable enumerableCursor = cursor as SQLiteVirtualTableCursorEnumerable; if (enumerableCursor == null) return ResultCodeToEofResult(CursorTypeMismatchError(cursor)); return enumerableCursor.EndOfEnumerator; } /////////////////////////////////////////////////////////////////////// /// <summary> /// See the <see cref="ISQLiteManagedModule.Column" /> method. /// </summary> ................................................................................ SQLiteVirtualTableCursor cursor, SQLiteContext context, int index ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerable enumerableCursor = cursor as SQLiteVirtualTableCursorEnumerable; if (enumerableCursor == null) return CursorTypeMismatchError(cursor); if (enumerableCursor.EndOfEnumerator) return CursorEndOfEnumeratorError(cursor); object current = enumerableCursor.Current; if (current != null) context.SetString(GetStringFromObject(current)); else context.SetNull(); return SQLiteErrorCode.Ok; ................................................................................ public override SQLiteErrorCode RowId( SQLiteVirtualTableCursor cursor, ref long rowId ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerable enumerableCursor = cursor as SQLiteVirtualTableCursorEnumerable; if (enumerableCursor == null) return CursorTypeMismatchError(cursor); if (enumerableCursor.EndOfEnumerator) return CursorEndOfEnumeratorError(cursor); object current = enumerableCursor.Current; rowId = GetRowIdFromObject(current); return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// |
| | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 .. 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ... 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 ... 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 ... 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 ... 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 ... 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 ... 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 ... 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 ... 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 ... 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 ... 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 |
********************************************************/ using System.Collections; using System.Globalization; namespace System.Data.SQLite { #region SQLiteVirtualTableCursorEnumerator Class /// <summary> /// This class represents a virtual table cursor to be used with the /// <see cref="SQLiteModuleEnumerable" /> class. It is not sealed and may /// be used as the base class for any user-defined virtual table cursor /// class that wraps an <see cref="IEnumerator" /> object instance. /// </summary> public class SQLiteVirtualTableCursorEnumerator : SQLiteVirtualTableCursor /* NOT SEALED */ { #region Private Data /// <summary> /// The <see cref="IEnumerator" /> instance provided when this cursor /// was created. /// </summary> ................................................................................ /// The <see cref="SQLiteVirtualTable" /> object instance associated /// with this object instance. /// </param> /// <param name="enumerator"> /// The <see cref="IEnumerator" /> instance to expose as a virtual /// table cursor. /// </param> public SQLiteVirtualTableCursorEnumerator( SQLiteVirtualTable table, IEnumerator enumerator ) : base(table) { this.enumerator = enumerator; this.endOfEnumerator = true; ................................................................................ /// </summary> private void CheckDisposed() /* throw */ { #if THROW_ON_DISPOSED if (disposed) { throw new ObjectDisposedException( typeof(SQLiteVirtualTableCursorEnumerator).Name); } #endif } /////////////////////////////////////////////////////////////////////// /// <summary> ................................................................................ #endregion /////////////////////////////////////////////////////////////////////////// #region SQLiteModuleEnumerable Class /// <summary> /// This class implements a virtual table module that exposes an /// <see cref="IEnumerable" /> object instance as a read-only virtual /// table. It is not sealed and may be used as the base class for any /// user-defined virtual table class that wraps an /// <see cref="IEnumerable" /> object instance. /// </summary> public class SQLiteModuleEnumerable : SQLiteModuleNoop /* NOT SEALED */ { #region Private Constants /// <summary> /// The CREATE TABLE statement used to declare the schema for the /// virtual table. ................................................................................ /// <returns> /// The value of <see cref="SQLiteErrorCode.Error"/>. /// </returns> protected virtual SQLiteErrorCode CursorTypeMismatchError( SQLiteVirtualTableCursor cursor ) { SetCursorError(cursor, "not an \"enumerator\" cursor"); return SQLiteErrorCode.Error; } /////////////////////////////////////////////////////////////////////// /// <summary> /// Sets the table error message to one that indicates the virtual ................................................................................ public override SQLiteErrorCode Open( SQLiteVirtualTable table, ref SQLiteVirtualTableCursor cursor ) { CheckDisposed(); cursor = new SQLiteVirtualTableCursorEnumerator( table, enumerable.GetEnumerator()); return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// ................................................................................ /// </returns> public override SQLiteErrorCode Close( SQLiteVirtualTableCursor cursor ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerator enumeratorCursor = cursor as SQLiteVirtualTableCursorEnumerator; if (enumeratorCursor == null) return CursorTypeMismatchError(cursor); enumeratorCursor.Close(); return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// /// <summary> /// See the <see cref="ISQLiteManagedModule.Filter" /> method. ................................................................................ int indexNumber, string indexString, SQLiteValue[] values ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerator enumeratorCursor = cursor as SQLiteVirtualTableCursorEnumerator; if (enumeratorCursor == null) return CursorTypeMismatchError(cursor); enumeratorCursor.Filter(indexNumber, indexString, values); enumeratorCursor.Reset(); /* NO RESULT */ enumeratorCursor.MoveNext(); /* IGNORED */ return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// /// <summary> ................................................................................ /// </returns> public override SQLiteErrorCode Next( SQLiteVirtualTableCursor cursor ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerator enumeratorCursor = cursor as SQLiteVirtualTableCursorEnumerator; if (enumeratorCursor == null) return CursorTypeMismatchError(cursor); if (enumeratorCursor.EndOfEnumerator) return CursorEndOfEnumeratorError(cursor); enumeratorCursor.MoveNext(); /* IGNORED */ return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// /// <summary> /// See the <see cref="ISQLiteManagedModule.Eof" /> method. ................................................................................ /// </returns> public override bool Eof( SQLiteVirtualTableCursor cursor ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerator enumeratorCursor = cursor as SQLiteVirtualTableCursorEnumerator; if (enumeratorCursor == null) return ResultCodeToEofResult(CursorTypeMismatchError(cursor)); return enumeratorCursor.EndOfEnumerator; } /////////////////////////////////////////////////////////////////////// /// <summary> /// See the <see cref="ISQLiteManagedModule.Column" /> method. /// </summary> ................................................................................ SQLiteVirtualTableCursor cursor, SQLiteContext context, int index ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerator enumeratorCursor = cursor as SQLiteVirtualTableCursorEnumerator; if (enumeratorCursor == null) return CursorTypeMismatchError(cursor); if (enumeratorCursor.EndOfEnumerator) return CursorEndOfEnumeratorError(cursor); object current = enumeratorCursor.Current; if (current != null) context.SetString(GetStringFromObject(current)); else context.SetNull(); return SQLiteErrorCode.Ok; ................................................................................ public override SQLiteErrorCode RowId( SQLiteVirtualTableCursor cursor, ref long rowId ) { CheckDisposed(); SQLiteVirtualTableCursorEnumerator enumeratorCursor = cursor as SQLiteVirtualTableCursorEnumerator; if (enumeratorCursor == null) return CursorTypeMismatchError(cursor); if (enumeratorCursor.EndOfEnumerator) return CursorEndOfEnumeratorError(cursor); object current = enumeratorCursor.Current; rowId = GetRowIdFromObject(current); return SQLiteErrorCode.Ok; } /////////////////////////////////////////////////////////////////////// |