/* 
 * File:   result.h
 * Author: Andr�a
 *
 */

#ifndef RESULT_H
#define	RESULT_H

#include <time.h>

#include "persistentItem.h"
#include "problema.h"
#include "method.h"

typedef struct _result Result;

typedef struct _resultArray
{
	Result*      result[MAX_ITEM];
	int          size;
	unsigned int benchId;
} ResultArray;

#define INITIAL_VECTOR_LOADED     1<<1
#define INITIAL_PARAMETERS_LOADED 1<<2

#define RESULT_VECTOR_LOADED      1<<3
#define RESULT_VALUE_LOADED       1<<4
#define RESULT_ERROR_LOADED       1<<5
#define RESULT_COMPLEXITY_LOADED  1<<6

struct _result{
	PersistentItem *_method_id;
	PersistentItem *_problem_id;
	PersistentItem *_result_id;

	long            _data_loaded;

	struct tm       run_date;

	int             _problem_dimension;

	double           *_initial_vector;
	MethodParameters _initialParameters;

	int             _result_complexity;
	double          _result_error;
	double         *_result_vector;
	double          _result_value;

	// method
	void          (*setId)        (Result *,unsigned int id);
	unsigned int  (*getId)        (Result *);
	void          (*setProblemId) (Result *,unsigned int id);
	unsigned int  (*getProblemId) (Result *);
	void          (*setMethodId)  (Result *,unsigned int id);
	unsigned int  (*getMethodId)  (Result *);
	char*         (*display)      (Result *);

};

Result* createResultSkeleton();

Result* createResult(
	unsigned long id,
	unsigned long id_pb,
	unsigned long id_m
	);

#endif /* RESULT_H */

