#ifndef STARS_ida_Interface_h #define STARS_ida_Interface_h #include <map> class STARS_IDA_Interface_t: public STARS_Interface_t { public: STARS_IDA_Interface_t() {}; virtual STARS_Segment_t *getseg(const STARS_ea_t &addr) { segment_t* seg=::getseg(addr); return seg2Seg(seg); } virtual STARS_Segment_t *getnseg(const int &index) { segment_t* seg=::getnseg(index); return seg2Seg(seg); } virtual int get_segm_qty() { return ::get_segm_qty(); } virtual STARS_Segment_t *get_next_seg(const STARS_ea_t &addr) { segment_t* seg=::get_next_seg(addr); return seg2Seg(seg); } private: STARS_Segment_t* seg2Seg(segment_t* seg) { if(!seg) return NULL; if(segmap[seg]==NULL) segmap[seg]=new STARS_IDA_Segment_t(seg); return segmap[seg]; } std::map<segment_t*, STARS_Segment_t*> segmap; }; #endif