Haskell.org
Sign In
Sign Up
Manage this list
Sign In
Sign Up
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
C2hs
Thread
Start a new thread
Download
Threads by
month
----- 2025 -----
May
April
March
February
January
----- 2024 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2023 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2022 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2021 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2020 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2019 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2018 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2017 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2016 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2015 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2014 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2013 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2012 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2011 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2010 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2009 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2008 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2007 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2006 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2005 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2004 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2003 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2002 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2001 -----
December
November
October
September
August
July
June
May
April
March
February
January
c2hs@haskell.org
August 2011
1 participants
1 discussions
[c2hs] #38: Need to think how to bind C enums with aliases
by c2hs
26 Aug '11
26 Aug '11
#38: Need to think how to bind C enums with aliases -------------------------+-------------------------------------------------- Reporter: duncan | Owner: Type: enhancement | Status: new Priority: normal | Milestone: Component: general | Version: 0.16.0 Keywords: | -------------------------+-------------------------------------------------- Consider this C enum: {{{ typedef enum { GTK_ANCHOR_CENTER, GTK_ANCHOR_NORTH, GTK_ANCHOR_NORTH_WEST, GTK_ANCHOR_NORTH_EAST, GTK_ANCHOR_SOUTH, GTK_ANCHOR_SOUTH_WEST, GTK_ANCHOR_SOUTH_EAST, GTK_ANCHOR_WEST, GTK_ANCHOR_EAST, GTK_ANCHOR_N = GTK_ANCHOR_NORTH, GTK_ANCHOR_NW = GTK_ANCHOR_NORTH_WEST, GTK_ANCHOR_NE = GTK_ANCHOR_NORTH_EAST, GTK_ANCHOR_S = GTK_ANCHOR_SOUTH, GTK_ANCHOR_SW = GTK_ANCHOR_SOUTH_WEST, GTK_ANCHOR_SE = GTK_ANCHOR_SOUTH_EAST, GTK_ANCHOR_W = GTK_ANCHOR_WEST, GTK_ANCHOR_E = GTK_ANCHOR_EAST } GtkAnchorType; }}} Of course in C, enums are really ints, so it's ok to have aliases. It is the case that `GTK_ANCHOR_E = GTK_ANCHOR_EAST` since both enum names have the int value 9. Currently c2hs binds this as: {{{ data GtkAnchorType = GtkAnchorCenter | GtkAnchorNorth | GtkAnchorNorthWest | GtkAnchorNorthEast | GtkAnchorSouth | GtkAnchorSouthWest | GtkAnchorSouthEast | GtkAnchorWest | GtkAnchorEast | GtkAnchorN | GtkAnchorNw | GtkAnchorNe | GtkAnchorS | GtkAnchorSw | GtkAnchorSe | GtkAnchorW | GtkAnchorE deriving (Eq,Show) instance Enum GtkAnchorType where fromEnum GtkAnchorCenter = 0 fromEnum GtkAnchorNorth = 1 fromEnum GtkAnchorNorthWest = 2 fromEnum GtkAnchorNorthEast = 3 fromEnum GtkAnchorSouth = 4 fromEnum GtkAnchorSouthWest = 5 fromEnum GtkAnchorSouthEast = 6 fromEnum GtkAnchorWest = 7 fromEnum GtkAnchorEast = 8 fromEnum GtkAnchorN = 1 fromEnum GtkAnchorNw = 2 fromEnum GtkAnchorNe = 3 fromEnum GtkAnchorS = 4 fromEnum GtkAnchorSw = 5 fromEnum GtkAnchorSe = 6 fromEnum GtkAnchorW = 7 fromEnum GtkAnchorE = 8 toEnum 0 = GtkAnchorCenter toEnum 1 = GtkAnchorNorth toEnum 2 = GtkAnchorNorthWest toEnum 3 = GtkAnchorNorthEast toEnum 4 = GtkAnchorSouth toEnum 5 = GtkAnchorSouthWest toEnum 6 = GtkAnchorSouthEast toEnum 7 = GtkAnchorWest toEnum 8 = GtkAnchorEast toEnum 1 = GtkAnchorN toEnum 2 = GtkAnchorNw toEnum 3 = GtkAnchorNe toEnum 4 = GtkAnchorS toEnum 5 = GtkAnchorSw toEnum 6 = GtkAnchorSe toEnum 7 = GtkAnchorW toEnum 8 = GtkAnchorE toEnum unmatched = error ("GtkAnchorType.toEnum: Cannot match " ++ show unmatched) }}} Note in particular that the `toEnum` has overlaps. It's also obviously not the case in Haskell that `GtkAnchorE = GtkAnchorEast`. Perhaps we should ignore aliases, that is pretend that the enum values `GTK_ANCHOR_E` etc are simply not present. -- Ticket URL: <
http://hackage.haskell.org/trac/c2hs/ticket/38
> c2hs <
http://www.cse.unsw.edu.au/~chak/haskell/c2hs/
> C->Haskell, An Interface Generator for Haskell
1
0
0
0
Results per page:
10
25
50
100
200