view src/ui3/mfw/mfw_str.c @ 639:026c98f757a6

tpudrv12.h & targets/gtm900.h: our current support is for MGC2GSMT version only As it turns out, there exist two different Huawei-made hw platforms both bearing the marketing name GTM900-B: one is MG01GSMT, the other is MGC2GSMT. The two are NOT fw-compatible: aside from flash chip differences which should be handled by autodetection, the two hw platforms are already known to have different RFFEs with different control signals, and there may be other differences not yet known. Our current gtm900 build target is for MGC2GSMT only; we do not yet have a specimen of MG01GSMT on hand, hence no support for that version will be possible until and unless someone provides one.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 30 Jan 2020 18:19:01 +0000
parents e8ddbb0837ed
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;
}