Main > Free Download Search >

Free wrapped in software for linux

wrapped in

Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 242
MySQL wrapped 1.6

MySQL wrapped 1.6


MySQL wrapped is a very small collection of classes that hides the MySQL C API. more>>
MySQL wrapped is a C++ wrapper for the MySQL database C application programming interface.
Examples:
The following example should be linked with the mysqlclient library from the MySQL distribution / build.
#include
#include
#include
#include
#include "Database.h"
#include "Query.h"
int main()
{
Database db("localhost","dbuser","","testdb");
Query q(db);
q.execute("delete from user");
q.execute("insert into user values(1,First Person)");
q.execute("insert into user values(2,Another Person)");
q.get_result("select num,name from user");
while (q.fetch_row())
{
long num = q.getval();
std::string name = q.getstr();
printf("User#%ld: %sn", num, name.c_str() );
}
q.free_result();
}
Enhancements:
- This release adds methods to access fields by name.
<<less
Download (0.015MB)
Added: 2006-04-08 License: GPL (GNU General Public License) Price:
1299 downloads
Mp3Wrap 0.5

Mp3Wrap 0.5


Mp3Wrap is a free independent alternative to AlbumWrap. more>>
Mp3Wrap is a free independent alternative to AlbumWrap. Its a command-line utility that wraps quickly two or more mp3 files in one single large playable mp3, without losing filenames and ID3 informations (and without need of decoding/encoding).
Also it has the possibility of including other non mp3 files, such as PlayLists, info files, cover images, inside the mp3. This means that you obtain a large mp3 that you can split in any moment just using mp3splt and in few seconds you have all original files again! Its useful because files created with Mp3Wrap are easy to download. Infact who downloads has not to know each single song name and easy to play and even if you dont have mp3splt to split file, you can listen to it anyway. MP3Wrap the Free AlbumWrap.
Main features:
- Mp3Wrap is completely FREE and Open Source (under GPL License)
- Mp3Wrap files dont need ID3 to work. You can remove it, and still works
- Mp3Wrap index is always 1/10 sized than AlbumWrap (1 KB vs. 10 KB, with less probability of damage)
- Mp3Wrap is faster because you have not to select each file one at a time
- Mp3Wrap can include path info and other non mp3 files such as playlists
Enhancements:
- new important feature added: CRC introduced. Now wrapped files contain a CRC information to guarantee integrity of index and mp3data.
- new feature added: Verbose option introduced. Now -l option gives only list of filenames, -lv complete infos.
- new feature added: added a config file. User will write his customizations inside this file.
- new feature added: extension can be specified in config file as "EXT=my extension.mp3"
- feature improved: like mp3splt, now searches for index for 16384 bytes. This should be enough.
- bug fixed: file existence error is now correct.
- bug fixed: when an invalid option is specified, now program exits
- now sources are separated by functions for easy mantainance.
- added configure script to autodetect install and man directories for Linux version.
<<less
Download (0.016MB)
Added: 2006-07-29 License: GPL (GNU General Public License) Price:
1184 downloads
DJWrap 0.9.4

DJWrap 0.9.4


DJWrap is an open format for combining several mp3s into one. more>>
DJWrap is an open format for combining several mp3s into one (wrapping) , without losing information about where the songs begin and where they end, or what file names they had, allowing them to later be turned back into separate files.
The idea of DJWrap is in many ways the same as the AlbumWrap (ALBW) format, and the MP3Wrap format, though DJWrap has some extra features.
libdjwrap is a library that eases the handling of these wrapped files. It can parse DJWrap, AlbumWrap and MP3Wrap files, as well as output DJWrap files. It can be incorporated into software which wants a more intelligent handling of wrapped files. This would mainly be music players and CD writing software.
The library, libdjwrap, comes with a tool, aptly named djwrap. It gives a command line interface to various functions of the library, allowing a user to extract songs from a DJWrap, AlbumWrap or MP3Wrap file, as well as create their own DJWrap files.
There is also a graphical tool, using libdjwrap, for handling wrapped files. Its due for release any time now.
Enhancements:
- There is a bug in DJWrap 0.9.3 that became apparent when its used in MooseWrap.
- A function in the library returns the wrong value at a point, which makes software using DJWrap stop before writing a wrap do disk.
<<less
Download (0.070MB)
Added: 2006-02-23 License: LGPL (GNU Lesser General Public License) Price:
1341 downloads
toolwrap 0.2

toolwrap 0.2


toolwrap is a general Unix wrapper utility. more>>
Toolwrap is a wrapper tool (a program which starts other program), which may be used to launch applications according to defined preferences (or policies).

Thanks to toolwrap, many releases of a given application can coexist, and may be deployed on a single workstation or made available on a files server. Policy files allow different users to use different versions transparently.

Environment files control which binaries to use and prepare the environment before starting the application.

Compiling

Compiling toolwrap should be as simple as :

./configure --prefix=/opt &&
make

Installation

If toolwrap compiles successfully, run make install to get the following tree & files created (assuming that /opt was specified at the "configure" step):

/opt
/opt/bin/toolwrap
/opt/pkgs
/opt/etc
/opt/etc/toolwrap-policies
/opt/env
/opt/env/__default__

/opt/bin/toolwrap is the wrapper itself. Wrapped binaries will be symlinked to toolwrap.
/opt/etc/toolwrap-policies holds the default wrapping policies. See policy. Policies indicate which package must be used when a tool is invoked.
/opt/etc/env/__default__ defines how the environment must be set up before starting a tool, and which binary is executed.
<<less
Download (0.024MB)
Added: 2005-04-04 License: GPL (GNU General Public License) Price:
1664 downloads
Rapid XSLT for linux 0.1

Rapid XSLT for linux 0.1


Provide a complete set of tools that a programmer can use for writing XSLT. more>> The project is still too early in its development life cycle to be compared to other, more mature, editors and IDEs. Nevertheless, it does provide a complete set of tools that a programmer can use for writing XSLT.
There are no plans to further develop this project.
Some of the features of this editor:
- Ctrl+Shift brings up a list of frequently typed XSLT elements with a shortcut letter that allows one to be inserted.
- Shorthand Notation supports two groups of elements that abstract nicely to programmatic constructs: xsl:call-template and xsl:with-param elements and xsl:choose, xsl:when and xsl:otherwise. They can be written using the shorthand notation as a method call and a case-default construct, respectively.
- Ctrl+Alt+arrow keys navigate between elements and attributes.
- User preferences allow inserted code to be customized.
- One or more elements can be wrapped with an inserted element.
- Multiple XSLT files can be opened and edited at once.
The download file contains help sheets to explain how to use the program.
What are its known limitations?
- The preferences window is not user friendly in that the options that should be set via radio buttons are set by typing YES or NO into text fields.
- When closing an open document, the user is prompted to save even if no changes have been made to it.
- Only one construct can be typed at a time in the shorthand notation text area. Therefore, a case/default construct may not be followed by a method call, and vice versa.
<<less
Download (111KB)
Added: 2009-04-18 License: Freeware Price: Free
188 downloads
OcamlSpread 0.0.1

OcamlSpread 0.0.1


OcamlSpread is a wrapper around the Spread group communication toolkit. more>>
OcamlSpread is a wrapper around the Spread group communication toolkit (http://www.spread.org) for the Objective Caml programming language.

OcamlSpread not only wraps Spread functions, but adds an object-oriented interface and other valuable features.

<<less
Download (0.018MB)
Added: 2006-11-24 License: GPL (GNU General Public License) Price:
1064 downloads
CGI::Wrap 2006.0215

CGI::Wrap 2006.0215


CGI::Wrap is a buffer output when building CGI programs. more>>
CGI::Wrap is a buffer output when building CGI programs.

SYNOPSIS

use CGI;
use CGI::Croak;
use CGI::Wrap;

$query = new CGI;
savequery $query; # to reconstruct input
$CGI::Out::mailto = fred; # override default of $<

run &myfunc, @myargs # a function
run sub { code } # an inline function
run code # something to eval

sub myfunc {
out $query->header();
out $query->start_html(
-title=>A test,
-author=>muir@idiom.com);
}
$CGI::Out::out # is the buffer

This is a helper routine for building CGI programs. It buffers stdout until youre completed building your output. If you should get an error before you are finished, then it will display a nice error message (in HTML), log the error, and send email about the problem.

To use it, you must condense your program down to a single function call and then use CGI::Wrap::run to call it.

Instead of print, use out.

<<less
Download (0.004MB)
Added: 2006-08-31 License: Perl Artistic License Price:
1149 downloads
MacPerl::AppleScript 0.02

MacPerl::AppleScript 0.02


MacPerl::AppleScript is a Perl extension for easily accessing scriptable Apps. more>>
MacPerl::AppleScript is a Perl extension for easily accessing scriptable Apps.

SYNOPSIS

use MacPerl::AppleScript;

#
# create Application Object
#
my $app = MacPerl::AppleScript->new("Application Name");

my $doc1 = $application->new("document 1");
my $doc2 = $application->new("document 2 of $app");

#
# directly execute Script in Application
# (auto-creates a tell "Application Name" block for you
#
$app->execute("some applescript command");
$app->execute(["some applescript command", "..." ... ]);
$app->execute("some applescript command", "..." ... );

#
# alternative way using a hashref
# script: script to get executed (string or array-ref)
# object: optional, object to be named in the "tell" block
# timeout: optional, timeout in seconds
#
$app->execute({
script => [...],
object => $doc1,
timeout => 10,
});


#
# calling functions
#
$app->open(POSIX path "/path/to/file" as alias);
$app->open($app->convert_path(/path/to/file,alias));
$doc->close();
$app->close($doc1);

#
# string interpolation to Applescript Object Name
# gets application "Application Name" for $application
# gets document 1 of application "Application Name" for $doc1
#
my $ascript_appname = "$app";
my $ascript_docname = "$doc1";

$app->execute("close $doc1"); # cool :-)

#
# getting/setting properties
#
my $foo_property = $app->{foo};

my $foo_bar_prop = $doc1->{foo bar};
my $foo_bar_prop = $doc1->{foo_bar};

$app->{bar} = "any value";

$doc1->{foo bar} = [1,2,3,4];
$doc1->{foo_bar} = {a=>1, b=>2};

my %properties = %{$app};

This module is not written for being efficient. In fact it is really inefficient but hopefully easy to use.

As AppleScript (and its way of communicating to Applications) usually has some kind of latency. The creation of readable code is the most important goal when writing this Module.

Another reason for some kind of inefficiency results in the technical problem that AppleScript is a strongly typed language. Converting types back to Perl is easy. But the other direction is not always clear, as converting a scalar from Perl to AppleScript needs some guessing.

The parts of the code that deal with these problems do some tries with different AppleScript commands wrapped in try-blocks. So usually one of the expression works without errors. The same approach is made with hash keys that can contain spaces or underscores inside the key name.

This module assumes that all strings are correctly encoded in perl internals coding sheme based on Unicode. During the conversion to AppleScript all characters inside strings that are not ascii-clean are converted to strange looking unicode-string constructing sequences. I tested a lot of character schemes including west- and mid-european languages as well as russian, greek and arabic with some applications without getting problems.

<<less
Download (0.014MB)
Added: 2006-10-20 License: Perl Artistic License Price:
1099 downloads
POE::Component::SubWrapper 0.08

POE::Component::SubWrapper 0.08


POE::Component::SubWrapper is an event based wrapper for subs. more>>
POE::Component::SubWrapper is an event based wrapper for subs.
SYNOPSIS
use POE::Component::SubWrapper;
POE::Component::SubWrapper->spawn(main);
$kernel->post(main, my_sub, [ $arg1, $arg2, $arg3 ], callback_state);
This is a module which provides an event based wrapper for subroutines.
SubWrapper components are not normal objects, but are instead spawned as separate sessions. This is done with with PoCo::SubWrappers spawn method, which takes one required and one optional argument. The first argument is the package name to wrap. This is required. The second argument is optional and contains an alias to give to the session created. If no alias is supplied, the package name is used as an alias.
Another way to create SubWrapper components is to use the poeize method, which is included in the default export list of the package. You can simply do:
poeize Data::Dumper;
and Data::Dumper will be wrapped into a session with the alias Data::Dumper.
When a SubWrapper component is created, it scans the package named for subroutines, and creates one state in the session created with the same name of the subroutine.
The states each accept 3 arguments:
- An arrayref to a list of arguments to give the subroutine.
- A state to callback with the results.
- A string, either SCALAR, or ARRAY, allowing you to decide which context the function handled by this state will be called in.
The states all call the function with the name matching the state, and give it the supplied arguments. They then postback the results to the named callback state. The results are contained in ARG0 and are either a scalar if the function was called in scalar context, or an arrayref of results if the function was called in list context.
<<less
Download (0.005MB)
Added: 2007-08-16 License: Perl Artistic License Price:
799 downloads
PyECC 0.1

PyECC 0.1


A simple Python module for performing Elliptical Curve Cryptography more>>
PyECC 0.1 is yet another excellent utility for programmers. It is actually a simple Python module for performing Elliptical Curve Cryptography. This library wrapped around the libseccure library which itself is based off of code developed originally for the secure utility.

Instructions:

  • Since PyECC uses setuptools to build and install the PyECC module and corresponding library, you need to run: % sudo python setup.py install

Requirements:

  • Python
<<less
Added: 2009-07-10 License: LGPL v2 Price: FREE
10 downloads
pyCDK 0.1

pyCDK 0.1


pyCDK is a set of Python bindings (using Pyrex) to the Curses Development Kit. more>>
pyCDK is a set of Python bindings (using Pyrex) to the Curses Development Kit. It allows users to access high level curses widgets like the calendar, buttonbox, scrolling list, message box, etc. CDK is great, it really makes building complex curses applications much easier. I have used it before from C and Perl but no Python binding existed in this toolkit that I could find anyway.

pyCDK is strictly a text interface module, if you are looking to write a full fledged GUI in python then I highly recommend wxPython and wxGlade

This is a short guide for install:

1. Make sure you have Pyrex installed (version 0.82+).

2. Download and install CDK from Thomas Dickeys site
untar/gz the source archive
cd into it
./configure
./make
./make install

3. Download the pycdk package from here

4. If necessary, modify setup.py by adding the include and lib directories for CDK. The relevant portion is:

include_dirs = [/usr/local/include/cdk, /usr/include]
library_dirs = [/usr/local/lib, /usr/lib]
(I installed CDK with the default prefix of /usr/local.)

5. Run setup.py install (as root)

6. Every widget has a minimal example under pycdk/examples

7. Consult the man pages for CDK if you have a question that the examples dont make clear. Also, it may be that what you are after just isnt wrapped yet. In that case send me a note or better yet, send me a patch !
<<less
Download (0.018MB)
Added: 2006-07-16 License: GPL (GNU General Public License) Price:
1195 downloads
PGAPy 0.1

PGAPy 0.1


PGAPy is a wrapper for pgapack, the parallel genetic algorithm library, a powerfull genetic algorithm library. more>>
PGAPy is a wrapper for pgapack, the parallel genetic algorithm library, a powerfull genetic algorithm library by D. Levine, Mathematics and Computer Science Division Argonne National Laboratory.

The library is written in C. PGAPy wraps this library for use with Python. The original pgapack library is already quite old and not very actively maintained -- still Ive found it one of the most complete and accurate (and fast, although this is not my major concern when wrapping it to python) genetic algorithm implementations out there with a lot of bells and whistles for experimentation. Thats why I wanted to use it in Python, too.

There currently is not much documentation for PGAPy. You really, absolutely need to read the documentation that comes with pgapack -- and of course you need the pgapack library.

The pgapack library can be downloaded from the pgapack ftp site, it is written in ANSI C and therefore should run on most platforms. I have tested it on Linux only and Ill currently not provide Windows versions.

To get you started, Ive included a very simple example in test.py that implements the "Maxbit" example -- modified to use integer genes instead of bits -- from the pgapack documentation. This illustrates several points:

- Your class implementing the genetic algorithm needs to inherit from pga.PGA (pga is the PGAPy wrapper module).
- You need to define an evaluation function called evaluate that returns a number indicating the fitness of the gene given with the parameters p and pop that can be used to fetch allele values from the gene using the get_allele method, for more details refer to the pgapack documentation.
Y- u can define additional functions overriding built-in functions of the pgapack library, illustrated by the example of print_string. Note that we do a call to the original print_string method of our PGA superclass.
- The constructor of the class needs to define the Gene type, in the example we use an integer (type (2), a python expression for the built-in integer datatype).
- The length of the gene (100 in the example) needs to be given.
-We want to maximize the numbers returned by our evaluation function, set the parameter maximize to False if you want to minimize.
- We can define an array of init values each entry containing a sequence with lower and upper bound. The array has to have the length of the gene. Note that the upper bound is included in the range of possible values (unlike the python range operator but compatible with the pgapack definition).
- In the constructor of the class we can add parameters of the genetic algorithm. Not all parameters of pgapack are wrapped yet, currently you would need to consult the sourcecode of PGAPy to find out which parameters are wrapped. In the example we define several print options.
- Finally the genetic algorithm is started with the run method.
<<less
Download (0.068MB)
Added: 2005-11-02 License: LGPL (GNU Lesser General Public License) Price:
1452 downloads
tada 1.4.0

tada 1.4.0


tada consists of a python module which is a wrapper module for any DBAPI 2 compatible database module. more>>
tada consists of a python module which is a wrapper module for any DBAPI 2 compatible database module.

It wraps all functions and methods of the origional module and forces the return of deferreds instead.

tada can therefore be considered to be almost DBAPI compatible as it inherits the compatiblity level of the wrapped module, but returns twisted deferreds.

<<less
Download (0.007MB)
Added: 2006-11-22 License: GPL (GNU General Public License) Price:
1068 downloads
phpDiplomacy 0.75

phpDiplomacy 0.75


phpDiplomacy is an open source, multiplayer, web based strategy game based on the board game by Avalon Hill. more>>
phpDiplomacy is an open source, multiplayer, web based strategy game based on the board game by Avalon Hill, in which you have to try and conquer Europe.
To win you have to be strategic and diplomatic, making deals and alliances with other players, and stabbing them in the back when it suits you best.
Register a user account to play or post messages. If you would like some help please read the help, or register and post a message in the public forum below.
Enhancements:
- PostgreSQL and PHP4 support dropped
- Membership object created
- Membership database links simplified
- gamemaster.php moved to an external image to prevent
- global crashing
- Requests wrapped in REPEATABLE READ transaction, fine
- grained LOCK IN SHARE MODE and FOR UPDATE locking used
- Indexes added
- Queries optimized
- Forum algorithms optimized
- Hashes salted
- Game and forum messages split into seperate tables
- Orders shown in an enhanced table
- Incomplete orders not accepted
- Updates to order select boxes are visibly flagged as red
- Standoffs logged
- Retreats can be made to territories which the attacking
- unit didnt come from, and which dont have standoffs.
- Supply centers are only occupied when there is a unit in
- them in the Autumn turn
- New units can only be created in supply centers
- All errors are logged
- Mid-adjudication crashes flag games as having crashed, so
- they are do not crash over and over
- Game notification block which shows any games the user is
- logged onto in which they have recieved new messages or
- havent finalized
- Unfinalized orders are accepted by the adjudicator
- When seven people enter a game the game starts immidiately
- New user session monitoring code
- Territories cached instead of getting refetched
- Forum messages are ordered by the last reply to the thread
- posted, not just the time the thread was started
- A new tabbed gaming chatbox to allow realtime strategy
- discussion
- Extensible AJAX code put in place to allow further AJAX
- development
- Tickets and cookies changed so that multiple game boards
- can be viewed and submitted to at once
- Time limit taken off posting new messages
- UTF-8 support for messages
- Improved input filtering, allowing non-standard characters
- to be inputted and stored safely in the database
<<less
Download (0.46MB)
Added: 2007-01-18 License: BSD License Price:
592 downloads
GPS Tracker 0.3.1

GPS Tracker 0.3.1


GPS Tracker project allows someone to track a GPS enabled cell phone using Google maps. more>>
GPS Tracker project allows someone to track a GPS enabled cell phone using Google maps. For this project I used a Motorola i355 cell phone on the Sprint/Nextel network.
You need to have a data plan so that you can make updates to your website from the cellphone. Please read the ReadMe.txt file in the download for installation instructions. I hope you enjoy the project. If you have any questions, feel free ask them in the forum.
There are two projects available. The first project is built with .NET and Microsoft SQL Server. The second project is built with PHP and MySQL. If you have any suggestions, please feel free to let me know. Both projects use java (J2ME) on the phone.
How It Works:
None of the code for this project is very difficult, but it does span a number of tiers and languages which may be unfamiliar to some. Figure 1 shows the data flow from phone to Google map.
Phone
Lets start with the code on the phone. This app is written in java using Java 2 Micro Edition (J2ME). Java is very similar to C#. As you look through the code, the only thing that might confuse a C# coder is the vector. A java vector is pretty much a C# ArrayList, a dynamic array. There are 2 classes in the app, LBSMidlet7 and Qworker. A midlet is an app that runs on cell phones. Take a look at the class definition. It extends the MIDlet class and implements a LocationListener interface. That means that we need to put all the method definitions of that interface into our class. Well get to that in a bit, right now lets look at the constructor.
We do 2 things in the constructor. We create a QWorker object and pass it "this" and the website that we will be uploading to. The getAppProperty method gets attributes out of the JAD file. Open the JAD file in your favorite text editor and there youll see the webpage that youll be sending GPS data to. Notice how were passing "this" to the GWorker object? Thats the LBSMidlet7 object. Take a quick look at the QWorker class, it extends the Thread class. Thats why we call worker.start() in the LBSMidlet7 constructor. We want to start our worker thread.
When you start a thread, what you are doing is creating an object and then running that objects run() method. Take a look at the run method. It has an endless loop and in the loop the first thing it does is call queue.wait(). Look at the definition of the queue. The queue is an abstract data type (ADT), it just like a queue at a bank, enter the queue at the back of the line and leave the queue when you get to the front of the line. Look at the definition of the queue, its our vector (dynamic array). When you call wait() on an object within a class that extends the Thread class, it puts that object to sleep. Think about that a little. When we hit that line, our QWorker object is now waiting... Whats it waiting for? Well get to that in a minute. Before we do that, take a look at the synchronized keyword. Notice that its wrapping the queue. What that does is it puts a lock on the queue and tells all other processes not to touch the queue until that little block of code is done with it.
Ok, so now weve started a worker thread and put it to sleep. Lets now go back to the LBSMidlet7 class and take a look at the startApp() method. In the lifecycle of a midlet, the constructor is called once and then the startApp() method is called next. In fact it can be called several times, like for instance when you close a flip phone and then open it again. What happens is that the app is suspended and when you flip the phone open again, startApp() is called again. In startApp(), we get our display and then we create a LocationProvider if one hasnt already been created and we create another thread... Why are we creating all these threads? Good question. When a midlet (app) is suspended, the backgroud threads that are created keep running. That allows us to get our GPS data and send it to our webserver while we do other important stuff, like make phone calls.
The LocationProvider is what gets our GPS data. First we create a criteria, were using the default, but you can set stuff like accuracy, response time etc. Next we create our Location Listener. Its pretty much just what it sounds like. Here you can set the interval for how often you want to get GPS data. Its currently set to 60 which is in seconds. When data comes in, the locationUpdated() method is called. This is another one of the required methods in the LocationListener interface. Here we create yet another thread and call getLocation(). The getLocation() method gets the GPS coordinates, creates a queryString which we will send to the web server a little later and then calls worker.addToQueue in the QWorker class.
Lets go back over to the QWorker class and see what happens in that method. It add the queryString to the queue and then calls queue.notify(). Guess what queue.notify() does? It wakes up our sleeping QWorker thread and tells it to get to work! Notice that our calls to the queue are once again wrapped in a synchronized block. Please practice safe threading... When notify() is called on a thread, what it does is go back to the run() method and execute the next line of code right after where we told the queue to wait(). So now we are just about ready to send the GPS data to the web server. We have a couple of interesting lines of code there. First we call peekInQueue() which gets the queryString out of the queue but leaves it there for now. Then it sends the queryString to the getUrl method which attempts to send the queryString to our web server. If its successful, we can remove the queryString from the queue. If not, we leave the queryString in the queue and try to send it to the webserver again later.
Why in the world do we have this complicated queue here? Im glad you asked. There may be times when you are receiving GPS data but are not actually in an area that has a cell phone connection. If we dont have a cell phone connection, we cant send our GPS data to our web server. So we stick our queryString in our queue and wait until we get back into an area with cell phone connectability. Can you hear me now?
Well, weve spent a pretty fair bit of time explaining the phone code. Its a little complicated but its important to know whats going on if you want to take the code and make modifications to it to suit your needs. Heres a good article on the Sun website to let you know about more capabilities of the Location Based Services API. Right about now, our queryString should be arriving at our website, lets catch up to it and see what happens.
Enhancements:
- Added comments to code
<<less
Download (MB)
Added: 2007-07-25 License: GPL (GNU General Public License) Price:
578 downloads
Secleted [ 0 ] software to compare
  • Page: 1 of 5
  • 1
  • 2
  • 3
  • 4
  • 5