aboutsummaryrefslogtreecommitdiff
path: root/main/Version.icl
diff options
context:
space:
mode:
authorronny2000-02-23 14:55:54 +0000
committerronny2000-02-23 14:55:54 +0000
commit763041adf7a1f87addcb5069f203396dc896b3f1 (patch)
tree78472565231b153eebf953f64a73b37be1fcec57 /main/Version.icl
parentAdded backend.dll (diff)
Initial import
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@100 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'main/Version.icl')
-rw-r--r--main/Version.icl32
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