Skip to content

Instantly share code, notes, and snippets.

@Xliff
Created July 14, 2018 03:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Xliff/6b16cccd09cee13d543bed8745730042 to your computer and use it in GitHub Desktop.
Save Xliff/6b16cccd09cee13d543bed8745730042 to your computer and use it in GitHub Desktop.

Is there a better way to do this:

typedef enum {
  GTK_JUNCTION_NONE   = 0,
  GTK_JUNCTION_CORNER_TOPLEFT = 1 << 0,
  GTK_JUNCTION_CORNER_TOPRIGHT = 1 << 1,
  GTK_JUNCTION_CORNER_BOTTOMLEFT = 1 << 2,
  GTK_JUNCTION_CORNER_BOTTOMRIGHT = 1 << 3,
  GTK_JUNCTION_TOP    = (GTK_JUNCTION_CORNER_TOPLEFT | GTK_JUNCTION_CORNER_TOPRIGHT),
  GTK_JUNCTION_BOTTOM = (GTK_JUNCTION_CORNER_BOTTOMLEFT | GTK_JUNCTION_CORNER_BOTTOMRIGHT),
  GTK_JUNCTION_LEFT   = (GTK_JUNCTION_CORNER_TOPLEFT | GTK_JUNCTION_CORNER_BOTTOMLEFT),
  GTK_JUNCTION_RIGHT  = (GTK_JUNCTION_CORNER_TOPRIGHT | GTK_JUNCTION_CORNER_BOTTOMRIGHT)
} GtkJunctionSides;

in Perl6, without doing this:

our enum GtkJunctionSides is export (
  GTK_JUNCTION_NONE               => 0,
  GTK_JUNCTION_CORNER_TOPLEFT     => 1,
  GTK_JUNCTION_CORNER_TOPRIGHT    => 2,
  GTK_JUNCTION_CORNER_BOTTOMLEFT  => 4,
  GTK_JUNCTION_CORNER_BOTTOMRIGHT => 8,
  GTK_JUNCTION_TOP                => 1 + 2,
  GTK_JUNCTION_BOTTOM             => 4 + 8,
  GTK_JUNCTION_LEFT               => 1 + 4,
  GTK_JUNCTION_RIGHT              => 2 + 8
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment