aboutsummaryrefslogtreecommitdiff
path: root/src/SString.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/SString.h')
-rw-r--r--src/SString.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/src/SString.h b/src/SString.h
new file mode 100644
index 0000000..1ff5445
--- /dev/null
+++ b/src/SString.h
@@ -0,0 +1,125 @@
+ /*@@
+ @file SString.h
+ @date 02.04.2004
+ @author Steve White
+ @desc Module for generic operations on strings
+ @enddesc
+ @version $Header$
+ @@*/
+#ifndef _SSTRING_H
+#define _SSTRING_H
+
+#include <stddef.h>
+
+typedef enum { FALSE, TRUE } SSBOOL;
+typedef char SSCHAR;
+
+typedef struct String_tag String;
+ /* String creation and deletion */
+String *String_New();
+String *String_Copy( const String *other );
+String *String_Make( const SSCHAR *other );
+void String_Delete( String * );
+ /* Copying */
+String * StringSet( String *dest, const String *source );
+String * StringSetSubString( String *dest, const String *source,
+ size_t first, size_t last );
+ /* Number of characters in string */
+size_t StringLength( const String * );
+ /* Accessors */
+SSCHAR StringNthChar( const String *, size_t n );
+String * StringSetNthChar( String *, size_t n, SSCHAR c );
+String * StringTruncate( String *, size_t n );
+ /* Conversion to and from C string */
+String * StringSetToCString( String *s, const SSCHAR *c_str );
+String * StringConcatCString( String *s, const SSCHAR *c_str );
+String * StringInsertCString( String * s, const char * c_str,
+ size_t position );
+String * StringSetToBuffer( String *s, const SSCHAR *buf,
+ size_t len );
+const SSCHAR * StringGetBuffer( const String * s );
+ /* Searching */
+SSBOOL StringFindSubString( const String *s, const String *substr,
+ size_t *position );
+SSBOOL StringFindChar( const String *s, SSCHAR theChar,
+ size_t *position );
+ /* Comparison */
+SSBOOL StringEquals( const String *a, const String *b );
+int StringCompare( const String *a, const String *b );
+ /* Insertion and Concatenation */
+String * StringInsert( String * s, const String * other, size_t pos );
+String * StringInsertChar( String * s, SSCHAR c, size_t pos );
+String * StringDeleteChar( String * s, size_t pos );
+String * StringDeleteRange( String * s, size_t begin, size_t end );
+String * StringConcat( String * s, const String * other);
+ /* Trim */
+String * StringTrimHead( const String *s, size_t pos );
+String * StringTrimTail( const String *s, size_t pos );
+ /* Printing to stdout */
+void StringPrint( const String *str );
+void StringFormatPrint( const String *str, const SSCHAR *format );
+ /* For line reading and writing */
+void String_SetLineEndCharacter( SSCHAR c );
+ /* String conversions */
+String * StringConcatDecimal( String *str, long int d );
+String * StringConcatHex( String *str, long int d );
+String * StringConcatOctal( String *str, long int d );
+String * StringConcatDouble( String *str, double d );
+String * StringConcatFormattedDouble( String *str, int ndigits,
+ int ndecimals, double d );
+
+/* A poor man's namespace for the String module */
+#ifdef STRING_NAMESPACE
+
+#define Set( a, b ) \
+ StringSet( a, b )
+#define SetToCString( a, b ) \
+ StringSetToCString( a, b )
+#define InsertCString( a, b, c ) \
+ StringInsertCString( a, b, c )
+#define ConcatCString( a, b ) \
+ StringConcatCString( a, b )
+#define SetToBuffer( a, b ) \
+ StringSetToBuffer( a, b )
+#define GetBuffer( a ) \
+ StringGetBuffer( a )
+#define Length( p ) \
+ StringLength( p )
+#define NthChar( s, n ) \
+ StringNthChar( s, n )
+#define SetNthChar( s, n, c ) \
+ StringSetNthChar( s, n, c )
+#define Truncate( s, n ) \
+ StringTruncate( s, n )
+#define FindSubString( s, c, p ) \
+ StringFindSubString( s, c, p )
+#define FindChar( s, c, p ) \
+ StringFindChar( s, c, p )
+#define Compare( a, b ) \
+ StringCompare( a, b )
+#define AreEqual( a, b ) \
+ StringsAreEqual( a, b )
+#define Insert( a, b, p ) \
+ StringInsert( a, b, p )
+#define InsertChar( a, b, p ) \
+ StringInsertChar( a, b, p )
+#define Concat( a, b ) \
+ StringConcat( a, b )
+#define Print( a ) \
+ StringPrint( a )
+#define FormatPrint( a, s ) \
+ StringFormatPrint( a, s )
+#define ConcatDecimal( a, s ) \
+ StringConcatDecimal( a, s )
+#define ConcatHex( a, s ) \
+ StringConcatHex( a, s )
+#define ConcatOctal( a, s ) \
+ StringConcatOctal( a, s )
+#define ConcatDouble( a, s ) \
+ StringConcatDouble( a, s )
+#define ConcatFormattedDouble( a, f, f2, s ) \
+ StringConcatFormattedDouble( a, f, f2, s )
+
+#endif
+
+#endif