summaryrefslogtreecommitdiff
path: root/livefeatures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'livefeatures.cpp')
-rw-r--r--livefeatures.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/livefeatures.cpp b/livefeatures.cpp
new file mode 100644
index 0000000..385430f
--- /dev/null
+++ b/livefeatures.cpp
@@ -0,0 +1,35 @@
+#include "livefeatures.h"
+#include "tools.h"
+
+namespace vdrlive {
+
+using namespace std;
+
+SplitVersion::SplitVersion( string version )
+ : m_version( 0 )
+{
+ static const int factors[] = { 100000000, 1000000, 1000, 1 };
+
+ size_t pos = version.find('-');
+ if ( pos != string::npos ) {
+ m_suffix = version.substr( pos + 1 );
+ version.erase( pos );
+ }
+ vector< string > parts = StringSplit( version, '.' );
+ for ( size_t i = 0; i < parts.size() && i < sizeof(factors)/sizeof(factors[0]); ++i ) {
+ m_version += atoi( parts[ i ].c_str() ) * factors[ i ];
+ }
+}
+
+bool SplitVersion::operator<( const SplitVersion& right ) const
+{
+ dsyslog( "vdrlive::SplitVersion::operator<( %d-%s, %d-%s )", m_version, m_suffix.c_str(), right.m_version, right.m_suffix.c_str() );
+ if ( m_version == right.m_version ) {
+ if ( m_suffix.empty() ) return false;
+ if ( right.m_suffix.empty() ) return true;
+ return m_suffix < right.m_suffix;
+ }
+ return m_version < right.m_version;
+}
+
+} // namespace vdrlive