view src/aci2/mfw/mfw_str.c @ 701:35e7f9d0379f

targets: add TARGET_HAS_BUZZER to c11x, c139 and dsample This new target config preprocessor symbol was introduced in Tourmaline in connection with the new approach to playing buzzer melodies via PWT, properly omitting the responsible code on targets where BU output controls the vibrator instead. That code is not present in Magnetite and we have no plans to backport it here, but target header files should be kept consistent between the two trees, especially given that we plan to support FC Venus target in Magnetite.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 26 Mar 2022 19:51:34 +0000
parents 93999a60b835
children
line wrap: on
line source

/*
+--------------------------------------------------------------------+
| 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;
}