diff --git a/src/common/TempConfig.h b/src/common/TempConfig.h index 4f6b8fb8..7dbcb650 100644 --- a/src/common/TempConfig.h +++ b/src/common/TempConfig.h @@ -5,6 +5,23 @@ #include <QString> #include <QVariant> +/** + * @brief Class for temporary modifying r2 `e` configuration. + * + * Modified values will be restored at the end of scope. This is useful when using a r2 command that can only + * be configured using `e` configuration and doesn't accept arguments. TempConfig::set calls can be chained. + * If a command or r2 method accepts arguments directly it is preferred to use those instead of temporary modifying + * global configuration. + * + * \code + * { + * TempConfig tempConfig; + * tempConfig.set("asm.arch", "x86").set("asm.comments", false); + * return Core()->cmdRaw("pd"); + * // config automatically restored at the end of scope + * } + * \endcode + */ class TempConfig { public: @@ -16,6 +33,8 @@ public: TempConfig &set(const QString &key, bool value); private: + TempConfig(const TempConfig&) = delete; + TempConfig &operator=(const TempConfig&) = delete; QMap<QString, QVariant> resetValues; };