Commit d1070e92 by Maarten L. Hekkelman

Better version string

parent f0d09c7f
...@@ -343,10 +343,11 @@ class version_info : public version_info_base ...@@ -343,10 +343,11 @@ class version_info : public version_info_base
public: public:
using implementation_type = T; using implementation_type = T;
protected: struct register_object
version_info() {
register_object()
{ {
auto &s_head = head(); auto &s_head = version_info_base::head();
static instance s_next{ static instance s_next{
implementation_type::name(), implementation_type::name(),
implementation_type::version(), implementation_type::version(),
...@@ -356,8 +357,16 @@ class version_info : public version_info_base ...@@ -356,8 +357,16 @@ class version_info : public version_info_base
s_head }; s_head };
s_head = &s_next; s_head = &s_next;
} }
};
template<register_object&> struct referrence_object;
static register_object s_registered_object;
static referrence_object<s_registered_object> s_referrenced_object;
}; };
template<typename T> typename version_info<T>::register_object version_info<T>::s_registered_object;
inline void write_version_string(std::ostream &os, bool verbose) inline void write_version_string(std::ostream &os, bool verbose)
{ {
version_info_base::write(os, verbose); version_info_base::write(os, verbose);
...@@ -373,7 +382,7 @@ class version_info_@IDENT_PREFIX@impl : public version_info<version_info_@IDENT_ ...@@ -373,7 +382,7 @@ class version_info_@IDENT_PREFIX@impl : public version_info<version_info_@IDENT_
static constexpr int build_number() { return k@VAR_PREFIX@BuildNumber; } static constexpr int build_number() { return k@VAR_PREFIX@BuildNumber; }
static constexpr const char *git_tag() { return k@VAR_PREFIX@RevisionGitTag; } static constexpr const char *git_tag() { return k@VAR_PREFIX@RevisionGitTag; }
static constexpr const char *revision_date() { return k@VAR_PREFIX@RevisionDate; } static constexpr const char *revision_date() { return k@VAR_PREFIX@RevisionDate; }
} s_@IDENT_PREFIX@instance; };
]]) ]])
configure_file("${VERSION_STRING_DATA}/${file_name}.in" "${dir}/${file_name}" @ONLY) configure_file("${VERSION_STRING_DATA}/${file_name}.in" "${dir}/${file_name}" @ONLY)
endfunction() endfunction()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment