language-c-0.4.7: Analysis and generation of C code

Portabilityghc
Stabilityexperimental
Maintainerbenedikt.huber@gmail.com
Safe HaskellNone

Language.C.Data.Position

Description

Source code position

Synopsis

Documentation

data Position

uniform representation of source file positions

position :: Int -> String -> Int -> Int -> Position

position absoluteOffset fileName lineNumber columnNumber initializes a Position using the given arguments

type PosLength = (Position, Int)

Position and length of a token

posFile :: Position -> String

source file

posRow :: Position -> Int

row (line) in the original file. Affected by #LINE pragmas.

posColumn :: Position -> Int

Deprecated: column number information is inaccurate in presence of macros - do not rely on it.

column in the preprocessed file. Inaccurate w.r.t. to the original file in the presence of preprocessor macros.

posOffset :: Position -> Int

absolute offset in the preprocessed file

initPos :: FilePath -> Position

initialize a Position to the start of the translation unit starting in the given file

isSourcePos :: Position -> Bool

returns True if the given position refers to an actual source file

nopos :: Position

no position (for unknown position information)

isNoPos :: Position -> Bool

returns True if the there is no position information available

builtinPos :: Position

position attached to built-in objects

isBuiltinPos :: Position -> Bool

returns True if the given position refers to a builtin definition

internalPos :: Position

position used for internal errors

isInternalPos :: Position -> Bool

returns True if the given position is internal

incPos :: Position -> Int -> Position

advance column

retPos :: Position -> Position

advance to next line

adjustPos :: FilePath -> Int -> Position -> Position

adjust position: change file and line number, reseting column to 1. This is usually used for #LINE pragmas. The absolute offset is not changed - this can be done by adjustPos newFile line . incPos (length pragma).

incOffset :: Position -> Int -> Position

advance just the offset

class Pos a where

class of type which aggregate a source code location

Methods

posOf :: a -> Position