#ifndef TA_DEF_UI_H
#define TA_DEF_UI_H
#ifndef TA_ABSTRACT_H
#include "ta_abstract.h"
#endif
#ifndef TA_FRAME_PRIV_H
#include "ta_frame_priv.h"
#endif
#if !defined(TA_GEN_CODE) && !defined( TA_FRAME_H )
#include "ta_frame.h"
#endif
typedef enum
{
TA_GroupId_MathOperators,
TA_GroupId_MathTransform,
TA_GroupId_OverlapStudies,
TA_GroupId_VolatilityIndicators,
TA_GroupId_MomentumIndicators,
TA_GroupId_CycleIndicators,
TA_GroupId_VolumeIndicators,
TA_GroupId_PatternRecognition,
TA_GroupId_Statistic,
TA_GroupId_PriceTransform,
TA_NB_GROUP_ID
} TA_GroupId;
extern const char TA_GroupId_MathOperatorsString[];
extern const char TA_GroupId_MathTransformString[];
extern const char TA_GroupId_OverlapStudiesString[];
extern const char TA_GroupId_VolatilityIndicatorsString[];
extern const char TA_GroupId_MomentumIndicatorsString[];
extern const char TA_GroupId_CycleIndicatorsString[];
extern const char TA_GroupId_VolumeIndicatorsString[];
extern const char TA_GroupId_PatternRecognitionString[];
extern const char TA_GroupId_StatisticString[];
extern const char TA_GroupId_PriceTransformString[];
extern const char *TA_GroupString[TA_NB_GROUP_ID];
extern const TA_InputParameterInfo TA_DEF_UI_Input_Real;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Real0;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Real1;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Integer;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Price_OHLCV;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Price_HLCV;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Price_OHLC;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Price_HLC;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Price_HL;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Price_OC;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Price_CV;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Price_V;
extern const TA_InputParameterInfo TA_DEF_UI_Input_Periods;
extern const TA_OutputParameterInfo TA_DEF_UI_Output_Real;
extern const TA_OutputParameterInfo TA_DEF_UI_Output_Integer;
extern const TA_OutputParameterInfo TA_DEF_UI_Output_Lines;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_30;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_14;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_10;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_5;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_30_MINIMUM2;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_20_MINIMUM2;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_21_MINIMUM2;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_14_MINIMUM2;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_14_MINIMUM5;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_10_MINIMUM2;
extern const TA_OptInputParameterInfo TA_DEF_UI_TimePeriod_5_MINIMUM2;
extern const TA_OptInputParameterInfo TA_DEF_UI_VerticalShift;
extern const TA_OptInputParameterInfo TA_DEF_UI_HorizontalShift;
extern const TA_OptInputParameterInfo TA_DEF_UI_MA_Method;
extern const TA_OptInputParameterInfo TA_DEF_UI_Fast_Period;
extern const TA_OptInputParameterInfo TA_DEF_UI_Slow_Period;
extern const TA_OptInputParameterInfo TA_DEF_UI_NbDeviation;
extern const TA_OptInputParameterInfo TA_DEF_UI_Penetration_30;
extern const TA_OptInputParameterInfo TA_DEF_UI_Penetration_50;
extern const TA_OptInputParameterInfo TA_DEF_UI_MinPeriod;
extern const TA_OptInputParameterInfo TA_DEF_UI_MaxPeriod;
extern const TA_IntegerRange TA_DEF_TimePeriod_Positive;
extern const TA_IntegerRange TA_DEF_TimePeriod_Positive_Minimum2;
extern const TA_IntegerRange TA_DEF_TimePeriod_Positive_Minimum5;
extern const TA_RealRange TA_DEF_VerticalShiftPercent;
extern const TA_IntegerRange TA_DEF_HorizontalShiftPeriod;
extern const TA_RealRange TA_DEF_NbDeviation;
extern const TA_RealRange TA_DEF_ZeroToOne;
extern const TA_RealRange TA_DEF_RealPositive;
extern const TA_IntegerList TA_MA_TypeList;
typedef struct
{
const unsigned int magicNumber;
const TA_GroupId groupId;
const TA_FuncInfo * const funcInfo;
const TA_InputParameterInfo * const input;
const TA_OptInputParameterInfo * const optInput;
const TA_OutputParameterInfo * const output;
const TA_FrameFunction function;
const TA_FrameLookback lookback;
} TA_FuncDef;
#if !defined( TA_GEN_CODE )
#define DEF_FUNCTION( name, \
groupId, \
hint, \
camelCaseName, \
flags ) \
\
TA_FuncInfo TA_INFO_##name; \
\
const TA_FuncDef TA_DEF_##name = \
{ \
TA_FUNC_DEF_MAGIC_NB, \
groupId, \
&TA_INFO_##name, \
(const TA_InputParameterInfo * const)&TA_##name##_Inputs[0], \
(const TA_OptInputParameterInfo * const)&TA_##name##_OptInputs[0], \
(const TA_OutputParameterInfo * const)&TA_##name##_Outputs[0], \
TA_##name##_FramePP, \
TA_##name##_FramePPLB \
}; \
TA_FuncInfo TA_INFO_##name = \
{ \
(const char * const)#name, \
(const char * const)groupId##String, \
(const char * const)hint, \
(const char * const)camelCaseName, \
(const int)flags, \
(sizeof(TA_##name##_Inputs) / sizeof(TA_InputParameterInfo *)) - 1, \
(sizeof(TA_##name##_OptInputs)/ sizeof(TA_OptInputParameterInfo *))- 1, \
(sizeof(TA_##name##_Outputs) / sizeof(TA_OutputParameterInfo *)) - 1, \
(const TA_FuncHandle * const)&TA_DEF_##name \
};
#else
#define DEF_FUNCTION( name, \
groupId, \
hint, \
camelCaseName, \
flags ) \
\
TA_FuncInfo TA_INFO_##name; \
\
const TA_FuncDef TA_DEF_##name = \
{ \
TA_FUNC_DEF_MAGIC_NB, \
groupId, \
&TA_INFO_##name, \
(const TA_InputParameterInfo * const)&TA_##name##_Inputs[0], \
(const TA_OptInputParameterInfo * const)&TA_##name##_OptInputs[0], \
(const TA_OutputParameterInfo * const)&TA_##name##_Outputs[0], \
NULL, \
NULL \
}; \
TA_FuncInfo TA_INFO_##name = \
{ \
(const char * const)#name, \
(const char * const)groupId##String, \
(const char * const)hint, \
(const char * const)camelCaseName, \
(const int)flags, \
(sizeof(TA_##name##_Inputs) / sizeof(TA_InputParameterInfo *)) - 1, \
(sizeof(TA_##name##_OptInputs)/ sizeof(TA_OptInputParameterInfo *))- 1, \
(sizeof(TA_##name##_Outputs) / sizeof(TA_OutputParameterInfo *)) - 1, \
(const TA_FuncHandle * const)&TA_DEF_##name \
};
#endif
#define ADD_TO_TABLE(name) &TA_DEF_##name
#define DEF_MATH_UNARY_OPERATOR(NAME,HINT,CAMELCASENAME) \
static const TA_InputParameterInfo *TA_##NAME##_Inputs[] = \
{ \
&TA_DEF_UI_Input_Real, \
NULL \
}; \
static const TA_OutputParameterInfo *TA_##NAME##_Outputs[] = \
{ \
&TA_DEF_UI_Output_Real, \
NULL \
}; \
static const TA_OptInputParameterInfo *TA_##NAME##_OptInputs[] = { NULL }; \
DEF_FUNCTION( NAME, \
TA_GroupId_MathTransform, \
HINT, \
CAMELCASENAME, \
0 \
);
#define DEF_MATH_BINARY_OPERATOR(NAME,HINT,CAMELCASENAME) \
static const TA_InputParameterInfo *TA_##NAME##_Inputs[] = \
{ \
&TA_DEF_UI_Input_Real0, \
&TA_DEF_UI_Input_Real1, \
NULL \
}; \
static const TA_OutputParameterInfo *TA_##NAME##_Outputs[] = \
{ \
&TA_DEF_UI_Output_Real, \
NULL \
}; \
static const TA_OptInputParameterInfo *TA_##NAME##_OptInputs[] = { NULL }; \
DEF_FUNCTION( NAME, \
TA_GroupId_MathOperators, \
HINT, \
CAMELCASENAME, \
0 \
);
#endif