/**------------------------------------------------------------------------
 * @file
 *
 * Copyright 2001 by the University of Toronto (UT).
 *
 *                       All Rights Reserved
 *
 * Permission to copy and modify this software and its documentation
 * only for internal use in your organization is hereby granted,
 * provided that this notice is retained thereon and on all copies.
 * UT makes no representations as to the suitability and operability
 * of this software for any purpose.  It is provided "as is" without
 * express or implied warranty.
 *
 * UT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
 * SHALL UT BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
 * OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 *
 * No other rights, including for example, the right to redistribute
 * this software and its documentation or the right to prepare
 * derivative works, are granted unless specifically provided in a
 * separate license agreement.
 *
 * Author: Diego Macrini
 *
 * $Log: InfoStructures.h,v $
 *
 *-----------------------------------------------------------------------*/

#ifndef __INFO_STRUCTURES_H__
#define __INFO_STRUCTURES_H__

#include <ShockGraph.h>
#include <BoneGraph.h>

struct ShapeMatchingParams
{
	double idxtau, matchtau, idxrange, modelSimWeight;
	int idxKBest, asyncCompu, showResults, saveResults, saveNodeSim;
	int computeStats; // 0 => no stats, 1 is UofT format, 2 is PBS format
	int selectionMethod;
	int firstModelId, lastModelId;
	const char* statsOutDir;
};

struct ShapeRepresentationParams
{
	enum RepType {ShockGraphRep = 1, GestureGraphRep, BoneGraphRep};

	dml::SkeletalGraphParams skelparams;
	dml::ShockGraphParams sgparams;
	dml::BoneGraphParams bgparams;

	int shapeRepType;
	int timeout;
	int nBumpSize, nNotchSize;
	const char* outDir;
};

struct TrainingParams
{
	int queryID;
	int modelID;
	double similarity;
	double param0;
};

typedef std::list<TrainingParams> TrainingParamList;

#define SGShapeRep ShapeRepresentationParams::ShockGraphRep
#define GGShapeRep ShapeRepresentationParams::GestureGraphRep
#define BGShapeRep ShapeRepresentationParams::BoneGraphRep

#endif // __INFO_STRUCTURES_H__
