module Language.Fiddle.Ast.FileInterface where -- Definitions for file interfaces. These interfaces contain an abstract -- representation of the symbols and information exported by a fiddle file. -- These interfaces are also serializable, and when compiling a fiddle file, all -- the import statements should supply an fdi (fiddle interface) file to speed -- up subsequent compilations. import Data.Text import Data.Word data ObjectType = ObjectType { objectTypeSize :: Word32 } data Metatype = Object { objectLocation :: Word64, objectType :: Text } | Type { typeSizeBytes :: Word32 } data Element a = Element { elementFullyQualifiedSymbol :: Text, elementDocumentation :: Maybe Text, elementMetatype :: Metatype, elementAnnotation :: a } data ResolvedImport a = ResolvedImport { dependencies :: [String] } data FileInterface a = FiddleInterface { exportedElements :: [Element a] }