packages feed

LibClang-3.8.0: test/Test_ChildVisitor.hs

{-# LANGUAGE FlexibleContexts #-}
import System.Environment(getArgs)
import Control.Monad.IO.Class(liftIO)
import Text.Printf(printf)
import qualified Data.Vector.Storable as DVS(mapM_)

import Clang.String(unpack)
import Clang.TranslationUnit(getCursor)
import Clang(parseSourceFile, getChildren)
import Clang.Cursor(getKind, getDisplayName, getCursorKindSpelling)

test tu = getCursor tu >>= getChildren >>= DVS.mapM_ printInfo
    where printInfo c = do
            name <- getDisplayName c >>= unpack
            tstr <- getCursorKindSpelling (getKind c) >>= unpack
            liftIO $ printf "Name:%s, Kind:%s\n" name tstr

main = do
  (arg:args) <- getArgs
  parseSourceFile arg args test