-- UUAGC 0.9.36 (src/SymView.ag) module SymView where {-# LINE 6 "src/SymView.ag" #-} import Data.Word import ProgInfo import Data.Maybe {-# LINE 12 "dist/src/sdist.27680/asil-1.2/dist/build/SymView.hs" #-} {-# LINE 17 "src/SymView.ag" #-} tablesView :: [SymbolTables] -> FileV tablesView tbls = FileV_File $ map tableView tbls tableView :: SymbolTables -> TableV tableView tbls = TableV_Table classes methods where classes = map (classView tbls) (map Ref $ keysEnv $ tableClasses tbls) methods = map (methodView tbls) (map Ref $ keysEnv $ tableSigs tbls) classView :: SymbolTables -> ClassRef -> ClassV classView tbls ref = res where c = lookupClass ref tbls nm = nameView tbls (clName c) mbSuper = fmap (SuperV_Super . TypeV_Type (refNull $ fromJust $ clSuper c)) $ mbNameView tbls $ clSuper c itfs = map (\tpRef -> ItfV_Itf $ TypeV_Type (refNull tpRef) $ nameView tbls tpRef) (clInterfaces c) dynTraits = map (traitView tbls) (clDynTraits c) staTraits = map (traitView tbls) (clStaTraits c) res = ClassV_Class ref nm mbSuper itfs dynTraits staTraits traitView :: SymbolTables -> TraitDescr -> TraitV traitView tbls tr = case trData tr of TraitMethod mRef -> TraitV_Method nm $ sigView tbls mRef TraitField tpRef -> TraitV_Field nm $ TypeV_Type (refNull tpRef) $ nameView tbls tpRef TraitClass _ -> TraitV_Other nm where nm = nameView tbls (trName tr) methodView :: SymbolTables -> MethodRef -> MethodV methodView tbls ref = res where m = lookupMethod ref tbls mbNm = mbStringView tbls $ sigName m sig = sigView' tbls ref m res = MethodV_Method mbNm sig sigView :: SymbolTables -> MethodRef -> SigV sigView tbls ref = sigView' tbls ref m where m = lookupMethod ref tbls sigView' :: SymbolTables -> MethodRef -> Sig -> SigV sigView' tbls ref m = res where mbNm = mbStringView tbls $ sigName m tRef = sigReturn m ret = TypeV_Type (refNull tRef) $ nameView tbls tRef ps = map (paramView tbls) (sigParams m) res = SigV_Sig ref ret ps paramView :: SymbolTables -> SigParam -> ParamV paramView tbls p = ParamV_Param (mbStringView tbls $ spName p) (TypeV_Type (refNull tpRef) $ nameView tbls tpRef) where tpRef = spType p mbNameView :: SymbolTables -> Maybe NameRef -> MbNmV mbNameView tbls = maybe Nothing (Just . nameView tbls) nameView :: SymbolTables -> NameRef -> NmV nameView tbls ref = case nmStr nm of Nothing -> NmV_Other ref Just strRef -> case nmQual nm of QualNs nsRef -> NmV_Qual ref (namespaceView tbls nsRef) (stringView tbls strRef) QualNss sRef -> case nsSpaces $ lookupNameset sRef tbls of [nsRef] -> NmV_Qual ref (namespaceView tbls nsRef) (stringView tbls strRef) _ -> NmV_Quals ref (namesetsView tbls sRef) (stringView tbls strRef) _ -> NmV_Other ref where nm = lookupName ref tbls mbStringView :: SymbolTables -> Maybe StringRef -> MbStrV mbStringView tbls = maybe Nothing (Just . stringView tbls) stringView :: SymbolTables -> StringRef -> StrV stringView tbls ref = StrV_Str ref (lookupString ref tbls) namespaceView :: SymbolTables -> NamespaceRef -> NsV namespaceView tbls ref = NsV_Ns ref (stringView tbls $ nsName $ lookupNamespace ref tbls) namesetsView :: SymbolTables -> NamesetRef -> NsSetV namesetsView tbls ref = NsSetV_Set ref views where spaces = nsSpaces $ lookupNameset ref tbls views = map (namespaceView tbls) spaces {-# LINE 94 "dist/src/sdist.27680/asil-1.2/dist/build/SymView.hs" #-} -- ClassV ------------------------------------------------------ data ClassV = ClassV_Class !(ClassRef) !(NmV ) !(MbSuperV ) !(ItfsV ) !(TraitsV ) !(TraitsV ) deriving ( Eq,Show) -- ClassesV ---------------------------------------------------- type ClassesV = [ClassV ] -- FileV ------------------------------------------------------- data FileV = FileV_File !(TablesV ) deriving ( Eq,Show) -- ItfV -------------------------------------------------------- data ItfV = ItfV_Itf !(TypeV ) deriving ( Eq,Show) -- ItfsV ------------------------------------------------------- type ItfsV = [ItfV ] -- MbNmV ------------------------------------------------------- type MbNmV = Maybe NmV -- MbStrV ------------------------------------------------------ type MbStrV = Maybe StrV -- MbSuperV ---------------------------------------------------- type MbSuperV = Maybe SuperV -- MethodV ----------------------------------------------------- data MethodV = MethodV_Method !(MbStrV ) !(SigV ) deriving ( Eq,Show) -- MethodsV ---------------------------------------------------- type MethodsV = [MethodV ] -- NmV --------------------------------------------------------- data NmV = NmV_Other !(NameRef) | NmV_Qual !(NameRef) !(NsV ) !(StrV ) | NmV_Quals !(NameRef) !(NsSetV ) !(StrV ) deriving ( Eq,Show) -- NmsV -------------------------------------------------------- type NmsV = [NmV ] -- NsSetV ------------------------------------------------------ data NsSetV = NsSetV_Set !(NamesetRef) !(NssV ) deriving ( Eq,Show) -- NsV --------------------------------------------------------- data NsV = NsV_Ns !(NamespaceRef) !(StrV ) deriving ( Eq,Show) -- NssV -------------------------------------------------------- type NssV = [NsV ] -- ParamV ------------------------------------------------------ data ParamV = ParamV_Param !(MbStrV ) !(TypeV ) deriving ( Eq,Show) -- ParamsV ----------------------------------------------------- type ParamsV = [ParamV ] -- SigV -------------------------------------------------------- data SigV = SigV_Sig !(MethodRef) !(TypeV ) !(ParamsV ) deriving ( Eq,Show) -- StrV -------------------------------------------------------- data StrV = StrV_Str !(StringRef) !(String) deriving ( Eq,Show) -- SuperV ------------------------------------------------------ data SuperV = SuperV_Super !(TypeV ) deriving ( Eq,Show) -- TableV ------------------------------------------------------ data TableV = TableV_Table !(ClassesV ) !(MethodsV ) deriving ( Eq,Show) -- TablesV ----------------------------------------------------- type TablesV = [TableV ] -- TraitV ------------------------------------------------------ data TraitV = TraitV_Field !(NmV ) !(TypeV ) | TraitV_Method !(NmV ) !(SigV ) | TraitV_Other !(NmV ) deriving ( Eq,Show) -- TraitsV ----------------------------------------------------- type TraitsV = [TraitV ] -- TypeV ------------------------------------------------------- data TypeV = TypeV_Type !(Bool) !(NmV ) deriving ( Eq,Show)