@@ -9,6 +9,7 @@ import qualified Data.Set as S
9
9
import qualified System.Console.GetOpt as G
10
10
import qualified System.Environment as E
11
11
import MangledRegistry
12
+ import ManPages
12
13
13
14
data Option
14
15
= PrintFeature
@@ -64,7 +65,7 @@ main = do
64
65
putStrLn " --"
65
66
putStrLn " --------------------------------------------------------------------------------"
66
67
putStrLn " "
67
- let (ts,es,cs) = getTyEnCo api version profile registry
68
+ let (ts,es,cs) = fixedGetTyEnCo api version profile registry
68
69
putStrLn $ " module " ++ modName ++ " ("
69
70
CM. unless (null ts) $ do
70
71
putStrLn " -- * Types"
@@ -144,14 +145,23 @@ main = do
144
145
putStrLn " throwIfNullFunPtr :: String -> IO (FunPtr a) -> IO (FunPtr a)"
145
146
putStrLn " throwIfNullFunPtr = throwIf (== nullFunPtr) . const"
146
147
putStrLn " "
147
- mapM_ (putStrLn . showCommand) (M. elems (commands registry))
148
+ mapM_ (putStrLn . showCommand api ) (M. elems (commands registry))
148
149
149
150
capitalize :: String -> String
150
151
capitalize str = C. toUpper (head str) : tail str
151
152
152
153
separate :: (a -> String ) -> [a ] -> String
153
154
separate f = L. intercalate " ,\n " . map (" " ++ ) . map f
154
155
156
+ -- Annoyingly enough, the OpenGL registry doesn't contain any enums for
157
+ -- OpenGL 1.0, so let's just use the OpenGL 1.1 ones.
158
+ fixedGetTyEnCo :: API -> Version -> ProfileName -> Registry -> ([TypeName ],[Enum' ],[Command ])
159
+ fixedGetTyEnCo api version profile registry
160
+ | api == API " gl" && version == read " 1.0" = (ts, es11, cs)
161
+ | otherwise = tec
162
+ where tec@ (ts, _, cs) = getTyEnCo api version profile registry
163
+ (_, es11, _) = getTyEnCo api (read " 1.1" ) profile registry
164
+
155
165
getTyEnCo :: API -> Version -> ProfileName -> Registry -> ([TypeName ],[Enum' ],[Command ])
156
166
getTyEnCo api version profile registry = (ts', es, cs)
157
167
where ts = [ n | TypeElement n <- lst ]
@@ -194,10 +204,12 @@ convertEnum e =
194
204
, n ++ " = " ++ unEnumValue (enumValue e) ]
195
205
where n = unEnumName . enumName $ e
196
206
197
- showCommand :: Command -> String
198
- showCommand c =
207
+ showCommand :: API -> Command -> String
208
+ showCommand api c =
199
209
showString (take 80 (" -- " ++ name ++ " " ++ repeat ' -' ) ++ " \n\n " ) .
200
210
211
+ showString url .
212
+
201
213
showString (name ++ " \n " ) .
202
214
showString (" :: " ++ signature True ) .
203
215
showString (name ++ " = " ++ dyn_name ++ " " ++ ptr_name ++ " \n\n " ) .
@@ -221,6 +233,9 @@ showCommand c =
221
233
L. intercalate ((if withComment then " " else " " ) ++ " -> " )
222
234
([showSignatureElement withComment False t | t <- paramTypes c] ++
223
235
[showSignatureElement withComment True (resultType c)])
236
+ url = maybe " " (\ u -> " -- | Manual page: <" ++ u ++ " >\n " ) $
237
+ M. lookup (api, CommandName name) manPageURLs
238
+
224
239
225
240
showSignatureElement :: Bool -> Bool -> SignatureElement -> String
226
241
showSignatureElement withComment isResult sigElem = el ++ comment
0 commit comments