aos/tools/mackerel/TypeName.hs
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

51 lines
1.4 KiB
Haskell

{-
Type name: qualified names for register types
Part of Mackerel: a strawman device definition DSL for Barrelfish
Copyright (c) 2011, ETH Zurich.
All rights reserved.
This file is distributed under the terms in the attached LICENSE file.
If you do not find this file, copies can be found by writing to:
ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
-}
module TypeName where
import MackerelParser
{--------------------------------------------------------------------
--------------------------------------------------------------------}
-- Fully-qualified name of a type
data Name = Name String String
deriving (Show, Eq)
fromParts :: String -> String -> Name
fromParts dev typename = Name dev typename
fromRef :: AST -> String -> Name
fromRef (TypeRef tname (Just dname)) _ = Name dname tname
fromRef (TypeRef tname Nothing) dname = Name dname tname
toString :: Name -> String
toString (Name d t) = d ++ "." ++ t
devName :: Name -> String
devName (Name d _) = d
typeName :: Name -> String
typeName (Name _ t) = t
is_builtin_type :: Name -> Bool
is_builtin_type (Name _ "uint8") = True
is_builtin_type (Name _ "uint16") = True
is_builtin_type (Name _ "uint32") = True
is_builtin_type (Name _ "uint64") = True
is_builtin_type _ = False
null :: Name
null = Name "" ""