| /* 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 |