/*
 *  ratlibsession.h
 *  RatLib
 *
 *  Created by Curtis Jones on 2009.11.13.
 *  Copyright 2009 __MyCompanyName__. All rights reserved.
 *
 */

#ifndef __RATLIB_SESSION_H__
#define __RATLIB_SESSION_H__

#include "cobject.h"
#include "opool.h"
#include "ratlibimage.h"
#include "ratlibgrid.h"
#include "ratlibpoint.h"

//
// ratlibsession
//
struct ratlibsession
{
	cobject_t cobject;								// parent class
	ratlibgrid_t grid;								// 
	ratlibimage_t *image;							// 
	ratlibpoint_t *begpoint;					// begin point
	ratlibpoint_t *endpoint;					// end point
	ratlibpoint_t *solution;					// maze solution
//void (*callback)();								// callback
//void *object;											// callback context
};
typedef struct ratlibsession ratlibsession_t;

/**
 *
 */
int ratlibsession_init (ratlibsession_t*, opool_t*, ratlibimage_t*);

/**
 *
 */
int ratlibsession_destroy (ratlibsession_t*);

/**
 *
 */
int ratlibsession_setbeg (ratlibsession_t*, ratlibpoint_t*);

/**
 *
 */
int ratlibsession_setend (ratlibsession_t*, ratlibpoint_t*);

/**
 *
 */
int ratlibsession_setsolution (ratlibsession_t*, ratlibpoint_t*);

/**
 *
 */
int ratlibsession_solve (ratlibsession_t*);

/**
 *
 */
ratlibsession_t* ratlibsession_retain (ratlibsession_t*);

/**
 *
 */
void ratlibsession_release (ratlibsession_t*);

#endif /* __RATLIB_SESSION_H__ */
