diff src/ui/mfw/mfw_str.c @ 3:67bfe9f274f6

src/ui: import of src/ui3 from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:33:10 +0000
parents
children 92abb46dc1ba
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ui/mfw/mfw_str.c	Fri Oct 16 06:33:10 2020 +0000
@@ -0,0 +1,235 @@
+/*
++--------------------------------------------------------------------+
+| PROJECT: MMI-Framework (8417)         $Workfile:: mfw_str.c       $|
+| $Author:: Es  $ CONDAT GmbH           $Revision:: 1               $|
+| CREATED: 03.08.00                     $Modtime:: 03.08.00 18:57   $|
+| STATE  : code                                                      |
++--------------------------------------------------------------------+
+
+   MODULE  : MFW_STR
+
+   PURPOSE : string handling functions
+
+   EXPORT  :
+
+   TO DO   :
+
+   $History:: mfw_str.c                                             $
+*/
+
+#define ENTITY_MFW
+
+#if defined (NEW_FRAME)
+
+#include "typedefs.h"
+#include "vsi.h"
+#include "custom.h"
+#include "gsm.h"
+
+#else
+
+#include "STDDEFS.H"
+#include "custom.h"
+#include "gsm.h"
+#include "vsi.h"
+
+#endif
+
+#include "mfw_mfw.h"
+#include "mfw_sys.h"
+#include "mfw_str.h"
+
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrChr          |
++--------------------------------------------------------------------+
+
+  PURPOSE : find first occurence of char in string
+
+*/
+
+MfwChar* mfwStrChr (MfwChar* p, int c)
+{
+    while (*p && *p != c)
+        p++;
+
+    return (*p) ? p : 0;
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrLen          |
++--------------------------------------------------------------------+
+
+  PURPOSE : compute length of string
+
+*/
+
+int mfwStrLen (MfwChar *s)
+{
+    int i = 0;
+
+    while (*s++)
+        i++;
+        
+    return i;
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrSiz          |
++--------------------------------------------------------------------+
+
+  PURPOSE : get length of counted string
+
+*/
+
+int mfwStrSiz (MfwStr *s)
+{
+#ifdef MFW_COUNTED_STRINGS
+    return s->len;
+#else
+    return mfwStrLen(s);
+#endif
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrAt           |
++--------------------------------------------------------------------+
+
+  PURPOSE : get substring of counted string
+
+*/
+
+MfwChar* mfwStrAt (MfwStr *s, int off)
+{
+#ifdef MFW_COUNTED_STRINGS
+    return s->s+off;
+#else
+    return s+off;
+#endif
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrCut          |
++--------------------------------------------------------------------+
+
+  PURPOSE : cut off (shorten) counted string
+
+*/
+
+MfwChar* mfwStrCut (MfwStr* s, int n)
+{
+#ifdef MFW_COUNTED_STRINGS
+    s->len-=n;
+    s->s[s->len]=0;
+    return s->s;
+#else
+    s[mfwStrLen(s)-n] = 0;
+    return s;
+#endif
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrMov          |
++--------------------------------------------------------------------+
+
+  PURPOSE : move (copy) a string into a counted string (override)
+
+*/
+
+MfwChar* mfwStrMov (MfwStr* d, int o, MfwChar* s)
+{
+#ifdef MFW_COUNTED_STRINGS
+    int i = mfwStrLen(s);
+    memcpy(d->s+o,s,i*sizeof(MfwChar));
+    d->len = i + o;
+    d->s[o+i] = 0;
+    return d->s;
+#else
+    int i = mfwStrLen(s);
+    memcpy(d+o,s,i*sizeof(MfwChar));
+    d[o+i] = 0;
+    return d;
+#endif
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrIns          |
++--------------------------------------------------------------------+
+
+  PURPOSE : insert (copy) a string into a counted string (expand)
+
+*/
+
+MfwChar* mfwStrIns (MfwStr* d, int o, MfwChar* s)
+{
+#ifdef MFW_COUNTED_STRINGS
+    int i = mfwStrLen(s);
+    memmove(d->s+o+i,d->s+o,(mfwStrSiz(d)-o)*sizeof(MfwChar));
+    memmove(d->s+o,s,i*sizeof(MfwChar));
+    d->len += i;
+    return d->s;
+#else
+    int i = mfwStrLen(s);
+    memmove(d+o+i,d+o,(mfwStrSiz(d)-o)*sizeof(MfwChar));
+    memmove(d+o,s,i*sizeof(MfwChar));
+    return d;
+#endif
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrApp          |
++--------------------------------------------------------------------+
+
+  PURPOSE : append string to counted string
+
+*/
+
+MfwChar* mfwStrApp (MfwStr* s, MfwChar* c)
+{
+    return mfwStrMov(s,mfwStrSiz(s),c);
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : MMI-Framework (8417)        MODULE  : MFW_STR            |
+| STATE   : code                        ROUTINE : mfwStrRChr         |
++--------------------------------------------------------------------+
+
+  PURPOSE : find last occurence of char in string
+
+*/
+
+MfwChar* mfwStrRChr (MfwChar* p, int c)
+{
+    int i = mfwStrLen(p);
+    
+    while (i && p[i-1] != c)
+        i--;
+
+    return (i) ? p + i - 1 : 0;
+}