diff options
author | Adam Chlipala <adamc@hcoop.net> | 2010-01-03 12:47:27 -0500 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2010-01-03 12:47:27 -0500 |
commit | 4dd9404d036d89d53e096b2fccd395deffc8b094 (patch) | |
tree | 784c36f589cbacce89a4ab23334fda77871e7961 /src/shake.sml | |
parent | f0670d5a5a60c1bdda0277fcf74f2cf3f028c5b4 (diff) |
Proper C-side deserialization; Shake.sliceDb
Diffstat (limited to 'src/shake.sml')
-rw-r--r-- | src/shake.sml | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/shake.sml b/src/shake.sml index 39ebdde0..686a043c 100644 --- a/src/shake.sml +++ b/src/shake.sml @@ -29,6 +29,8 @@ structure Shake :> SHAKE = struct +val sliceDb = ref false + open Core structure U = CoreUtil @@ -67,7 +69,11 @@ fun shake file = val (usedE, usedC) = List.foldl - (fn ((DExport (_, n, _), _), (usedE, usedC)) => (IS.add (usedE, n), usedC) + (fn ((DExport (_, n, _), _), st as (usedE, usedC)) => + if !sliceDb then + st + else + (IS.add (usedE, n), usedC) | ((DTable (_, _, c, _, pe, pc, ce, cc), _), (usedE, usedC)) => let val usedC = usedVarsC usedC c @@ -79,7 +85,11 @@ fun shake file = in (usedE, usedC) end - | ((DTask (e1, e2), _), st) => usedVars (usedVars st e1) e2 + | ((DTask (e1, e2), _), st) => + if !sliceDb then + st + else + usedVars (usedVars st e1) e2 | (_, acc) => acc) (IS.empty, IS.empty) file val (cdef, edef) = foldl (fn ((DCon (_, n, _, c), _), (cdef, edef)) => (IM.insert (cdef, n, [c]), edef) @@ -186,14 +196,14 @@ fun shake file = | (DDatatype dts, _) => List.exists (fn (_, n, _, _) => IS.member (#con s, n)) dts | (DVal (_, n, _, _, _), _) => IS.member (#exp s, n) | (DValRec vis, _) => List.exists (fn (_, n, _, _, _) => IS.member (#exp s, n)) vis - | (DExport _, _) => true + | (DExport _, _) => not (!sliceDb) | (DView _, _) => true | (DSequence _, _) => true | (DTable _, _) => true - | (DDatabase _, _) => true - | (DCookie _, _) => true - | (DStyle _, _) => true - | (DTask _, _) => true) file + | (DDatabase _, _) => not (!sliceDb) + | (DCookie _, _) => not (!sliceDb) + | (DStyle _, _) => not (!sliceDb) + | (DTask _, _) => not (!sliceDb)) file end end |