diff options
Diffstat (limited to 'main/Version.icl')
-rw-r--r-- | main/Version.icl | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/main/Version.icl b/main/Version.icl new file mode 100644 index 0000000..71ab761 --- /dev/null +++ b/main/Version.icl @@ -0,0 +1,32 @@ +implementation module Version + +import StdInt, StdClass + +:: VersionInfo = + { versionCurrent + :: Int + , versionOldestDefinition + :: Int + , versionOldestImplementation + :: Int + } + +:: VersionsCompatability + = VersionsAreCompatible + | VersionObservedIsTooOld + | VersionObservedIsTooNew + +versionCompare :: VersionInfo VersionInfo -> VersionsCompatability +versionCompare expected observed + | expected.versionCurrent < observed.versionCurrent + | expected.versionCurrent >= observed.versionOldestDefinition + = VersionsAreCompatible + // otherwise + = VersionObservedIsTooNew + | expected.versionCurrent == observed.versionCurrent + = VersionsAreCompatible + // expected.versionCurrent > observed.versionCurrent + | expected.versionOldestImplementation <= observed.versionCurrent + = VersionsAreCompatible + // otherwise + = VersionObservedIsTooOld |