diff options
Diffstat (limited to 'src/ivyargument.c')
-rwxr-xr-x | src/ivyargument.c | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/src/ivyargument.c b/src/ivyargument.c deleted file mode 100755 index 5d398d9..0000000 --- a/src/ivyargument.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Ivy, C interface - * - * Copyright (C) 1997-2000 - * Centre d'Études de la Navigation Aérienne - * - * Argument message comtent - * - * Authors: François-Régis Colin <fcolin@cena.fr> - * - * $Id$ - * - * Please refer to file version.h for the - * copyright notice regarding this software - */ -/* Module de gestion de la syntaxe des messages Ivy */ - -#include <stdio.h> -#include <sys/types.h> -#include <time.h> -#include <stdlib.h> -#include <memory.h> -#include <string.h> - -#ifdef WIN32 -#include <crtdbg.h> -#include <windows.h> -#else -#include <arpa/inet.h> -#include <sys/time.h> -#include <unistd.h> -#include <netdb.h> -#endif - - -#include "list.h" -#include "ivyargument.h" - - - -struct _argument { - /* childrens */ - struct _argument *next; - struct _argument *childrens; - /* arg value */ - int value_len; - const void *value; - }; - -IvyArgument IvyArgumentNew( int len, const void * value ) -{ - IvyArgument arg = malloc( sizeof( *arg ) ); - arg->value_len = len; - arg->value = value; - arg->next = 0; - arg->childrens = 0; - return arg; -} -void IvyArgumentFree( IvyArgument arg ) -{ - IvyArgument p; - IvyArgument psuiv; - IVY_LIST_EACH_SAFE( arg->childrens, p, psuiv ) - { - IvyArgumentFree(p); - } - free( arg ); -} -void IvyArgumentGetValue( IvyArgument arg, int * len, const void **val ) -{ - *len = arg->value_len; - *val = arg->value; -} -IvyArgument IvyArgumentGetChildrens( IvyArgument arg ) -{ - return arg->childrens; -} -IvyArgument IvyArgumentGetNextChild( IvyArgument arg ) -{ - return arg->next; -} -IvyArgument IvyAddChildValue( IvyArgument arg, int childvaluelen, const void* childvalue ) -{ - /* ADD Child to the beginning of the list */ - IvyArgument child; - IVY_LIST_ADD( arg->childrens, child ) - if ( child ) - { - child->value_len = childvaluelen; - child->value = childvalue; - } - return child; -} -void IvyAddChild( IvyArgument arg, IvyArgument child ) -{ - /* ADD Child to the beginning of the list */ - child->next = arg->childrens; - arg->childrens = child; -} -int IvyArgumentGetChildCount( IvyArgument arg ) -{ - IvyArgument p; - int count = 0; - IVY_LIST_EACH( arg->childrens, p ) - { - count++; - } - return count; -} -IvyArgument IvyArgumentDeserialize( int buf_len, void* buffer, int * buf_adv ) -{ - int i; - void *ptr_end = buffer; - int adv; - unsigned short value_len; - unsigned short nbchild; - IvyArgument arg; - IvyArgument child; - - adv = 0; - arg = IvyArgumentNew( 0, 0); - /* reading value */ - value_len = ntohs( *((unsigned short *) ptr_end)++ ); - if ( value_len ) - { - arg->value_len = value_len; - arg->value = ptr_end; - ((unsigned char *)ptr_end) += value_len; - } - /* reading child */ - nbchild = ntohs( *((unsigned short *) ptr_end)++ ); - - if ( nbchild ) - { - for ( i= 0; i < nbchild; i++ ) - { - child = IvyArgumentDeserialize( buf_len - ((unsigned char *)ptr_end - (unsigned char *)buffer) , ptr_end, &adv ); - IvyAddChild( arg, child ); - ((unsigned char *)ptr_end) += adv; - } - } - *buf_adv += (unsigned char *)ptr_end - (unsigned char *)buffer; -#ifdef DEBUG - printf( "IvyArgumentDeserialize value='%.*s' nbchild=%d size=%d\n",arg->value_len, (char*)arg->value, nbchild, *buf_adv); -#endif - return arg; -} -int IvyArgumentSerialize(IvyArgument arg, int *buf_len, void **buffer, int offset) -{ - int nb_child; - IvyArgument child; - void *ptr; - - /* check buffer space */ - if ( (*buf_len - offset) < (2 * sizeof( unsigned short ) + arg->value_len) ) - { - *buf_len += 4096; - *buffer = realloc( *buffer, *buf_len ); - } - ptr = (unsigned char*)(*buffer) + offset; - /* writing value */ - *((unsigned short*)ptr)++ = htons( (unsigned short)arg->value_len ); - if ( arg->value_len ) - { - memcpy( ptr, arg->value, arg->value_len ); - (unsigned char*)ptr += arg->value_len; - } - /* writing child */ - nb_child = IvyArgumentGetChildCount( arg ); - *((unsigned short*)ptr)++ = htons( (unsigned short)nb_child ); - IVY_LIST_EACH ( arg->childrens, child ) - { - (unsigned char*)ptr += IvyArgumentSerialize( child, buf_len, buffer, (unsigned char*)ptr - (unsigned char*)*buffer ); - } -#ifdef DEBUG - printf( "IvyArgumentSerialize value='%.*s' nbchild=%d buff size=%d\n",arg->value_len, (char*)arg->value, nb_child, (unsigned char*)ptr - (unsigned char*)*buffer - offset); -#endif - return (unsigned char*)ptr - (unsigned char*)*buffer - offset; -} - |