Extending C: “Variable Variables” like PHP $$var

Tiny C library for a limited amount of dynamic strings. If you need more functionality, feel free to extend it, write your own linked lists or check out GTK’s glib GList object.

Examples:

if(dictionary(“moo”))
strcpy(dictionary(“moo”),”Something about cows.”);
puts(dictionary(“moo”));//prints Something about cows.
dictionary(“destroy()”);

Limitations:
1. Size of strings in this demo are limited to 99 characters (see CHARS in source code).

2. 100 bytes of memory (99 + the terminating NULL) are set aside for each and every word it does not find, so you can add definitions to them. This makes it very friendly and easy to use, but it may not be a good idea to use it in situations where you are looking up a lot of words that are not in the dictionary!

3. Uses fast linear searching, but for a very large dictionary you might want to use something else, the aforementioned GList or a database.

4. You are responsible for freeing the memory used by the dictionary upon program termination. You can do that using the _destroy method:
dictionary_destroy()

Or by passing “destroy()” as a string to the dictionary object directly, vis:
dictionary(“destroy()”);

5. (updated) Like malloc, this library now returns NULL when out of memory. You may desire to check for this.

6. Slightly obfuscated code for compactness. If you don’t like the formatting, run the free “indent” program (available for linux and windows) on it or use your text editor’s automatic indent feature.

The tiny dictionary library and demonstration program may be downloaded from my web site:
http://www.thenerdshow.com/index.php?page=dictionary

Duration : 0:6:49


Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

2 Responses to “Extending C: “Variable Variables” like PHP $$var”

Leave a Reply