home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ User's Journal & Wi…eveloper's Journal Tools
/
C-C__Users_Journal_and_Windows_Developers_Journal_Tools_1997.iso
/
windbase
/
windbase.exe
/
WINDBASE
/
DETAILS.TXT
< prev
next >
Wrap
Text File
|
1996-10-16
|
19KB
|
507 lines
THE DETAILS
-----------
Version 3.0 of the Memory Structures Library (MemSL)
adds Many New and Powerful Features
----------------------------------------------------
If you have been looking for software that includes a
complete data structures library, memory tracing,
memory debugging, exception handling, definable memory
handlers and more, then Windbase has the package for
you. The MemSL has a complete set of data structures
which lets you choose the data structures that are best
for your project. The data structures included in
version 3.0 include:
Dynamic, Multi-Dimentional Arrays
Single and Double linked lists
Circular Single Linked Lists
Circular Double Linked Lists
Linked List Pointers
Cut, Copy, and Paste with Linked Lists
Stacks, Queues and Dequeues
Priority Queues
Sets, Tables, and Dictionaries
Hashing Tables with Separate Chaining
Hashing Tables with Dynamic Paging
Binary and Threaded Binary Trees
AVL and Threaded AVL Trees
The MemSL version 3.0 is designed to maximize
flexibility and ease of use. It incorporates more data
structures than ever before. And the data structures
in version 3.0 are even more manageable and flexible
using definable memory handlers, exception handling,
memory tracing and debugging.
All for only $79.99 The combination of a complete
data structures library, memory debugging tool, and the
low price make the MemSL version 3.0 a terrific value!
Data Structures in Detail
-------------------------
Dynamic, Multi-Dimensional Arrays
---------------------------------
The MemSL provides an easy-to-use multi-dimensional
dynamic array. MemSL arrays can be allocated at any
time during the program's runtime. The arrays can be
of any size and dimension, which can be determined at
runtime. With a simple call to open the array:
WBArrayOpen(NULL,"10,10,80");
the programmer can allocate an array of any size and
any number of dimensions.
Single, Double and Circular Linked Lists
----------------------------------------
The MemSL provides numerous routines for dealing with
single and double linked lists. Routines for adding,
deleting, sorting, searching and traversing make the
MemSL linked lists very flexible and powerful. Linked
lists can have single or double links. A linked list
can also become a circular linked list by calling:
WBDListCircular(list,WB_TRUE);
And, if needed, the circular list can become non-
circular simply by making the same call with WB_FALSE.
All the MemSL linked list routines are easy to use.
For example, the following functions are used for
adding, deleting and searching items in a list:
WBDListAdd(dlist,item,WB_FIRST);
WBDListDelete(dlist,WB_LAST);
item = WBDListSearch(dlist,item);
item = WBDListGet(dlist,WB_NEXT);
You can also choose to add, delete and get items from
the end, previous, current and next positions in the
list. And by adding items with the sorting option:
WBDListAdd(dlist, item, WB_SORT);
sorted linked lists can be used as well.
As an example of how powerful the MemSL linked list
routines are, Windbase has developed a full-featured
text editor complete with cut, copy and paste,
highlighted text blocking, full-featured macros, read
blocks, write blocks, buffered keyboard input (with the
MemSL queue routines acting as a ring buffer), and
more, all designed with the MemSL.
New Linked List Pointers
------------------------
Version 3.0 of the MemSL now has linked list pointers.
This powerful feature allows the programmer to use the
MemSL list routines while pointing to several different
positions in the list at the same time.
Opening a pointer to a linked list using the MemSL is
simple:
listptr = WBDListPointer(mainlist);
After obtaining the list pointer, any of the MemSL
linked list routines can be used on the pointer to the
list:
WBDlistAdd(listptr, "New Item", WB_FIRST);
In the above example, the "New Item" seems to be added
to the linked list pointer. In reality, it is being
added to the main list.
Cut, Copy and Paste with Linked Lists
-------------------------------------
Also new to version 3.0 of the MemSL is the ability to
Cut, Copy and Paste linked list sections from one list
to another. This gives the MemSL even greater
abilities with linked lists. Programmers can now cut,
copy and paste entire linked lists or parts of a list.
By opening one or two pointers to a linked list, the
programmer can call:
WBDListCut(newlist, ptr1, ptr2);
WBDListCopy(newlist, listptr1, listptr2);
WBDListAddList(list1, list2, WB_LAST, 1);
you may have noticed all the above examples are using
double linked lists. The same functions and
functionality are available with single linked lists as
well.
Stacks, Queues and Dequeues
---------------------------
The MemSL stacks, queues and dequeues allow the
programmer to use any data type such as char and int,
or user-defined data types such as structures and
unions. The stacks, queues and dequeues can be used
with arrays or linked lists. Using stacks, queues, and
dequeues with the array option allows the programmer to
use only the memory needed to store the items. It also
allows the programmer to define a limit to the number
of items that can be stored. By using stacks, queues
and dequeues with the linked list option there is no
limit to the number of items that can be stored.
Priority Queues
---------------
Version 3.0 of the MemSL now contains priority queues.
Priority queues allow a programmer to store items and
retrieve the items based on a priority value
definition. This priority value is an integer value
from 0 to MAXUINT.
Sets, Tables and Dictionaries
-----------------------------
The set, table and dictionary structures make use of
the MemSL threaded AVL tree. This gives maximum speed
for large or small sets, tables and dictionaries, while
providing all the functionality required for these data
structure types.
The MemSL sets, tables and dictionary ADTs all offer
basic functionality with add, delete, clear, is empty,
is member, number of items, execute, and more. The
table is the simplest of the three and provides only
the basic functionality. Sets have the basic
functionality along with union, intersection,
difference, subset, superset and is equal.
Dictionaries have the basic functionality and provide
the programmer with is predecessor, is successor, get
predecessor, get successor and get range. The get
range function allows a programmer to select and copy a
range of items from the dictionary into a new
dictionary.
Hash Tables with Separate Chaining
----------------------------------
The MemSL hashing table allows a programmer to define a
table and a hashing function (the MemSL also provides a
default hashing function). Hash tables are great for
searching, by providing a function that returns an
index in to the table, finding an item in a table is
very quick and in many cases only requires one search.
With separate chaining the MemSL hash table can add
items dynamically. Every time an item is added to the
same position in the table, the new item is simply
added to the beginning of a single linked list. So, a
hashing table in one of its simplest forms is simply an
array of linked lists.
Hash Tables with Dynamic Paging
-------------------------------
Version 3.0 of the MemSL now has a dynamic paging hash
table. This powerful hash table provides all the
functionality expected from a hashing table and also
provides the ability for the table to grow as it needs
to. Every time the hash table reaches a programmer-
defined average-items-per-bucket maximum, the hash
table will automatically add a new page. This allows
the MemSL hash table to provide ideal searching by
keeping the average number of items per bucket spread
across the hash table.
Binary and Threaded Binary Tree