* NEW: Deque: Add a Copy() method to return a deep copy of a Deque. Stack
and Queue "inherit" this method.
git-svn-id: svn://localhost/gambas/trunk@6407 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* NEW: Heap is a new class that implements a Min- or MaxHeap, depending upon
a mode parameter to its constructor. It supports some advanced ways to
manipulate the contained data -- beyond the first entry.
git-svn-id: svn://localhost/gambas/trunk@6402 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* BUG: List: Fix two false positive compiler warnings on some systems.
* BUG: AvlTree: Don't forward-declare a typedef. It bothers some compilers.
* BUG: Also update Key from AvlTree_get().
* BUG: Invalidate the enumerators in AvlTree.Clear()
git-svn-id: svn://localhost/gambas/trunk@5865 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* NEW: Mark component as stable
[GB.OPENSSL]
* NEW: Mark component as stable
git-svn-id: svn://localhost/gambas/trunk@5825 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* NEW: Update copyright years.
* NEW: Have a stripped-down version of gb_common_string_temp.h to provide
STRING_compare() without producing compilation problems.
* NEW: AvlTree is a new Collection-like class implementing a balanced
binary search tree. It does _not_ utilise hashing in order to maintain
an order of the literal key strings given by the user (For Each thus
traverses from smallest to greatest key).
* NEW: Carry in a stripped-down version of Bob Jenkins' lookup3 hash
algorithm from the Public Domain. It was a last-minute decision to not use
it in AvlTree to maintain the literal key order.
git-svn-id: svn://localhost/gambas/trunk@5812 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* BUG: Fix possible bugs when updating an invalid Current.
* BUG: Really erase old elements instead of just marking them as Null to
prevent (potential) information leaks.
* OPT: Current and the enumerators (internally) carry list global indices
(LGI) which can be used as anchor points together with List.Count to speed
up traversals (always taking the shortest way through the list).
* OPT: Remove workaround code related to an enumerator bug fixed in #5749.
* NEW: Expose List.Current as a virtual object representing the current list
element which has Append() and Prepend() methods to manipulate the list
not only around its head. This breaks backwards compatibility.
* NEW: List.Value is what List.Current has meant formerly.
* NEW: Add List.Current.Index and List.Index which are an absolute index of
the current element into the list. These are guaranteed to be in bounds of
[-List.Count; List.Count - 1]. Note that each non-negative index has an
associated negative equivalent and vice versa. They work like the indices
given to List._get().
* NEW: Add a List.AutoNormalize property which instructs the list to
automatically make indices (like resulting from a calculation) fit into
the List bounds preserving the sign of the given index. This effectively
prevents any "Out of bounds" errors.
* NEW: Add List.MoveTo() to point Current to an index.
* NEW: List.Current.Is{First,Last,Valid} can be used to determine if Current
is the first or last element of the list or if it is valid, respectively.
git-svn-id: svn://localhost/gambas/trunk@5778 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* NEW: GB.ReturnSingle() is a new API that allows to return a Single from a
method or property implementation routine.
[GB.NET.POP3]
* NEW: Pop3Client has a new Remove() method to delete a message from its
index. Pop3Client.Remove(n) is just a synonymous for
Pop3Client[n].Delete.
[GB.OPENAL]
* NEW: New component for the OpenAL 3D audio library. Work in progress...
[GB.OPENGL]
* BUG: Fix a possible crash in GL.GenTextures(). I guess that bug will have
to be fixed in other equivalent routines.
git-svn-id: svn://localhost/gambas/trunk@5753 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* OPT: Shrink internal data structures and adjust algorithms likely
improving performance (noticably for the 'random' case of my stress test -
the 'best' case is almost on a par with Variant[] now).
* BUG: Fix difficult-to-spot List.Take() bugs due to difficulties with the
former internal data structures. The class now survives all my test cases
(without misbehaviour under valgrind).
* BUG: List.Take() never raises "Out of bounds" anymore if the list is empty
because that's an inappropriate error for a *circular* list. It raises an
error if an attempt is made to Take() an invalid Current which includes
the case that the List is empty.
git-svn-id: svn://localhost/gambas/trunk@5731 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* NEW: Finish the List class
* NEW: Add List.Clear(). How could I go without since now?
* OPT: FYI, Current and enumerators remain relative to the _beginning_ of
the list if they're removed in order to can access all elements in an
enumeration.
* NEW: Return NULL for an invalid List.Current instead of raising an error.
However, the attempt to remove an invalid Current still results in that
error.
git-svn-id: svn://localhost/gambas/trunk@5403 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* BUG: Fix division by zero when read/write pointer is set on 0-length
Circular (useless but legal).
git-svn-id: svn://localhost/gambas/trunk@5375 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* BUG: Right mouse button can select controls again in form editor.
[GB.GTK]
* NEW: DragLeave is a new event raised by any control when the mouse leave
a control during a DnD operation, or when the DnD operation terminates.
* NEW: DragMove and DragLeave events take the proxy into account.
[GB.GUI.BASE]
* NEW: ScrollArea, GridView, TreeView... now automatically scroll during a
DnD operation.
* BUG: Remove the overriden MouseDown event from the GridView class.
* BUG: A DnD operation does not eat the next mouse click anymore in
GridView, TreeView... controls.
[GB.QT4]
* NEW: DragLeave is a new event raised by any control when the mouse leave
a control during a DnD operation, or when the DnD operation terminates.
* NEW: DragMove and DragLeave events take the proxy into account.
git-svn-id: svn://localhost/gambas/trunk@5303 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* OPT: Great overhaul of List algorithms. Beware: Still buggy.
* OPT: Make list chunks carry multiple Variants to improve cache locality.
* OPT: Don't traverse List forwards/backwards when the absolute value of
index is past the half of Count.
* NEW: Introduce List.Backwards - a virtual object to enumerate backwards
* NEW: Don't use List.Current as enumeration pointer.
* NEW: Begin enumeration at the first/last node.
* NEW: Traverse backwards when given negative index to _get.
* NEW: Make Current invalid by default.
* NEW: Assign first/last element when MoveNext()/MovePrev() is issued on an
invalid Current.
* NEW: Use List.Current as pointer for the Find*() methods, too.
* NEW: Assign first/last element when FindNext()/FindPrev() is issued on an
invalid Current.
* NEW: Don't return an index from Find*() methods because it is not the way
linked list are dealt with.
* NEW: Make insertion and removal of elements safe in enumerations.
* NEW: When Current (or enumerator) is removed, the pointer remains relative
to the beginning of the List but it never wraps around the end.
* BUG: Correctly *cycle* with {Move,Find}{Next,Prev}()
git-svn-id: svn://localhost/gambas/trunk@5302 867c0c6c-44f3-4631-809d-bfa615b0a4ec
* NEW: Rename gb.adt to gb.data
* NEW: Mark gb.data as "Unfinished"
[GB.DATA]
* OPT: Block all changes from my working copy until they are mature. The
interface is considered to be stable (although some details in behaviour
will change); this justifies the "unfinished" state.
git-svn-id: svn://localhost/gambas/trunk@5147 867c0c6c-44f3-4631-809d-bfa615b0a4ec