blob: 471cd999f43cf3d5a27227ff227bbaee880dac84 [file] [log] [blame]
/******************************************************************************
*(C) Copyright 2014 Marvell International Ltd.
* All Rights Reserved
******************************************************************************/
/*******************************************************************************
*
* Filename: String.c
*
* Authors: Boaz Sommer
*
* Description: A String class - holds a string
*
* HISTORY:
*
*
*
* Notes:
*
******************************************************************************/
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "String.h"
#include "mgui_utils.h"
typedef struct S_STRING_PRIV
{
char *text;
int alloc_length;
}STRING_PRIV;
static void StringSetLen (STRING_PRIV *ptp, int len)
{
char *tmp_str;
if (ptp) {
if (ptp->text)
{
if (len > 0)
{
tmp_str = strdup(ptp->text);
free(ptp->text);
ptp->text = (char *)malloc(len + 1);
ptp->alloc_length = len;
(void)tmp_str;
//strcpy(ptp->text, tmp_str);
}
else
{
free(ptp->text);
ptp->text = NULL;
ptp->alloc_length = 0;
}
}
else if (len > 0)
{
ptp->text = (char *)malloc(len + 1);
ptp->alloc_length = len;
}
}
}
STRING *StringInit (STRING *pt)
{
STRING_PRIV *ptp = (STRING_PRIV *)pt;
ptp = (STRING_PRIV *)calloc(1, sizeof(*ptp));
ptp->text = NULL;
ptp->alloc_length = 0;
return (STRING *)ptp;
}
void StringDeinit (STRING *pt)
{
STRING_PRIV *ptp = (STRING_PRIV *)pt;
if (ptp)
free(ptp);
}
void StringSet (STRING *pt, const char *s)
{
STRING_PRIV *ptp = (STRING_PRIV *)pt;
int src_len;
if (ptp)
if (s)
{
src_len = strlen(s);
if (src_len > ptp->alloc_length + 1)
StringSetLen(ptp, src_len);
strncpy(ptp->text, s, src_len);
ptp->text[src_len] = 0;
}
}
char *StringGet (STRING *pt)
{
STRING_PRIV *ptp = (STRING_PRIV *)pt;
if (ptp)
return ptp->text;
else
return NULL;
}