Skip to content

Commit

Permalink
Added interface to check library version during runtime
Browse files Browse the repository at this point in the history
  • Loading branch information
mshabunin committed Apr 9, 2018
1 parent 875b4e2 commit d2cff38
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 8 deletions.
17 changes: 17 additions & 0 deletions modules/core/include/opencv2/core/utility.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,23 @@ architecture.
*/
CV_EXPORTS_W const String& getBuildInformation();

/** @brief Returns library version string
For example "3.4.1-dev".
@sa getMajorVersion, getMinorVersion, getRevisionVersion
*/
CV_EXPORTS_W String getVersionString();

/** @brief Returns major library version */
CV_EXPORTS_W int getVersionMajor();

/** @brief Returns minor library version */
CV_EXPORTS_W int getVersionMinor();

/** @brief Returns revision field of the library version */
CV_EXPORTS_W int getVersionRevision();

/** @brief Returns the number of ticks.
The function returns the number of ticks after the certain event (for example, when the machine was
Expand Down
16 changes: 8 additions & 8 deletions modules/core/misc/java/src/java/core+Core.jcode.in
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// these constants are wrapped inside functions to prevent inlining
private static String getVersion() { return "@OPENCV_VERSION@"; }
private static String getNativeLibraryName() { return "opencv_java@OPENCV_VERSION_MAJOR@@OPENCV_VERSION_MINOR@@OPENCV_VERSION_PATCH@"; }
private static int getVersionMajor() { return @OPENCV_VERSION_MAJOR@; }
private static int getVersionMinor() { return @OPENCV_VERSION_MINOR@; }
private static int getVersionRevision() { return @OPENCV_VERSION_PATCH@; }
private static String getVersionStatus() { return "@OPENCV_VERSION_STATUS@"; }
private static int getVersionMajorJ() { return @OPENCV_VERSION_MAJOR@; }
private static int getVersionMinorJ() { return @OPENCV_VERSION_MINOR@; }
private static int getVersionRevisionJ() { return @OPENCV_VERSION_PATCH@; }
private static String getVersionStatusJ() { return "@OPENCV_VERSION_STATUS@"; }

public static final String VERSION = getVersion();
public static final String NATIVE_LIBRARY_NAME = getNativeLibraryName();
public static final int VERSION_MAJOR = getVersionMajor();
public static final int VERSION_MINOR = getVersionMinor();
public static final int VERSION_REVISION = getVersionRevision();
public static final String VERSION_STATUS = getVersionStatus();
public static final int VERSION_MAJOR = getVersionMajorJ();
public static final int VERSION_MINOR = getVersionMinorJ();
public static final int VERSION_REVISION = getVersionRevisionJ();
public static final String VERSION_STATUS = getVersionStatusJ();
7 changes: 7 additions & 0 deletions modules/core/misc/java/test/CoreTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2048,4 +2048,11 @@ public void testBorderInterpolate() {
assertEquals(5f, val2);
}

public void testVersion() {
assertEquals(Core.VERSION_MAJOR, Core.getVersionMajor());
assertEquals(Core.VERSION_MINOR, Core.getVersionMinor());
assertEquals(Core.VERSION_REVISION, Core.getVersionRevision());
assertEquals(Core.VERSION, Core.getVersionString());
}

}
8 changes: 8 additions & 0 deletions modules/core/src/system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -745,6 +745,14 @@ const String& getBuildInformation()
return build_info;
}

String getVersionString() { return String(CV_VERSION); }

int getVersionMajor() { return CV_VERSION_MAJOR; }

int getVersionMinor() { return CV_VERSION_MINOR; }

int getVersionRevision() { return CV_VERSION_REVISION; }

String format( const char* fmt, ... )
{
AutoBuffer<char, 1024> buf;
Expand Down
10 changes: 10 additions & 0 deletions modules/core/test/test_misc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,4 +189,14 @@ TEST(Core_Parallel, propagate_exceptions)
}, cv::Exception);
}

TEST(Core_Version, consistency)
{
// this test verifies that OpenCV version loaded in runtime
// is the same this test has been built with
EXPECT_EQ(CV_VERSION_MAJOR, cv::getVersionMajor());
EXPECT_EQ(CV_VERSION_MINOR, cv::getVersionMinor());
EXPECT_EQ(CV_VERSION_REVISION, cv::getVersionRevision());
EXPECT_EQ(String(CV_VERSION), cv::getVersionString());
}

}} // namespace

0 comments on commit d2cff38

Please sign in to comment.