class CCActionEase : public CCActionInterval
{
	CCActionInterval* reverse(void);

    static CCActionEase* create(CCActionInterval *pAction);
};

class CCEaseRateAction : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseRateAction* create(CCActionInterval* pAction, float fRate);
};

class CCEaseIn : public CCEaseRateAction
{
	CCActionInterval* reverse(void);

    static CCEaseIn* create(CCActionInterval* pAction, float fRate);
};

class CCEaseOut : public CCEaseRateAction
{
	CCActionInterval* reverse(void);

    static CCEaseOut* create(CCActionInterval* pAction, float fRate);
};

class CCEaseInOut : public CCEaseRateAction
{
	CCActionInterval* reverse(void);

    static CCEaseInOut* create(CCActionInterval* pAction, float fRate);
};

class CCEaseExponentialIn : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseExponentialIn* create(CCActionInterval* pAction);
};

class CCEaseExponentialOut : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseExponentialOut* create(CCActionInterval* pAction);
};

class CCEaseExponentialInOut : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseExponentialInOut* create(CCActionInterval* pAction);
};

class CCEaseSineIn : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseSineIn* create(CCActionInterval* pAction);
};

class CCEaseSineOut : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseSineOut* create(CCActionInterval* pAction);
};

class CCEaseSineInOut : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseSineInOut* create(CCActionInterval* pAction);
};

class CCEaseElastic : public CCActionEase
{
	CCActionInterval* reverse(void);

	float getPeriod(void);
	void setPeriod(float fPeriod);

    static CCEaseElastic* create(CCActionInterval *pAction, float fPeriod = 0.3);
};

class CCEaseElasticIn : public CCEaseElastic
{
	CCActionInterval* reverse(void);

    static CCEaseElasticIn* create(CCActionInterval *pAction, float fPeriod = 0.3);
};

class  CCEaseElasticOut : public CCEaseElastic
{
	CCActionInterval* reverse(void);

    static CCEaseElasticOut* create(CCActionInterval *pAction, float fPeriod = 0.3);
};

class CCEaseElasticInOut : public CCEaseElastic
{
	CCActionInterval* reverse(void);

    static CCEaseElasticInOut* create(CCActionInterval *pAction, float fPeriod = 0.3);
};

class CCEaseBounce : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseBounce* create(CCActionInterval* pAction);
};

class CCEaseBounceIn : public CCEaseBounce
{
	CCActionInterval* reverse(void);

    static CCEaseBounceIn* create(CCActionInterval* pAction);
};

class CCEaseBounceOut : public CCEaseBounce
{
	CCActionInterval* reverse(void);

    static CCEaseBounceOut* create(CCActionInterval* pAction);
};

class CCEaseBounceInOut : public CCEaseBounce
{
	CCActionInterval* reverse(void);

    static CCEaseBounceInOut* create(CCActionInterval* pAction);
};

class CCEaseBackIn : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseBackIn* create(CCActionInterval* pAction);
};

class CCEaseBackOut : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseBackOut* create(CCActionInterval* pAction);
};

class CCEaseBackInOut : public CCActionEase
{
	CCActionInterval* reverse(void);

    static CCEaseBackInOut* create(CCActionInterval* pAction);
};