diff --git a/simplecpp.cpp b/simplecpp.cpp index 4898800f..3e572fc0 100644 --- a/simplecpp.cpp +++ b/simplecpp.cpp @@ -3155,6 +3155,9 @@ std::pair simplecpp::FileDataCache::tryload(FileDat mImpl->mIdMap.emplace(fileId, data); mData.emplace_back(data); + if (mLoadCallback) + mLoadCallback(*data); + return {data, true}; } diff --git a/simplecpp.h b/simplecpp.h index de20ae2e..3d6fc526 100644 --- a/simplecpp.h +++ b/simplecpp.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -498,6 +499,12 @@ namespace simplecpp { return mData.cend(); } + using load_callback_type = std::function; + + void set_load_callback(load_callback_type cb) { + mLoadCallback = std::move(cb); + } + private: struct Impl; std::unique_ptr mImpl; @@ -508,6 +515,7 @@ namespace simplecpp { container_type mData; name_map_type mNameMap; + load_callback_type mLoadCallback; }; /** Converts character literal (including prefix, but not ud-suffix) to long long value.