Generic datatype
/******************************************************************************
New-Era Datastructure
by Daipayan Bhowal
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct GenType
{
char size;
void *payload;
} generic;
typedef generic* general_t;
typedef enum ty
{
INT,
CHAR,
SHORT,
FLOAT,
DOUBLE,
LONG,
LONG_LONG,
STRUCT
}type_t;
#define asg(data) assign(&data,sizeof(data))
general_t assign(void *ptr,size_t sz)
{
general_t t = (general_t) malloc(sizeof(generic));
t->size = sz;
t->payload = malloc(sz);
memcpy(t->payload,ptr,sz);
return t;
}
void derefprintf(general_t g,type_t type)
{
switch(type)
{
case INT:
printf("%d\n", *(int*)g->payload);
break;
case CHAR:
printf("%c\n", *(char*)g->payload);
break;
case SHORT:
printf("%hi\n", *(short*)g->payload);
break;
case FLOAT:
printf("%f\n", *(float*)g->payload);
break;
case DOUBLE:
printf("%f\n", *(double*)g->payload);
break;
case LONG:
printf("%l\n", *(long*)g->payload);
break;
case LONG_LONG:
printf("%ll\n", *(long long*)g->payload);
break;
}
}
void main()
{
int d = 5;
general_t b = asg(d);
derefprintf(b,INT);
}
Comments
Post a Comment