Enlightenment CVS committal

Author  : mej
Project : eterm
Module  : libast

Dir     : eterm/libast/src


Modified Files:
        conf.c debug.c mem.c strings.c 


Log Message:
Sun Feb 23 22:00:55 2003                        Michael Jennings (mej)

Still working on the documentation.  If you run "doxygen" from the
top-level directory, you can see what's there so far.

At some point, I'll be needing a logo.  So if you're artistically
inclined, feel free to take a stab at one. :)

===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/conf.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- conf.c      19 Feb 2003 21:10:32 -0000      1.7
+++ conf.c      24 Feb 2003 03:03:20 -0000      1.8
@@ -21,7 +21,17 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char cvs_ident[] = "$Id: conf.c,v 1.7 2003/02/19 21:10:32 mej Exp $";
+/**
+ * @file conf.c
+ * Config File Parser Source File
+ *
+ * This file contains the functions which comprise the config file
+ * parser.
+ *
+ * @author Michael Jennings <[EMAIL PROTECTED]>
+ */
+
+static const char cvs_ident[] = "$Id: conf.c,v 1.8 2003/02/24 03:03:20 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -950,3 +960,20 @@
         return (state);
     }
 }
+
+/**
+ * @defgroup DOXGRP_CONF Configuration File Parser
+ *
+ * This group of functions/defines/macros comprises the configuration
+ * file parsing engine.
+ *
+ *
+ * A small sample program demonstrating some of these routines can be
+ * found @link conf_example.c here @endlink.
+ */
+
+/**
+ * @example conf_example.c
+ * Example code for using the string routines.
+ *
+ */
===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/debug.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- debug.c     19 Feb 2003 21:10:33 -0000      1.3
+++ debug.c     24 Feb 2003 03:03:20 -0000      1.4
@@ -21,7 +21,16 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char cvs_ident[] = "$Id: debug.c,v 1.3 2003/02/19 21:10:33 mej Exp $";
+/**
+ * @file debug.c
+ * Debugging Subsystem Source File
+ *
+ * This file contains all non-cpp-based debugging functionality.
+ *
+ * @author Michael Jennings <[EMAIL PROTECTED]>
+ */
+
+static const char cvs_ident[] = "$Id: debug.c,v 1.4 2003/02/24 03:03:20 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -33,3 +42,114 @@
    options parser can handle function pointers. */
 unsigned int libast_debug_level = 0;
 unsigned long libast_debug_flags = 0;
+
+/**
+ * @defgroup DOXGRP_DEBUG Debugging Subsystem
+ *
+ * This group of functions/defines/macros implements the debugging
+ * subsystem within LibAST.
+ *
+ * LibAST provides a flexible level-based debugging mechanism to
+ * client programs, supporting both compile-time and run-time methods
+ * for including or suppressing debugging output by increasing or
+ * decreasing the "debug level," i.e. the verbosity, of the system.
+ *
+ * The current level of debugging output is controlled by the
+ * DEBUG_LEVEL variable; to alter it, simply assign a new integer
+ * value (from 0 to 9, inclusive) to this variable.
+ *
+ * LibAST provides debugging for several of its own subsystems and
+ * allows client applications to use the same debugging mechanisms by
+ * defining its own categories. To use the LibAST debugging system,
+ * you will need one #define and one macro for each subsystem or
+ * debugging category your program will have.
+ *
+ * For example, let's say your code contains some socket code.  To
+ * create a debugging entity for that code, simply add a #define which
+ * sets the debug level for it, and a macro to map output messages to
+ * the DPRINTF*() macro for that debug level.  If you wanted
+ * socket-related debugging information at debug level 2, you'd use
+ * something like these:
+ *
+ * @code
+ * #define DEBUG_SOCKETS  2
+ * #define D_SOCKETS(x)   DPRINTF2(x)
+ * @endcode
+ *
+ * That's all there is to it!  Now, anywhere you want socket-related
+ * debugging output, just use the D_SOCKETS() macro like so:
+ *
+ * @code
+ *     D_SOCKETS(("Connecting to %s...\n", hostname));
+ * @endcode
+ *
+ * Be sure to use TWO sets of parentheses, not just one.  Don't worry;
+ * you'll get used to it! :-)
+ *
+ * That's all there is to it!
+ *
+ * If you'd like to see a sample program which uses this system, click
+ * @link debug_example.c here @endlink.
+ */
+/**
+ * @example debug_example.c
+ * Example code for using the debugging subsystem.
+ *
+ * This is a trivial code example that uses LibAST-style debugging.
+ * The program takes a number, a symbol, and another number on the
+ * command line to perform simple arithmetic.  Specify the -d option
+ * to enable the debugging output.
+ *
+ * With debugging output turned off (no -d option), you should see
+ * something like this:
+ *
+ * @code
+ * $ ./debug_example 4 + 4
+ * 4 + 4 = 8
+ * $
+ * @endcode
+ *
+ * With debugging output turned on, you should see something like
+ * this:
+ *
+ * @code
+ * $ ./debug_example -d 10 - 14
+ * [1045855757] debug_example.c |   35: main(): Debugging is now on.
+ * [1045855757] debug_example.c |   48: main(): Number 1 is 10
+ * [1045855757] debug_example.c |   43: main(): Got operation '-'.
+ * [1045855757] debug_example.c |   51: main(): Number 2 is 14
+ * 10 - 14 = -4
+ * $
+ * @endcode
+ *
+ * As you can see, the debugging output contains UNIX-style time_t
+ * timestamps, source file names, line numbers, and function names for
+ * each debugging statement.
+ *
+ * Here's the complete source code:
+ */
+
+/* Documentation for the main Doxygen-generated page is here, for no
+ * other reason than this file lacks actual code. :-)
+ */
+
+/**
+ * @mainpage LibAST Documentation
+ *
+ * This document describes the various features and capabilities
+ * offered by LibAST, the Library of Assorted Spiffy Things.  As its
+ * name suggests, LibAST is a collection of various functions, macros,
+ * etc. which do all sorts of spiffy stuff.  By reading through all
+ * the following pages of goop, hopefully you'll learn about the
+ * miscellaneous mounds of spiffitude which await you in LibAST!
+ *
+ * Use the document tree to your left, or the quick links above, to
+ * navigate.  Or if you prefer, select from the list of topics below.
+ *
+ * @section topiclist Topic List
+ *
+ * -# @link DOXGRP_DEBUG   Debugging Subsystem @endlink
+ * -# @link DOXGRP_MEM     Memory Management Subsystem @endlink
+ * -# @link DOXGRP_STRINGS String Utility Routines @endlink
+ *
+ */
===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/mem.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- mem.c       19 Feb 2003 21:10:34 -0000      1.7
+++ mem.c       24 Feb 2003 03:03:20 -0000      1.8
@@ -22,7 +22,16 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char cvs_ident[] = "$Id: mem.c,v 1.7 2003/02/19 21:10:34 mej Exp $";
+/**
+ * @file mem.c
+ * Memory Management Subsystem Source File
+ *
+ * This file contains the memory management subsystem.
+ *
+ * @author Michael Jennings <[EMAIL PROTECTED]>
+ */
+
+static const char cvs_ident[] = "$Id: mem.c,v 1.8 2003/02/24 03:03:20 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -473,3 +482,204 @@
     }
     FREE(list);
 }
+
+/**
+ * @defgroup DOXGRP_MEM Memory Management Subsystem
+ *
+ * This group of functions/defines/macros implements the memory
+ * management subsystem within LibAST.
+ *
+ * LibAST provides a robust mechanism for tracking memory allocations
+ * and deallocations.  This system employs macro-based wrappers
+ * around the standard libc malloc/realloc/calloc/free routines, other
+ * libc fare such as strdup(), Xlib GC and Pixmap create/free
+ * routines, and even Imlib2's own pixmap functions.
+ *
+ * To take advantage of this system, simply substitute the macro
+ * versions in place of the standard versions throughout your code
+ * (e.g., use MALLOC() instead of malloc(), X_FREE_GC() instead of
+ * XFreeGC(), etc.).  If DEBUG is set to a value higher than
+ * DEBUG_MEM, the LibAST-custom versions of these functions will be
+ * used.  Of course, if memory debugging has not been requested, the
+ * original libc/XLib/Imlib2 versions will be used instead, so that
+ * you only incur the debugging overhead when you want it.
+ *
+ * LibAST has also been designed to work effectively with Gray
+ * Watson's excellent malloc-debugging library, dmalloc
+ * (http://dmalloc.com/), either instead of or in addition to its own
+ * memory tracking routines.  Unlike LibAST, dmalloc supplements
+ * memory allocation tracking with fence-post checking, freed pointer
+ * reuse detection, and other very handy features.
+ *
+ * A small sample program demonstrating use of LibAST's memory
+ * management system can be found
+ * @link mem_example.c here @endlink.
+ */
+
+/**
+ * @example mem_example.c
+ * Example code for using the memory management subsystem.
+ *
+ * This small program demonstrates how to use LibAST's built-in memory
+ * management system as well as a few of the errors it can catch for
+ * you.
+ *
+ * The following shows output similar to what you can expect to
+ * receive if you build and run this program:
+ *
+ * @code
+ * $ ./mem_example 
+ * [1045859036]        mem.c |  246: libast_malloc(): 500 bytes requested at 
mem_example.c:27
+ * [1045859036]        mem.c |   74: memrec_add_var(): Adding variable (0x8049a20, 
500 bytes) from mem_example.c:27.
+ * [1045859036]        mem.c |   75: memrec_add_var(): Storing as pointer #1 at 
0x8049c18 (from 0x8049c18).
+ * [1045859036]        mem.c |  329: libast_strdup(): Variable pointer (0x8049a20) at 
mem_example.c:36
+ * [1045859036]        mem.c |  246: libast_malloc(): 16 bytes requested at 
mem_example.c:36
+ * [1045859036]        mem.c |   74: memrec_add_var(): Adding variable (0x8049c40, 16 
bytes) from mem_example.c:36.
+ * [1045859036]        mem.c |   75: memrec_add_var(): Storing as pointer #2 at 
0x8049c7c (from 0x8049c58).
+ * [1045859036]        mem.c |  312: libast_free(): Variable dup (0x8049c40) at 
mem_example.c:39
+ * [1045859036]        mem.c |   94: memrec_find_var(): Found pointer #2 stored at 
0x8049c7c (from 0x8049c58)
+ * [1045859036]        mem.c |  113: memrec_rem_var(): Removing variable dup 
(0x8049c40) of size 16
+ * [1045859036]        mem.c |  312: libast_free(): Variable dup (   (nil)) at 
mem_example.c:43
+ * [1045859036]        mem.c |  319: libast_free(): ERROR:  Caught attempt to free 
NULL pointer
+ * [1045859036]        mem.c |  268: libast_realloc(): Variable pointer (0x8049a20 -> 
1000) at mem_example.c:46
+ * [1045859036]        mem.c |   94: memrec_find_var(): Found pointer #1 stored at 
0x8049c58 (from 0x8049c58)
+ * [1045859036]        mem.c |  132: memrec_chg_var(): Changing variable pointer 
(0x8049a20, 500 -> 0x8049c80, 1000)
+ * Dumping memory allocation table:
+ * PTR:  1 pointers stored.
+ * PTR:   Pointer |       Filename       |  Line  |  Address |  Size  | Offset  | 00 
01 02 03 04 05 06 07 |  ASCII  
+ * PTR:  
---------+----------------------+--------+----------+--------+---------+-------------------------+---------
+ * PTR:   0000000 |                      |      0 | 0x8049c58 | 000036 | 0000000 | 80 
9c 04 08 e8 03 00 00 | €œ..è...
+ * PTR:   0000000 |                      |      0 | 0x8049c58 | 000036 | 0000008 | 6d 
65 6d 5f 65 78 61 6d | mem_exam
+ * PTR:   0000000 |                      |      0 | 0x8049c58 | 000036 | 0000010 | 70 
6c 65 2e 63 00 00 00 | ple.c...
+ * PTR:   0000000 |                      |      0 | 0x8049c58 | 000036 | 0000018 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000000 |                      |      0 | 0x8049c58 | 000036 | 0000020 | 2e 
00 00 00             | ....    
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000000 | 54 
68 69 73 20 69 73 20 | This is 
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000008 | 61 
20 74 65 73 74 2e 00 | a test..
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000010 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000018 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000020 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000028 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000030 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000038 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000040 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000048 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000050 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000058 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000060 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000068 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000070 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000078 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000080 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000088 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000090 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000098 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000a0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000a8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000b0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000b8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000c0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000c8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000d0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000d8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000e0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000e8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000f0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00000f8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000100 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000108 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000110 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000118 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000120 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000128 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000130 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000138 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000140 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000148 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000150 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000158 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000160 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000168 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000170 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000178 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000180 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000188 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000190 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000198 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001a0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001a8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001b0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001b8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001c0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001c8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001d0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001d8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001e0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001e8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001f0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00001f8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000200 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000208 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000210 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000218 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000220 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000228 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000230 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000238 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000240 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000248 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000250 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000258 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000260 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000268 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000270 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000278 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000280 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000288 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000290 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000298 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002a0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002a8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002b0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002b8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002c0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002c8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002d0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002d8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002e0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002e8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002f0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00002f8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000300 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000308 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000310 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000318 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000320 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000328 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000330 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000338 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000340 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000348 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000350 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000358 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000360 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000368 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000370 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000378 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000380 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000388 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000390 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 0000398 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003a0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003a8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003b0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003b8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003c0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003c8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003d0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003d8 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:   0000001 |        mem_example.c |     46 | 0x8049c80 | 001000 | 00003e0 | 00 
00 00 00 00 00 00 00 | ........
+ * PTR:  Total allocated memory:       1000 bytes
+ * @endcode
+ *
+ * Here is the source code:
+ */
===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/strings.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- strings.c   19 Feb 2003 21:10:37 -0000      1.8
+++ strings.c   24 Feb 2003 03:03:20 -0000      1.9
@@ -21,7 +21,16 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char cvs_ident[] = "$Id: strings.c,v 1.8 2003/02/19 21:10:37 mej Exp $";
+/**
+ * @file strings.c
+ * String Utility Routine Source File
+ *
+ * This file contains string utility functions.
+ *
+ * @author Michael Jennings <[EMAIL PROTECTED]>
+ */
+
+static const char cvs_ident[] = "$Id: strings.c,v 1.9 2003/02/24 03:03:20 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -855,3 +864,29 @@
     }
     return SPIF_CMP_EQUAL;
 }
+
+/**
+ * @defgroup DOXGRP_STRINGS String Utility Routines
+ *
+ * This group of functions/defines/macros provides oft-needed string
+ * manipulation functionality which is not found (at least not
+ * portably) in libc.
+ *
+ * Over the past several years, I have had to implement some simple
+ * string routines which, for whatever reason, are not part of the
+ * Standard C Library.  I have gathered these macros, functions,
+ * etc. into LibAST in the hopes that others might not have to
+ * reimplement them themselves.  Unlike the memory/debugging/object
+ * stuff, there really isn't a well-defined architecture surrounding
+ * these.  They're just utility functions and implementations for
+ * non-portable functionality.
+ *
+ * A small sample program demonstrating some of these routines can be
+ * found @link strings_example.c here @endlink.
+ */
+
+/**
+ * @example strings_example.c
+ * Example code for using the string routines.
+ *
+ */




-------------------------------------------------------
This SF.net email is sponsored by: SlickEdit Inc. Develop an edge.
The most comprehensive and flexible code editor you can use.
Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial.
www.slickedit.com/sourceforge
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to