00001 #define _TASKDATA_C_
00002
00003 #include <stdlib.h>
00004 #include "TaskData.h"
00005 #include "cser.h"
00006
00007 TaskData *createTaskData () {
00008 TaskData *taskData = (TaskData *) calloc(1, sizeof(TaskData));
00009
00010 taskData->valSz = 0;
00011 taskData->val = NULL;
00012
00013 return taskData;
00014 }
00015
00016 void destroyTaskData(TaskData *taskData) {
00017 if(taskData->valSz > 0) {
00018 free(taskData->val);
00019 }
00020
00021 free(taskData);
00022 }
00023
00024 void *readTaskData(FILE *inputFile) {
00025 int valSz;
00026 TaskData *taskData = (TaskData *) malloc(sizeof(TaskData));
00027
00028 READ_BEGIN(inputFile);
00029
00030
00031 READ_NUM("valSz", valSz);
00032 taskData->valSz = valSz;
00033
00034 if (valSz > 0) {
00035 taskData->val = calloc(taskData->valSz, sizeof(void));
00036 READ_BYTES(inputFile, taskData->val, taskData->valSz);
00037 } else {
00038 taskData->val = NULL;
00039 }
00040
00041 READ_END
00042
00043 return (void *) taskData;
00044 }
00045
00046 int writeTaskData(FILE *outputFile, void *taskData) {
00047 TaskData *pTaskData = (TaskData *) taskData;
00048
00049
00050 WRITE_NUM(outputFile, "valSz", pTaskData->valSz);
00051
00052 if (pTaskData->valSz > 0) {
00053
00054 WRITE_BYTES(outputFile, pTaskData->val, pTaskData->valSz);
00055 }
00056
00057 return 1;
00058 }
00059
00060 int getTaskDataSz(TaskData *taskData) {
00061 return taskData->valSz;
00062 }
00063
00064 void putTaskDataSz(TaskData *taskData, int valSz) {
00065 taskData->valSz = valSz;
00066 }
00067
00068 void *getTaskDataVal(TaskData *taskData) {
00069 return taskData->val;
00070 }
00071
00072 void putTaskDataVal(TaskData *taskData, void *val, int valSz) {
00073 taskData->val = malloc(valSz);
00074
00075 memcpy(taskData->val, val, valSz);
00076 }
00077