#ifndef STARS_IDA_Function_h #define STARS_IDA_Function_h class STARS_IDA_Function_t : public STARS_Function_t { public: virtual STARS_ea_t get_startEA() { return the_func->startEA; } virtual STARS_ea_t get_endEA() { return the_func->endEA; } STARS_IDA_Function_t(func_t* func) : the_func(func), frsize(the_func->frsize) {} virtual char* GetFunctionName(const char* name, const int len) const { return ::get_func_name(the_func->startEA,(char*)name,len); } virtual size_t GetFrameSize() { return frsize; } virtual void SetFrameSize(size_t fs) { frsize=fs;} virtual size_t GetSavedRegSize() { return the_func->frregs; } virtual size_t GetIncomingArgumentSize() { return the_func->argsize; } virtual size_t GetFrameReturnAddressSize() { return ::get_frame_retsize(the_func); } virtual bool FunctionUsesFP() { return (0 != (the_func->flags & (FUNC_FRAME | FUNC_BOTTOMBP))); } virtual bool IsStaticFunction() { return (0 != (the_func->flags & FUNC_STATIC)); } virtual bool IsLibraryFunction() { return (0 != (the_func->flags & FUNC_LIB)); } virtual bool IsStackPointerAnalyzed() { return the_func->analyzed_sp(); } virtual uint64_t get_spd(STARS_ea_t ea) { return ::get_spd(the_func,ea); } virtual bool HasReturnPoints() { return the_func->does_return(); } /* temporary cast operator for testing */ operator func_t* () { return the_func; } private: func_t* the_func; size_t frsize; }; #endif