From c422f4f2451303da213f51155e27cb7539c64684 Mon Sep 17 00:00:00 2001 From: "FeRD (Frank Dana)" Date: Sat, 21 Sep 2019 01:43:30 -0400 Subject: [PATCH 1/2] Separate GetVersion impl, make Pythonic --- include/OpenShotVersion.h.in | 32 +++++++++++----------------- src/CMakeLists.txt | 1 + src/OpenShotVersion.cpp | 38 ++++++++++++++++++++++++++++++++++ src/bindings/python/openshot.i | 7 +++++++ 4 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 src/OpenShotVersion.cpp diff --git a/include/OpenShotVersion.h.in b/include/OpenShotVersion.h.in index 89f4ed52..e15662b2 100644 --- a/include/OpenShotVersion.h.in +++ b/include/OpenShotVersion.h.in @@ -43,36 +43,28 @@ #define OPENSHOT_VERSION_SO @PROJECT_SO_VERSION@ /// Shared object version number. This increments any time the API and ABI changes (so old apps will no longer link) #include -using namespace std; namespace openshot { /// This struct holds version number information. Use the GetVersion() method to access the current version of libopenshot. struct OpenShotVersion { - int major; /// Major version number - int minor; /// Minor version number - int build; /// Build number - int so; /// Shared Object Number (incremented when API or ABI changes) + static const int Major = OPENSHOT_VERSION_MAJOR; /// Major version number + static const int Minor = OPENSHOT_VERSION_MINOR; /// Minor version number + static const int Build = OPENSHOT_VERSION_BUILD; /// Build number + static const int So = OPENSHOT_VERSION_SO; /// Shared Object Number (incremented when API or ABI changes) /// Get a string version of the version (i.e. "Major.Minor.Build") - string ToString() { - stringstream version_string; - version_string << major << "." << minor << "." << build; + inline static const std::string ToString() { + std::stringstream version_string; + version_string << Major << "." << Minor << "." << Build; return version_string.str(); } }; + static const openshot::OpenShotVersion Version; + /// Get the current version number of libopenshot (major, minor, and build number) - static OpenShotVersion GetVersion() { - OpenShotVersion version; - - // Set version info - version.major = OPENSHOT_VERSION_MAJOR; - version.minor = OPENSHOT_VERSION_MINOR; - version.build = OPENSHOT_VERSION_BUILD; - version.so = OPENSHOT_VERSION_SO; - - return version; - } + openshot::OpenShotVersion GetVersion(); } -#endif + +#endif // OPENSHOT_VERSION_H \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6980dbae..2625027c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -249,6 +249,7 @@ SET ( OPENSHOT_SOURCE_FILES Frame.cpp FrameMapper.cpp KeyFrame.cpp + OpenShotVersion.cpp ZmqLogger.cpp PlayerBase.cpp Point.cpp diff --git a/src/OpenShotVersion.cpp b/src/OpenShotVersion.cpp new file mode 100644 index 00000000..1bc73c3a --- /dev/null +++ b/src/OpenShotVersion.cpp @@ -0,0 +1,38 @@ +/** + * @file + * @brief Source file for GetVersion function + * @author Jonathan Thomas + * @author FeRD (Frank Dana) + * + * @ref License + */ + +/* LICENSE + * + * Copyright (c) 2008-2019 OpenShot Studios, LLC + * . This file is part of + * OpenShot Library (libopenshot), an open-source project dedicated to + * delivering high quality video editing and animation solutions to the + * world. For more information visit . + * + * OpenShot Library (libopenshot) is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * OpenShot Library (libopenshot) is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with OpenShot Library. If not, see . + */ + +#include "OpenShotVersion.h" + +namespace openshot { + OpenShotVersion GetVersion() { + return openshot::Version; + } +} \ No newline at end of file diff --git a/src/bindings/python/openshot.i b/src/bindings/python/openshot.i index 512224ef..63bdea33 100644 --- a/src/bindings/python/openshot.i +++ b/src/bindings/python/openshot.i @@ -120,6 +120,13 @@ } } +%extend openshot::OpenShotVersion { + // Give the struct a string representation + const std::string __str__() { + return std::string(openshot::OpenShotVersion::ToString()); + } +} + %include "OpenShotVersion.h" %include "../../../include/ReaderBase.h" %include "../../../include/WriterBase.h" From ba86744e6a53d9a1777167c77577fd3e9a56bfd1 Mon Sep 17 00:00:00 2001 From: "FeRD (Frank Dana)" Date: Sat, 21 Sep 2019 02:03:07 -0400 Subject: [PATCH 2/2] Use OPENSHOT_VERSION_FULL as Python str() --- src/bindings/python/openshot.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bindings/python/openshot.i b/src/bindings/python/openshot.i index 63bdea33..6e90d2ca 100644 --- a/src/bindings/python/openshot.i +++ b/src/bindings/python/openshot.i @@ -123,7 +123,7 @@ %extend openshot::OpenShotVersion { // Give the struct a string representation const std::string __str__() { - return std::string(openshot::OpenShotVersion::ToString()); + return std::string(OPENSHOT_VERSION_FULL); } }