Browsing projects by Tag(s)

Select a tag to browse associated projects and drill deeper into the tag cloud.

Showing page 1 of 1

Modula-2 collections library. The library provides an API for collection ADTs, in particular: stacks, queues, double ended queues, priority queues, balanced binary search trees, patricia tries, dynamic arrays and hash tables to store arbitrary data. The hash table ADT allows data to be stored and ... [More] retrieved by reference or by copy, with built-in reference counting. All other ADTs allow data to be stored and retrieved by reference only. The library follows PIM4, it has no dependencies and it is platform independent. The library is tested with GM2 using option 'fpim4'. Under development. BSD style license. [Less]

5.0
 
  0 reviews  |  4 users  |  1,743 lines of code  |  0 current contributors  |  Analyzed 9 days ago
 
 

C library for double ended queue storage. The library provides an API to create and use dynamic double ended queues for arbitrary data. Data may be stored and retrieved by reference only. An extension for storage and retrieval by copy is planned. Requires C99, no dependencies, platform independent. BSD style license.

5.0
 
  0 reviews  |  1 user  |  240 lines of code  |  0 current contributors  |  Analyzed 5 days ago
 
 

C library for FIFO (queue) storage. The library provides an API to create and use queues for arbitrary data. Data may be stored and retrieved by reference only. An extension for storage and retrieval by copy is planned. Requires C99, no dependencies, platform independent. BSD style license.

5.0
 
  0 reviews  |  1 user  |  152 lines of code  |  0 current contributors  |  Analyzed 4 days ago
 
 

C library for dynamic priority queues. The library provides an API to create and use dynamic priority queues for arbitrary data. Data may be stored and retrieved by reference only. All operations are O(log n). Requires C99, no dependencies, platform independent. BSD style license.

5.0
 
  0 reviews  |  1 user  |  272 lines of code  |  0 current contributors  |  Analyzed 9 days ago
 
 

IntroductionI began writing what would become this library back in 2004. At the time, I was developing a semi-structured database called Spinneret, which was to be a sensical merging of the relational database concepts that I had utilized throughout my life and the native XML concept which I ... [More] helped to pioneer. It would have featured dynamic storage and flexible data representation (JSON, XML, YAML, etc). Unfortunately, Spinneret was never to be, so this code sat around for quite some time before I decided that it should be released to the public. So What Is It?Well, it's a library that does 'stuff' for you. When I stay 'stuff,' I mean that it performs a variety of tasks including collection management thread and signal abstraction, and specialized memory management. Presently, Essential-C includes the following C routines: Collection Management Lists - I've taken a slightly different approach in my List management code. While many toolkit developers choose to implement List collections using singly or doubly linked lists, I've instead decided to implement something I call a Clustered List, where a doubly-linked set of nodes are managed, each node pointing to a cluster of many items. This improves random seek time because less walking has to occur, and it also means less calls to memory allocation routines when a lot of activity is occurring. There may be a formal name for this method, but I'm too lazy to look it up. Tables - Again, while some toolkit developers would opt to implement a very basic hash table where the entire set grows by a particular ratio every time its storage threshold is reached, I've decided to implement my Tables as in-memory Linear Hash tables. The benefit here is that the table will grow linearly rather than geometrically, thus avoiding the kind of memory consumption for which hash-tables have historically been notorious. Stacks and Queues - These are simple Stack and Queue set implementations based on the Clustered List routines. Memory Management Memory Chains - Because it was originally written to serve as the foundation for a database server, the memory management routines were written with transactions in mind, and in particular the ability for a developer to create a chain of memory that, upon completion of a particular transaction, can be removed in its entirety with a single API call. Reference Counting - The memory management routines also support Objective-C style retain and release reference counting, if one so desires to utilize it. Signal Abstraction - A simple way to register potentially many signal handlers for any particular signal. Thread Abstraction - Wraps the host operating system's threading APIs so that a developer can perform simple threading and synchronization without having to be familiar with any particular native API. And Much, MUCH More! Not really much more than that, but it's a starting point for bigger and better things. So long as those things remain focused and simple. [Less]

0
 
  0 reviews  |  0 users  |  1,572 lines of code  |  0 current contributors  |  Analyzed 4 days ago
 
 
 
 

Creative Commons License Copyright © 2013 Black Duck Software, Inc. and its contributors, Some Rights Reserved. Unless otherwise marked, this work is licensed under a Creative Commons Attribution 3.0 Unported License . Ohloh ® and the Ohloh logo are trademarks of Black Duck Software, Inc. in the United States and/or other jurisdictions. All other trademarks are the property of their respective holders.