dcc_interface.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "dcc_interface.h"
  2. #include "dcc.h"
  3. #include "project.h"
  4. struct DccImpl : public IDcc {
  5. ilFunction m_current_func;
  6. // IDcc interface
  7. public:
  8. void BaseInit()
  9. {
  10. m_current_func = Project::get()->functions().end();
  11. }
  12. void Init(QObject *tgt)
  13. {
  14. }
  15. ilFunction GetFirstFuncHandle()
  16. {
  17. return Project::get()->functions().begin();
  18. }
  19. ilFunction GetCurFuncHandle()
  20. {
  21. return m_current_func;
  22. }
  23. void analysis_Once()
  24. {
  25. }
  26. void load(QString name)
  27. {
  28. option.filename = name;
  29. Project::get()->create(name);
  30. }
  31. void prtout_asm(IXmlTarget *, int level)
  32. {
  33. }
  34. void prtout_cpp(IXmlTarget *, int level)
  35. {
  36. }
  37. size_t getFuncCount()
  38. {
  39. return Project::get()->functions().size();
  40. }
  41. const lFunction &validFunctions() const
  42. {
  43. return Project::get()->functions();
  44. }
  45. void SetCurFunc_by_Name(QString v)
  46. {
  47. lFunction & funcs(Project::get()->functions());
  48. for(auto iter=funcs.begin(),fin=funcs.end(); iter!=fin; ++iter) {
  49. if(iter->name==v) {
  50. m_current_func = iter;
  51. return;
  52. }
  53. }
  54. }
  55. QDir installDir() {
  56. return QDir(".");
  57. }
  58. QDir dataDir(QString kind) { // return directory containing decompilation helper data -> signatures/includes/etc.
  59. QDir res(installDir());
  60. res.cd(kind);
  61. return res;
  62. }
  63. };
  64. IDcc* IDcc::get() {
  65. static IDcc *v=0;
  66. if(nullptr == v)
  67. v = new DccImpl;
  68. return v;
  69. }