1 (* Copyright (C
) 2002-2006 Henry Cejtin
, Matthew Fluet
, Suresh
2 * Jagannathan
, and Stephen Weeks
.
4 * MLton is released under a BSD
-style license
.
5 * See the file MLton
-LICENSE for details
.
8 structure NetProtDB
: NET_PROT_DB
=
10 structure Prim
= PrimitiveFFI
.NetProtDB
12 datatype entry
= T
of {name
: string,
17 fun make
s (T r
) = s r
20 val aliases
= make #aliases
21 val protocol
= C_Int
.toInt
o (make #protocol
)
25 fun get (i
: C_Int
.t
): entry option
=
28 val name
= CUtil
.C_String
.toString (Prim
.getEntryName ())
29 val numAliases
= Prim
.getEntryAliasesNum ()
30 fun fill (n
, aliases
) =
31 if C_Int
.< (n
, numAliases
)
33 val alias
= CUtil
.C_String
.toString (Prim
.getEntryAliasesN n
)
35 fill (C_Int
.+ (n
, 1), alias
::aliases
)
38 val aliases
= fill (0, [])
39 val protocol
= Prim
.getEntryProto ()
48 get (Prim
.getByName (NullString
.nullTerm name
))
49 fun getByNumber proto
=
50 get (Prim
.getByNumber (C_Int
.fromInt proto
))