Example #1
0
void cg_list_clear(CgList *headList, CG_LIST_DESTRUCTORFUNC destructorFunc)
{
    CgList *list;

    cg_log_debug_l5("Entering...\n");

    if (NULL == headList)
        return;

    list = cg_list_next(headList);
    while(list != NULL) {
        cg_list_remove(list);
        //Theo Beisch: use destructorFunc or just free(listElement)
        if (destructorFunc != NULL){
            destructorFunc(list);
        } else {
            free(list);
        }
        list = cg_list_next(headList);
    }

    /*** list header must be deleted by user ***/
    /* free(headList); */

    cg_log_debug_l5("Leaving...\n");
}
Example #2
0
char *cg_string_replace(CgString *str, char *fromStr[], char *toStr[], size_t fromStrCnt)
{
	char *orgValue = NULL;
	size_t orgValueLen = 0;
	int n = 0;
	int copyPos = 0;
	size_t *fromStrLen = NULL;
	CgString *repValue = NULL;
	BOOL isReplaced = FALSE;

	cg_log_debug_l5("Entering...\n");

	if (NULL == str )
		return NULL;
	
	repValue = cg_string_new();
	
	fromStrLen = (size_t *)malloc(sizeof(size_t) * fromStrCnt);

	if ( NULL == fromStrLen )
	{
        cg_string_delete(repValue);
		cg_log_debug_s("Memory allocation failure!\n");
		return NULL;
	}
	
	for (n=0; n<fromStrCnt; n++)
		fromStrLen[n] = cg_strlen(fromStr[n]);
	
	orgValue = cg_string_getvalue(str);
	orgValueLen = cg_string_length(str);
	
	copyPos = 0;
	while (copyPos<orgValueLen) {
		isReplaced = FALSE;
		for (n=0; n<fromStrCnt; n++) {
			if (strncmp(fromStr[n], orgValue + copyPos,  fromStrLen[n]) == 0) {
				cg_string_addvalue(repValue, toStr[n]);
				copyPos += fromStrLen[n];
				isReplaced = TRUE;
				continue;
			}
		}
		if (isReplaced == TRUE)
			continue;
		cg_string_naddvalue(repValue, orgValue + copyPos, 1);
		copyPos++;
	}
	
	free(fromStrLen);

	cg_string_setvalue(str, cg_string_getvalue(repValue));	

	cg_string_delete(repValue);
		
	cg_log_debug_l5("Leaving...\n");

	return cg_string_getvalue(str);
}
Example #3
0
char *cg_string_addvalue(CgString *str, const char *value)
{
	cg_log_debug_l5("Entering...\n");

	cg_log_debug_l5("Leaving...\n");

	return cg_string_naddvalue(str, value, cg_strlen(value));
}
Example #4
0
char *cg_string_getvalue(CgString *str)
{
	cg_log_debug_l5("Entering...\n");

	cg_log_debug_l5("Leaving...\n");

	return (NULL != str) ? str->value : NULL;
}
Example #5
0
void cg_string_setlongvalue(CgString *str, long value)
{
	char buf[CG_STRING_LONG_BUFLEN];

	cg_log_debug_l5("Entering...\n");

	cg_string_setvalue(str, cg_long2str(value, buf, sizeof(buf)));

	cg_log_debug_l5("Leaving...\n");
}
Example #6
0
void cg_string_setintvalue(CgString *str, int value)
{
	char buf[CG_STRING_INTEGER_BUFLEN];

	cg_log_debug_l5("Entering...\n");

	cg_string_setvalue(str, cg_int2str(value, buf, sizeof(buf)));

	cg_log_debug_l5("Leaving...\n");
}
Example #7
0
void cg_string_setvalue(CgString *str, const char *value)
{
	cg_log_debug_l5("Entering...\n");

	if (NULL != str) {
		if (value != NULL)
			cg_string_setnvalue(str, value, cg_strlen(value));
	}
	
	cg_log_debug_l5("Leaving...\n");
}
Example #8
0
size_t cg_string_getmemorysize(CgString *str)
{
	cg_log_debug_l5("Entering...\n");

	if (NULL == str)
		return 0;

	cg_log_debug_l5("Leaving...\n");

	return str->memSize;
}
Example #9
0
void cg_string_delete(CgString *str)
{
	cg_log_debug_l5("Entering...\n");

	if (NULL != str) {
		cg_string_clear(str);
		free(str);
	}
	
	cg_log_debug_l5("Leaving...\n");
}
Example #10
0
char *cg_string_addrepvalue(CgString *str, const char *value, size_t repeatCnt)
{
	int n;
	cg_log_debug_l5("Entering...\n");

	for (n = 0; n < repeatCnt; n++)
		cg_string_addvalue(str, value);

	cg_log_debug_l5("Leaving...\n");

	return cg_string_getvalue(str);
}
Example #11
0
void cg_list_node_init(CgList *list)
{
    cg_log_debug_l5("Entering...\n");

    if (NULL == list)
        return;

    list->headFlag = FALSE;
    list->prev = list->next = list;

    cg_log_debug_l5("Leaving...\n");
}
Example #12
0
void cg_string_setpointervalue(CgString *str, char *value, size_t len)
{
	cg_log_debug_l5("Entering...\n");

	if (NULL != str) {
		cg_string_clear(str);
		str->value = value;
		str->valueSize = len;
		str->memSize = str->valueSize + 1;
	}
	
	cg_log_debug_l5("Leaving...\n");
}
Example #13
0
char *cg_string_naddrepvalue(CgString *str, char *value, int valueLen, int repeatCnt)
{
	int n;

	cg_log_debug_l5("Entering...\n");

	for (n = 0; n < repeatCnt; n++)
		cg_string_naddvalue(str, value, valueLen);

	cg_log_debug_l5("Leaving...\n");

	return cg_string_getvalue(str);
}
Example #14
0
size_t cg_string_length(CgString *str)
{
	cg_log_debug_l5("Entering...\n");

	if (NULL == str)
		return 0;

	if (str->value == NULL)
		return 0;

	cg_log_debug_l5("Leaving...\n");

	return str->valueSize;
}
Example #15
0
void cg_string_clear(CgString *str)
{
	cg_log_debug_l5("Entering...\n");
	
	if (NULL != str) {
		if (str->value != NULL) {
			free(str->value);
			str->value = NULL;
			str->memSize = 0;
			str->valueSize = 0;
		}
	}

	cg_log_debug_l5("Leaving...\n");
}
Example #16
0
void cg_list_remove(CgList *list)
{
    cg_log_debug_l5("Entering...\n");

    if (NULL == list)
        return;

    if ((NULL == list->prev) || (NULL == list->next))
        return;

    list->prev->next = list->next;
    list->next->prev = list->prev;
    list->prev = list->next = list;

    cg_log_debug_l5("Leaving...\n");
}
Example #17
0
void cg_list_add(
CgList *headList,
CgList *list)
{
    cg_log_debug_l5("Entering...\n");

    if ((NULL == headList) || (NULL == list))
        return;

    if (NULL == headList->prev)
        return;

    cg_list_insert(headList->prev, list);

    cg_log_debug_l5("Leaving...\n");
}
Example #18
0
void cg_list_insert(
CgList *prevList,
CgList *list)
{
    cg_log_debug_l5("Entering...\n");

    if ((NULL == prevList) || (NULL == list))
        return;

    list->prev = prevList;
    list->next = prevList->next;
    prevList->next->prev = list;
    prevList->next = list;

    cg_log_debug_l5("Leaving...\n");
}
Example #19
0
char *cg_string_naddvalue(CgString *str, const char *value, size_t valueLen)
{
	char *newValue = NULL;
	size_t newMemSize = 0;

	cg_log_debug_l5("Entering...\n");

	if (NULL == str)
		return NULL;

	if (value == NULL || valueLen <= 0)
	{
		/* Empty string, nothing to add */
		return cg_string_getvalue(str);
	}

	/* Check, if we need to allocate memory for the new data */
	newMemSize = str->valueSize + valueLen + 1;
	if (newMemSize > str->memSize || str->value == NULL)
	{
		/* realloc also some extra in order to avoid multiple reallocs */
		newMemSize += CG_STRING_REALLOC_EXTRA;
		newValue = realloc(str->value, newMemSize * sizeof(char));

		if (newValue == NULL)
		{
			/* Memory allocation failed, bail out */
			return NULL;
		}

		str->memSize = newMemSize;
		str->value = newValue;
	}

	/* memcpy works better with non-zero-terminated data
	   than strncpy */
	memcpy(str->value + str->valueSize, value, valueLen);

	str->valueSize += valueLen;
	
	/* In case this is a string, append a termination character */
	str->value[str->valueSize] = '\0';

	cg_log_debug_l5("Leaving...\n");

	return cg_string_getvalue(str);
}
Example #20
0
int cg_list_size(CgList *headList)
{
    CgList *list;
    int listCnt;

    cg_log_debug_l5("Entering...\n");

    if (NULL == headList)
        return 0;

    listCnt = 0;
    for (list = cg_list_next(headList); list != NULL; list = cg_list_next(list))
        listCnt++;

    cg_log_debug_l5("Leaving...\n");

    return listCnt;
}
Example #21
0
CgList *cg_list_next(
CgList *list)
{
    cg_log_debug_l5("Entering...\n");

    if (NULL == list)
        return NULL;

    if (NULL == list->next)
        return NULL;

    if (list->next->headFlag == TRUE)
        return NULL;

    cg_log_debug_l5("Leaving...\n");

    return list->next;
}
Example #22
0
CgList *cg_list_prev(
CgList *list)
{
    cg_log_debug_l5("Entering...\n");

    if (NULL == list)
        return NULL;

    if (NULL == list->prev)
        return NULL;

    if (list->prev->headFlag == TRUE)
        return NULL;

    cg_log_debug_l5("Leaving...\n");

    return list->prev;
}
Example #23
0
CgList *cg_list_prev_circular (
CgList *list)
{
    cg_log_debug_l5("Entering...\n");

    if (NULL == list)
        return NULL;

    if (NULL == list->prev)
        return NULL;

    if (list->prev->headFlag)
        list = list->prev;

    cg_log_debug_l5("Leaving...\n");

    return list->prev;
}
Example #24
0
CgString *cg_string_new()
{
	CgString *str;

	cg_log_debug_l5("Entering...\n");

	str = (CgString *)malloc(sizeof(CgString));

	if (NULL != str) {
		str->value = NULL;
		str->memSize = 0;
		str->valueSize = 0;
	}

	cg_log_debug_l5("Leaving...\n");

	return str;
}
Example #25
0
CgList *cg_list_get(CgList *headList, int index)
{
    CgList *list;
    int n;

    cg_log_debug_l5("Entering...\n");

    if (NULL == headList)
        return NULL;

    list = cg_list_next(headList);
    for (n=0; n<index; n++) {
        if (NULL == list)
            break;
        list = cg_list_next(list);
    }

    cg_log_debug_l5("Leaving...\n");

    return list;
}
Example #26
0
void cg_string_setnvalue(CgString *str, const char *value, size_t len)
{
	cg_log_debug_l5("Entering...\n");

	if (NULL != str) {
		cg_string_clear(str);
		if (value != NULL) {
			str->valueSize = len;
			str->memSize = str->valueSize + 1;
			str->value = (char *)malloc(str->memSize * sizeof(char));

			if ( NULL == str->value ) {
				cg_log_debug_s("Memory allocation failure!\n");
				return;
			}

			/* memcpy works better with non-zero-terminated data than strncpy */
			memcpy(str->value, value, len);
			str->value[len] = '\0';
		}
	}

	cg_log_debug_l5("Leaving...\n");
}