Sockeye: Start reimplementing net builder on top of instantiator
[barrelfish] / tools / sockeye / SockeyeASTDecodingNet.hs
1 {-
2   SockeyeASTDecodingNet.hs: Decoding net AST for Sockeye
3
4   Part of Sockeye
5
6   Copyright (c) 2017, ETH Zurich.
7
8   All rights reserved.
9
10   This file is distributed under the terms in the attached LICENSE file.
11   If you do not find this file, copies can be found by writing to:
12   ETH Zurich D-INFK, CAB F.78, Universitaetstr. 6, CH-8092 Zurich,
13   Attn: Systems Group.
14 -}
15
16 module SockeyeASTDecodingNet where
17
18 import Data.List (intercalate)
19 import Data.Map (Map)
20
21 type NetSpec = Map NodeId NodeSpec
22
23 data NodeId = NodeId
24     { namespace :: [String]
25     , name      :: !String
26     } deriving (Eq, Ord)
27
28 instance Show NodeId where
29     show (NodeId ns n) = intercalate "." $ reverse (n:ns)
30
31 data NodeSpec
32     = NodeSpec
33         { nodeType  :: NodeType
34         , accept    :: [BlockSpec]
35         , translate :: [MapSpec]
36         }
37     deriving (Show)
38
39 data NodeType
40     = Memory
41     | Device
42     | Other
43     deriving (Show)
44
45 data BlockSpec = BlockSpec
46     { base  :: Address
47     , limit :: Address
48     } deriving (Show)
49
50 data MapSpec = MapSpec
51     { srcBlock :: BlockSpec
52     , destNode :: NodeId
53     , destBase :: Address
54     } deriving (Show)
55
56 type Address = Integer