Download Shareware and Freeware Software for Windows, Linux, Macintosh, PDA

line Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Serving Software Downloads in 976 Categories, Downloaded 29.872.714 Times


  Date Added: April 21, 2010  |  Visits: 376


Report Broken Link
Printer Friendly Version

Product Homepage
Download (72 downloads)

libwayne is a library of reasonably abstract datatypes and algorithms written in C. The algorithms in libwayne are by no means original. Many of them are taken verbatim from textbooks on data structures and algorithms, and I simply translated them into C. They include efficient and correct routines for priority queues, event-driven simulations, queues, stacks, binary trees, sets of integers, graphs (the node-edge kind), some combinatorics routines, ODE integration routines, a simple statistics package, and a matrix-vector library. Many of the routines (heap, stack, queue, bintree) can work with arbitrary objects, not just integers. Comparisons are done with pointers to comparison functions, similar to ANSI Cs standard qsort. This library is not meant to be complete; I write the routines as I need them, but only high-quality code goes into libwayne. One thing that many people ask me is ``why didnt you use C++? Without going into a long tirade, suffice it to say that, although I am not a C++ expert (actually, the only stuff I havent learned in intimate detail is templates), I know enough C++ to realize that it is not the be-all, end-all of programming languages. In fact, after several years of C++ being around, it is already beginning a slow fading into history, with Java being its successor --- and not a very good one, at that. At the risk of sounding like the 40-50 year olds out there who still insist that FORTRAN is a good enough language for everything, Ill be a 30-something who insists that, until something better comes along, C is still a good all-purpose language in which to write heavy, data-structure intensive programs. I believe it was Dennis Ritchie who said something like, "C is rarely the best language for a given task, but its often the second-best," the implication being that its better to learn one language that is second-best for everything, than to learn a new language for every programming task. (One could say the same of English.) I started libwayne when I realized that I was constantly re-writing little bits of code that did important things that should be in the C standard, but are not. For example, how many times have you written code like this: if((p = malloc(n)) == NULL) /* or some other fatal error condition */ { fprintf(stderr, "error: %sn", err_msg); exit(1); } I got sick of it. Furthermore, I often wanted to know more about why my program failed. So I wrote Fatal. Heres its prototype: void Fatal(char *fmt, ...); /* generates an assertion failure */ It uses varargs so you can pass it an arbitrary list of output arguments just like printf, but it generates an assertion failure so that if you run it under a debugger, you can look at the program nicely as it dies. It turned out to be only the first function I wrote for libwayne, and it was put into a file called "misc.c" which I started including in most of the code I wrote. Another early member of the library was Malloc, which calls Fatal if the standard malloc fails. Eventually "misc.c" started getting pretty big, with macros for MIN, MAX, ABS, SQR, etc, so I created misc.h and compiled misc.c into an object module. That was about 1993. About that time I started to realize that, at least in C, we need a way to pass "objects" around in a reasonably transparent way, but sometimes we want to treat pointers as integers. This makes some peoples teeth sweat (my own included), so I invented the voint datatype, which is (you guessed it) a union of (void*) and (int). Then I started adding more complex algorithms to libwayne, whenever I needed them. Each and every piece of libwayne was written because I needed it, but only things that I took careful time to do well went into libwayne. Any algorithm that needs to compare objects needs a comparison function like the one used by the ANSI standard qsort routine..

Requirements: No special requirements
Platforms: Linux
Keyword: Algorithms Libraries Library Libwayne One Programming Reasonably Written Written In
Users rating: 0/10

License: Freeware Size: 3 MB
More Reviews or Write Review

Libraries  -  libmousetrap 0.6.1
libmousetrap is a C library to create and manipulate mousetrap buffers in system memory. Mousetrap buffers are compressed two dimensional cartesian grids with integer precision. A mousetrap buffer retains an integer identifier for every point in...
Libraries  -  Ruby/DICT 0.9.3
Ruby/DICT is an RFC 2229 compliant client-side library implementation of the DICT protocol, written in the Ruby programming language. Ruby/DICT library can be used to write clients that access dictionary definitions from a set of natural language...
48.13 KB  
Libraries  -  Aapl C++ Template Library 2.14
Aapl is a C++ template library for generic programming. Aapl supports different generic programming paradigms by providing variations of standard data structures. For example, a by-value linked list template may be used to store a user supplied...
122.88 KB  
Libraries  -  Extended Universal Resource Library 0.2
Extended Universal Resource Library is a pure Java library for cleaner, more flexible file access in Java. How data is stored is completely transparent to the client, since the library is meant to replace It provides...
327.68 KB  
Libraries  -  libnetfilter_conntrack 0.0.30
libnetfilter_conntrack is a userspace library providing a programming interface (API) to the in-kernel connection tracking state table. libnetfilter_conntrack has been previously known as libnfnetlink_conntrack and libctnetlink....
215.04 KB  
Programming  -  PicoMapping 0.1.0
PicoMapping is a free and open source database mapping library written in the Java programming language.
20.48 KB  
Audio Tools  -  The Raw Wav Library 0.2
This is a simple C library for working with the raw data in uncompressed WAV files. There are many better libraries for dealing with WAV files than this one. I wrote this to do some experimenting, and it's probably not the solution you're looking...
10.24 KB  
Programming  -  Pyjamas for Linux 0.7pre1
Pyjamas is a toolkit and library designed to enable writing AJAX applications in Python. Pyjamas is based on Google's GWT, which does the same thing for Java. ike GWT, pyjamas involves the translation of the application and libraries...
1.76 MB  
Libraries  -  Flate library 1.4.3
Flate library is a template library used to deal with html code in CGI applications. The library includes C and Perl support. All html code is put in an external file (the template) and printed using the library functions: variables, zones (parts...
45.06 KB  
Network & Internet  -  Grail 0.6
Grail is an extensible Internet browser written entirely in the interpreted object-oriented programming language Python. It runs on Unix, Windows and Macintosh. Grail is easily extended to support new protocols or file formats. Grail is...
378.88 KB  
Programming  -  FLEX-db Digital Asset Manager 3.0.9
FLEX-db - an enterprise Digital Asset Manager (DAM). It ingests and links metadata with files, creates thumbnails, and processes files using business rules. FLEX-db has a JSP client, Java app server for file input and output and an EJB metadata...
21.57 MB  
Programming  -  Libicom 0.9.0
The libicom library is a character based dynamicly linked library for Linux. It is used to remotely control the Icom IC-R8500 wide band receiver via an RS232 link. All call and return parameters to the control functions are character string based....
20.48 KB  
Programming  -  dotdesktop 0.3
Dotdesktop library provides ability to parse desktop entry file and access the information in a convenient way. Desktop entry file format is defined by, it is used to describe information about an application such as the name and...
327.68 KB  
Programming  -  Cedalion for Linux 0.2.6
Cedalion is a programming language that allows its users to add new abstractions and define (and use) internal DSLs. Its innovation is in the fact that it uses projectional editing to allow the new abstractions to have no syntactic limitations.
471.04 KB  
Programming  -  libyasl 0.2
Libyasl is a C++ class library to easily realize TCP/UDP/Multicast clientsand servers in IPv4 and IPv6 environments under GNU/Linux systems.
143.36 KB  
Libraries  -  wolfSSL 3.11.0
The wolfSSL embedded SSL/TLS library is a lightweight SSL library written in ANSI standard C and targeted for embedded and RTOS environments - primarily because of its small size, speed, and feature set. It is commonly used in standard operating...
2.73 MB  
Libraries  -  EuGTK 4.8.9
Makes it easy to develop good- looking, fast, cross-platform programs that run on Linux, OS X, and Windows. Euphoria is a very fast interpreted/compiled language with straight-forward syntax. EuGTK allows programming in a clean, object-oriented...
10.68 MB  
Libraries  -  Linux User Group Library Manager 1.0
The LUG Library Manager is a project to help Linux User Groups start their own library. A LUG library is helpful to the community at large because it increases access to information, and gives everyone the opportunity to become more knowledgeable.
5.35 KB  
Libraries  -  Module::MakefilePL::Parse 0.12
Module::MakefilePL::Parse is a Perl module to parse required modules from Makefile.PL. SYNOPSIS use Module::MakefilePL::Parse; open $fh, Makefile.PL; $parser = Module::MakefilePL::Parse->new( join("", ) ); $info = $parser->required;...
8.19 KB  
Libraries  -  sqlpp 0.06
sqlpp Perl package is a SQL preprocessor. sqlpp is a conventional cpp-alike preprocessor taught to understand SQL ( PgSQL, in particular) syntax specificities. In addition to the standard #define/#ifdef/#else/#endif cohort, provides also...
10.24 KB