From 00a4a91911442512e4b752c9b6c28962974162c7 Mon Sep 17 00:00:00 2001 From: johnvg Date: Thu, 3 Jan 2008 11:00:40 +0000 Subject: move function remove_first_n from backendinterface to containers git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1696 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d --- frontend/containers.dcl | 1 + frontend/containers.icl | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'frontend') diff --git a/frontend/containers.dcl b/frontend/containers.dcl index de787d6..f0da996 100644 --- a/frontend/containers.dcl +++ b/frontend/containers.dcl @@ -37,6 +37,7 @@ add_next_strict :: !Int !Int !StrictnessList -> (!Int,!Int,!StrictnessList) add_next_not_strict :: !Int !Int !StrictnessList -> (!Int,!Int,!StrictnessList) append_strictness :: !Int !StrictnessList -> StrictnessList first_n_are_strict :: !Int !StrictnessList -> Bool +remove_first_n :: !Int !StrictnessList -> StrictnessList :: IntKey :== Int diff --git a/frontend/containers.icl b/frontend/containers.icl index 4d0282b..6b1cd08 100644 --- a/frontend/containers.icl +++ b/frontend/containers.icl @@ -351,6 +351,25 @@ first_n_are_strict n (StrictList s l) # m=(1< StrictnessList +remove_first_n 0 s + = s +remove_first_n _ NotStrict + = NotStrict +remove_first_n n (Strict s) + | n<32 + = Strict (((s>>1) bitand 0x7fffffff)>>(n-1)) + = NotStrict +remove_first_n n (StrictList s l) + | n<32 + # s2=case l of + Strict s -> s + StrictList s _ -> s + NotStrict -> 0 + # s=(((s>>1) bitand 0x7fffffff)>>(n-1)) bitor (s2<<(32-n)) + = StrictList s (remove_first_n n l) + = remove_first_n (n-32) l + screw :== 80 :: IntKey :== Int -- cgit v1.2.3