blob: 1939b73037ae1665d5a79a700df9a3d31f97b90c [file] [log] [blame]
/* do not edit automatically generated by mc from DynamicStrings. */
/* DynamicStrings.def provides a dynamic string type and procedures.
Copyright (C) 2001-2025 Free Software Foundation, Inc.
Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
This file is part of GNU Modula-2.
GNU Modula-2 is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GNU Modula-2 is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
#if !defined (_DynamicStrings_H)
# define _DynamicStrings_H
#include "config.h"
#include "system.h"
# ifdef __cplusplus
extern "C" {
# endif
#include <stdbool.h>
# if !defined (PROC_D)
# define PROC_D
typedef void (*PROC_t) (void);
typedef struct { PROC_t proc; } PROC;
# endif
# include "GSYSTEM.h"
# if defined (_DynamicStrings_C)
# define EXTERN
# else
# define EXTERN extern
# endif
#if !defined (DynamicStrings_String_D)
# define DynamicStrings_String_D
typedef void *DynamicStrings_String;
#endif
/*
InitString - creates and returns a String type object.
Initial contents are, a.
*/
EXTERN DynamicStrings_String DynamicStrings_InitString (const char *a_, unsigned int _a_high);
/*
KillString - frees String, s, and its contents.
NIL is returned.
*/
EXTERN DynamicStrings_String DynamicStrings_KillString (DynamicStrings_String s);
/*
Fin - finishes with a string, it calls KillString with, s.
The purpose of the procedure is to provide a short cut
to calling KillString and then testing the return result.
*/
EXTERN void DynamicStrings_Fin (DynamicStrings_String s);
/*
InitStringCharStar - initializes and returns a String to contain
the C string.
*/
EXTERN DynamicStrings_String DynamicStrings_InitStringCharStar (void * a);
/*
InitStringChar - initializes and returns a String to contain the
single character, ch.
*/
EXTERN DynamicStrings_String DynamicStrings_InitStringChar (char ch);
/*
Mark - marks String, s, ready for garbage collection.
*/
EXTERN DynamicStrings_String DynamicStrings_Mark (DynamicStrings_String s);
/*
Length - returns the length of the String, s.
*/
EXTERN unsigned int DynamicStrings_Length (DynamicStrings_String s);
/*
ConCat - returns String, a, after the contents of, b,
have been appended.
*/
EXTERN DynamicStrings_String DynamicStrings_ConCat (DynamicStrings_String a, DynamicStrings_String b);
/*
ConCatChar - returns String, a, after character, ch,
has been appended.
*/
EXTERN DynamicStrings_String DynamicStrings_ConCatChar (DynamicStrings_String a, char ch);
/*
Assign - assigns the contents of, b, into, a.
String, a, is returned.
*/
EXTERN DynamicStrings_String DynamicStrings_Assign (DynamicStrings_String a, DynamicStrings_String b);
/*
ReplaceChar - returns string s after it has changed all
occurances of from to to.
*/
EXTERN DynamicStrings_String DynamicStrings_ReplaceChar (DynamicStrings_String s, char from, char to);
/*
Dup - duplicate a String, s, returning the copy of s.
*/
EXTERN DynamicStrings_String DynamicStrings_Dup (DynamicStrings_String s);
/*
Add - returns a new String which contains the contents of a and b.
*/
EXTERN DynamicStrings_String DynamicStrings_Add (DynamicStrings_String a, DynamicStrings_String b);
/*
Equal - returns TRUE if String, a, and, b, are equal.
*/
EXTERN bool DynamicStrings_Equal (DynamicStrings_String a, DynamicStrings_String b);
/*
EqualCharStar - returns TRUE if contents of String, s, is
the same as the string, a.
*/
EXTERN bool DynamicStrings_EqualCharStar (DynamicStrings_String s, void * a);
/*
EqualArray - returns TRUE if contents of String, s, is the
same as the string, a.
*/
EXTERN bool DynamicStrings_EqualArray (DynamicStrings_String s, const char *a_, unsigned int _a_high);
/*
Mult - returns a new string which is n concatenations of String, s.
If n<=0 then an empty string is returned.
*/
EXTERN DynamicStrings_String DynamicStrings_Mult (DynamicStrings_String s, unsigned int n);
/*
Slice - returns a new string which contains the elements
low..high-1
strings start at element 0
Slice(s, 0, 2) will return elements 0, 1 but not 2
Slice(s, 1, 3) will return elements 1, 2 but not 3
Slice(s, 2, 0) will return elements 2..max
Slice(s, 3, -1) will return elements 3..max-1
Slice(s, 4, -2) will return elements 4..max-2
*/
EXTERN DynamicStrings_String DynamicStrings_Slice (DynamicStrings_String s, int low, int high);
/*
Index - returns the indice of the first occurance of, ch, in
String, s. -1 is returned if, ch, does not exist.
The search starts at position, o.
*/
EXTERN int DynamicStrings_Index (DynamicStrings_String s, char ch, unsigned int o);
/*
RIndex - returns the indice of the last occurance of, ch,
in String, s. The search starts at position, o.
-1 is returned if ch is not found. The search
is performed left to right.
*/
EXTERN int DynamicStrings_RIndex (DynamicStrings_String s, char ch, unsigned int o);
/*
ReverseIndex - returns the indice of the last occurance of ch
in String s. The search starts at position o
and searches from right to left. The start position
may be indexed negatively from the right (-1 is the
last index).
The return value if ch is found will always be positive.
-1 is returned if ch is not found.
*/
EXTERN int DynamicStrings_ReverseIndex (DynamicStrings_String s, char ch, int o);
/*
RemoveComment - assuming that, comment, is a comment delimiter
which indicates anything to its right is a comment
then strip off the comment and also any white space
on the remaining right hand side.
It leaves any white space on the left hand side
alone.
*/
EXTERN DynamicStrings_String DynamicStrings_RemoveComment (DynamicStrings_String s, char comment);
/*
RemoveWhitePrefix - removes any leading white space from String, s.
A new string is returned.
*/
EXTERN DynamicStrings_String DynamicStrings_RemoveWhitePrefix (DynamicStrings_String s);
/*
RemoveWhitePostfix - removes any leading white space from String, s.
A new string is returned.
*/
EXTERN DynamicStrings_String DynamicStrings_RemoveWhitePostfix (DynamicStrings_String s);
/*
ToUpper - returns string, s, after it has had its lower case
characters replaced by upper case characters.
The string, s, is not duplicated.
*/
EXTERN DynamicStrings_String DynamicStrings_ToUpper (DynamicStrings_String s);
/*
ToLower - returns string, s, after it has had its upper case
characters replaced by lower case characters.
The string, s, is not duplicated.
*/
EXTERN DynamicStrings_String DynamicStrings_ToLower (DynamicStrings_String s);
/*
CopyOut - copies string, s, to a.
*/
EXTERN void DynamicStrings_CopyOut (char *a, unsigned int _a_high, DynamicStrings_String s);
/*
char - returns the character, ch, at position, i, in String, s.
As Slice the index can be negative so:
char(s, 0) will return the first character
char(s, 1) will return the second character
char(s, -1) will return the last character
char(s, -2) will return the penultimate character
a nul character is returned if the index is out of range.
*/
EXTERN char DynamicStrings_char (DynamicStrings_String s, int i);
/*
string - returns the C style char * of String, s.
*/
EXTERN void * DynamicStrings_string (DynamicStrings_String s);
/*
InitStringDB - the debug version of InitString.
*/
EXTERN DynamicStrings_String DynamicStrings_InitStringDB (const char *a_, unsigned int _a_high, const char *file_, unsigned int _file_high, unsigned int line);
/*
InitStringCharStarDB - the debug version of InitStringCharStar.
*/
EXTERN DynamicStrings_String DynamicStrings_InitStringCharStarDB (void * a, const char *file_, unsigned int _file_high, unsigned int line);
/*
InitStringCharDB - the debug version of InitStringChar.
*/
EXTERN DynamicStrings_String DynamicStrings_InitStringCharDB (char ch, const char *file_, unsigned int _file_high, unsigned int line);
/*
MultDB - the debug version of MultDB.
*/
EXTERN DynamicStrings_String DynamicStrings_MultDB (DynamicStrings_String s, unsigned int n, const char *file_, unsigned int _file_high, unsigned int line);
/*
DupDB - the debug version of Dup.
*/
EXTERN DynamicStrings_String DynamicStrings_DupDB (DynamicStrings_String s, const char *file_, unsigned int _file_high, unsigned int line);
/*
SliceDB - debug version of Slice.
*/
EXTERN DynamicStrings_String DynamicStrings_SliceDB (DynamicStrings_String s, int low, int high, const char *file_, unsigned int _file_high, unsigned int line);
/*
PushAllocation - pushes the current allocation/deallocation lists.
*/
EXTERN void DynamicStrings_PushAllocation (void);
/*
PopAllocation - test to see that all strings are deallocated since
the last push. Then it pops to the previous
allocation/deallocation lists.
If halt is true then the application terminates
with an exit code of 1.
*/
EXTERN void DynamicStrings_PopAllocation (bool halt);
/*
PopAllocationExemption - test to see that all strings are
deallocated, except string e since
the last push.
Post-condition: it pops to the previous
allocation/deallocation lists.
If halt is true then the application
terminates with an exit code of 1.
The string, e, is returned unmodified,
*/
EXTERN DynamicStrings_String DynamicStrings_PopAllocationExemption (bool halt, DynamicStrings_String e);
# ifdef __cplusplus
}
# endif
# undef EXTERN
#endif