summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKrasimir Angelov <kr.angelov@gmail.com>2017-09-05 11:56:53 +0200
committerKrasimir Angelov <kr.angelov@gmail.com>2017-09-05 11:56:53 +0200
commit18f2135785a71a1e93519a060d40b7ba523cf03b (patch)
tree178a8f51d9102eaab31902bd451e043221f90242 /src
parent0469f4e97af7ea80d55ec9f2c44da3e103a95b1a (diff)
added function printName in the Haskell binding
Diffstat (limited to 'src')
-rw-r--r--src/runtime/haskell-bind/PGF2.hsc15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc
index 03e899798..8fb6e6ccb 100644
--- a/src/runtime/haskell-bind/PGF2.hsc
+++ b/src/runtime/haskell-bind/PGF2.hsc
@@ -55,9 +55,11 @@ module PGF2 (-- * PGF
-- * Concrete syntax
ConcName,Concr,languages,concreteName,languageCode,
+
-- ** Linearization
linearize,linearizeAll,tabularLinearize,tabularLinearizeAll,bracketedLinearize,
FId, LIndex, BracketedString(..), showBracketedString, flattenBracketedString,
+ printName,
alignWords,
-- ** Parsing
@@ -911,6 +913,7 @@ alignWords lang e = unsafePerformIO $
withGuPool $ \pl ->
do exn <- gu_new_exn pl
seq <- pgf_align_words (concr lang) (expr e) exn pl
+ touchConcr lang
touchExpr e
failed <- gu_exn_is_raised exn
if failed
@@ -935,6 +938,18 @@ alignWords lang e = unsafePerformIO $
(fids :: [CInt]) <- peekArray (fromIntegral (n_fids :: CInt)) (ptr `plusPtr` (#offset PgfAlignmentPhrase, fids))
return (phrase, map fromIntegral fids)
+printName :: Concr -> Fun -> Maybe String
+printName lang fun =
+ unsafePerformIO $
+ withGuPool $ \tmpPl -> do
+ c_fun <- newUtf8CString fun tmpPl
+ c_name <- pgf_print_name (concr lang) c_fun
+ name <- if c_name == nullPtr
+ then return Nothing
+ else fmap Just (peekUtf8CString c_name)
+ touchConcr lang
+ return name
+
-- | List of all functions defined in the abstract syntax
functions :: PGF -> [Fun]
functions p =