{-
    BNF Converter: C++ common functions
    Copyright (C) 2008  Author:  Martin Ejdestig

-}

module BNFC.Backend.CPP.STL.STLUtils where

import Data.Char
import Data.Maybe (fromMaybe)

nsDefine :: Maybe String -> String -> String
nsDefine :: Maybe String -> String -> String
nsDefine Maybe String
inPackage String
h = forall b a. b -> (a -> b) -> Maybe a -> b
maybe String
h (\String
ns -> forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
toUpper String
ns forall a. [a] -> [a] -> [a]
++ String
"_" forall a. [a] -> [a] -> [a]
++ String
h) Maybe String
inPackage

nsStart :: Maybe String -> String
nsStart :: Maybe String -> String
nsStart = forall b a. b -> (a -> b) -> Maybe a -> b
maybe String
"" (\String
ns -> String
"namespace " forall a. [a] -> [a] -> [a]
++ String
ns forall a. [a] -> [a] -> [a]
++ String
"\n{")

nsEnd :: Maybe String -> String
nsEnd :: Maybe String -> String
nsEnd = forall b a. b -> (a -> b) -> Maybe a -> b
maybe String
"" (forall a b. a -> b -> a
const String
"}")

nsScope :: Maybe String -> String
nsScope :: Maybe String -> String
nsScope = forall b a. b -> (a -> b) -> Maybe a -> b
maybe String
"" (forall a. [a] -> [a] -> [a]
++ String
"::")

nsString :: Maybe String -> String
nsString :: Maybe String -> String
nsString = forall a. a -> Maybe a -> a
fromMaybe String
""