-- GENERATED by C->Haskell Compiler, version 0.17.2 Crystal Seed, 24 Jan 2009 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "lib/UI/NCurses/Enums.chs" #-}
-- Copyright (C) 2010 John Millikin <jmillikin@gmail.com>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.

-- | This module is a hack to work around c2hs's lack of #define hooks.
-- the idea is to create a new class 'Enum' which uses 'Integer' instead
-- of 'Int', so integral defines of any size can be retrieved.
module UI.NCurses.Enums where

import           Prelude (Integer, error, show, (++), compare, Ordering(..))









class Enum a where
	toEnum :: Integer -> a
	fromEnum :: a -> Integer

	-- c2hs 0.18.1 additionally defines these in its Enum instances,
	-- but we don't use them.
	pred, succ :: a -> a
	pred = error "ncurses Enum: pred"
	succ = error "ncurses Enum: succ"
	
	enumFrom :: a -> [a]
	enumFrom = error "ncurses Enum: enumFrom"
	enumFromThen :: a -> a -> [a]
	enumFromThen = error "ncurses Enum: enumFromThen"
	enumFromTo :: a -> a -> [a]
	enumFromTo = error "ncurses Enum: enumFromTo"
	enumFromThenTo :: a -> a -> a -> [a]
	enumFromThenTo = error "ncurses Enum: enumFromThenTo"



-- misc enums
data EnumWrapper = ALL_MOUSE_EVENTS
                 | ERR
                 
instance Enum EnumWrapper where
  fromEnum ALL_MOUSE_EVENTS = 134217727
  fromEnum ERR = (-1)

  toEnum 134217727 = ALL_MOUSE_EVENTS
  toEnum (-1) = ERR
  toEnum unmatched = error ("EnumWrapper.toEnum: Cannot match " ++ show unmatched)

{-# LINE 63 "lib/UI/NCurses/Enums.chs" #-}


-- attributes
data Attribute = WA_STANDOUT
               | WA_UNDERLINE
               | WA_REVERSE
               | WA_BLINK
               | WA_DIM
               | WA_BOLD
               | WA_ALTCHARSET
               | WA_INVIS
               | WA_PROTECT
               | WA_HORIZONTAL
               | WA_LEFT
               | WA_LOW
               | WA_RIGHT
               | WA_TOP
               | WA_VERTICAL
               
instance Enum Attribute where
  fromEnum WA_STANDOUT = 65536
  fromEnum WA_UNDERLINE = 131072
  fromEnum WA_REVERSE = 262144
  fromEnum WA_BLINK = 524288
  fromEnum WA_DIM = 1048576
  fromEnum WA_BOLD = 2097152
  fromEnum WA_ALTCHARSET = 4194304
  fromEnum WA_INVIS = 8388608
  fromEnum WA_PROTECT = 16777216
  fromEnum WA_HORIZONTAL = 33554432
  fromEnum WA_LEFT = 67108864
  fromEnum WA_LOW = 134217728
  fromEnum WA_RIGHT = 268435456
  fromEnum WA_TOP = 536870912
  fromEnum WA_VERTICAL = 1073741824

  toEnum 65536 = WA_STANDOUT
  toEnum 131072 = WA_UNDERLINE
  toEnum 262144 = WA_REVERSE
  toEnum 524288 = WA_BLINK
  toEnum 1048576 = WA_DIM
  toEnum 2097152 = WA_BOLD
  toEnum 4194304 = WA_ALTCHARSET
  toEnum 8388608 = WA_INVIS
  toEnum 16777216 = WA_PROTECT
  toEnum 33554432 = WA_HORIZONTAL
  toEnum 67108864 = WA_LEFT
  toEnum 134217728 = WA_LOW
  toEnum 268435456 = WA_RIGHT
  toEnum 536870912 = WA_TOP
  toEnum 1073741824 = WA_VERTICAL
  toEnum unmatched = error ("Attribute.toEnum: Cannot match " ++ show unmatched)

{-# LINE 85 "lib/UI/NCurses/Enums.chs" #-}


-- colors
data Color = COLOR_BLACK
           | COLOR_RED
           | COLOR_GREEN
           | COLOR_YELLOW
           | COLOR_BLUE
           | COLOR_MAGENTA
           | COLOR_CYAN
           | COLOR_WHITE
           | COLOR_DEFAULT
           
instance Enum Color where
  fromEnum COLOR_BLACK = 0
  fromEnum COLOR_RED = 1
  fromEnum COLOR_GREEN = 2
  fromEnum COLOR_YELLOW = 3
  fromEnum COLOR_BLUE = 4
  fromEnum COLOR_MAGENTA = 5
  fromEnum COLOR_CYAN = 6
  fromEnum COLOR_WHITE = 7
  fromEnum COLOR_DEFAULT = (-1)

  toEnum 0 = COLOR_BLACK
  toEnum 1 = COLOR_RED
  toEnum 2 = COLOR_GREEN
  toEnum 3 = COLOR_YELLOW
  toEnum 4 = COLOR_BLUE
  toEnum 5 = COLOR_MAGENTA
  toEnum 6 = COLOR_CYAN
  toEnum 7 = COLOR_WHITE
  toEnum (-1) = COLOR_DEFAULT
  toEnum unmatched = error ("Color.toEnum: Cannot match " ++ show unmatched)

{-# LINE 101 "lib/UI/NCurses/Enums.chs" #-}


-- keys
data Key = KEY_CODE_YES
         | KEY_DOWN
         | KEY_UP
         | KEY_LEFT
         | KEY_RIGHT
         | KEY_HOME
         | KEY_BACKSPACE
         | KEY_F0
         | KEY_DL
         | KEY_IL
         | KEY_DC
         | KEY_IC
         | KEY_EIC
         | KEY_CLEAR
         | KEY_EOS
         | KEY_EOL
         | KEY_SF
         | KEY_SR
         | KEY_NPAGE
         | KEY_PPAGE
         | KEY_STAB
         | KEY_CTAB
         | KEY_CATAB
         | KEY_ENTER
         | KEY_PRINT
         | KEY_LL
         | KEY_A1
         | KEY_A3
         | KEY_B2
         | KEY_C1
         | KEY_C3
         | KEY_BTAB
         | KEY_BEG
         | KEY_CANCEL
         | KEY_CLOSE
         | KEY_COMMAND
         | KEY_COPY
         | KEY_CREATE
         | KEY_END
         | KEY_EXIT
         | KEY_FIND
         | KEY_HELP
         | KEY_MARK
         | KEY_MESSAGE
         | KEY_MOVE
         | KEY_NEXT
         | KEY_OPEN
         | KEY_OPTIONS
         | KEY_PREVIOUS
         | KEY_REDO
         | KEY_REFERENCE
         | KEY_REFRESH
         | KEY_REPLACE
         | KEY_RESTART
         | KEY_RESUME
         | KEY_SAVE
         | KEY_SBEG
         | KEY_SCANCEL
         | KEY_SCOMMAND
         | KEY_SCOPY
         | KEY_SCREATE
         | KEY_SDC
         | KEY_SDL
         | KEY_SELECT
         | KEY_SEND
         | KEY_SEOL
         | KEY_SEXIT
         | KEY_SFIND
         | KEY_SHELP
         | KEY_SHOME
         | KEY_SIC
         | KEY_SLEFT
         | KEY_SMESSAGE
         | KEY_SMOVE
         | KEY_SNEXT
         | KEY_SOPTIONS
         | KEY_SPREVIOUS
         | KEY_SPRINT
         | KEY_SREDO
         | KEY_SREPLACE
         | KEY_SRIGHT
         | KEY_SRSUME
         | KEY_SSAVE
         | KEY_SSUSPEND
         | KEY_SUNDO
         | KEY_SUSPEND
         | KEY_UNDO
         | KEY_MOUSE
         | KEY_RESIZE
         | KEY_EVENT
         
instance Enum Key where
  fromEnum KEY_CODE_YES = 256
  fromEnum KEY_DOWN = 258
  fromEnum KEY_UP = 259
  fromEnum KEY_LEFT = 260
  fromEnum KEY_RIGHT = 261
  fromEnum KEY_HOME = 262
  fromEnum KEY_BACKSPACE = 263
  fromEnum KEY_F0 = 264
  fromEnum KEY_DL = 328
  fromEnum KEY_IL = 329
  fromEnum KEY_DC = 330
  fromEnum KEY_IC = 331
  fromEnum KEY_EIC = 332
  fromEnum KEY_CLEAR = 333
  fromEnum KEY_EOS = 334
  fromEnum KEY_EOL = 335
  fromEnum KEY_SF = 336
  fromEnum KEY_SR = 337
  fromEnum KEY_NPAGE = 338
  fromEnum KEY_PPAGE = 339
  fromEnum KEY_STAB = 340
  fromEnum KEY_CTAB = 341
  fromEnum KEY_CATAB = 342
  fromEnum KEY_ENTER = 343
  fromEnum KEY_PRINT = 346
  fromEnum KEY_LL = 347
  fromEnum KEY_A1 = 348
  fromEnum KEY_A3 = 349
  fromEnum KEY_B2 = 350
  fromEnum KEY_C1 = 351
  fromEnum KEY_C3 = 352
  fromEnum KEY_BTAB = 353
  fromEnum KEY_BEG = 354
  fromEnum KEY_CANCEL = 355
  fromEnum KEY_CLOSE = 356
  fromEnum KEY_COMMAND = 357
  fromEnum KEY_COPY = 358
  fromEnum KEY_CREATE = 359
  fromEnum KEY_END = 360
  fromEnum KEY_EXIT = 361
  fromEnum KEY_FIND = 362
  fromEnum KEY_HELP = 363
  fromEnum KEY_MARK = 364
  fromEnum KEY_MESSAGE = 365
  fromEnum KEY_MOVE = 366
  fromEnum KEY_NEXT = 367
  fromEnum KEY_OPEN = 368
  fromEnum KEY_OPTIONS = 369
  fromEnum KEY_PREVIOUS = 370
  fromEnum KEY_REDO = 371
  fromEnum KEY_REFERENCE = 372
  fromEnum KEY_REFRESH = 373
  fromEnum KEY_REPLACE = 374
  fromEnum KEY_RESTART = 375
  fromEnum KEY_RESUME = 376
  fromEnum KEY_SAVE = 377
  fromEnum KEY_SBEG = 378
  fromEnum KEY_SCANCEL = 379
  fromEnum KEY_SCOMMAND = 380
  fromEnum KEY_SCOPY = 381
  fromEnum KEY_SCREATE = 382
  fromEnum KEY_SDC = 383
  fromEnum KEY_SDL = 384
  fromEnum KEY_SELECT = 385
  fromEnum KEY_SEND = 386
  fromEnum KEY_SEOL = 387
  fromEnum KEY_SEXIT = 388
  fromEnum KEY_SFIND = 389
  fromEnum KEY_SHELP = 390
  fromEnum KEY_SHOME = 391
  fromEnum KEY_SIC = 392
  fromEnum KEY_SLEFT = 393
  fromEnum KEY_SMESSAGE = 394
  fromEnum KEY_SMOVE = 395
  fromEnum KEY_SNEXT = 396
  fromEnum KEY_SOPTIONS = 397
  fromEnum KEY_SPREVIOUS = 398
  fromEnum KEY_SPRINT = 399
  fromEnum KEY_SREDO = 400
  fromEnum KEY_SREPLACE = 401
  fromEnum KEY_SRIGHT = 402
  fromEnum KEY_SRSUME = 403
  fromEnum KEY_SSAVE = 404
  fromEnum KEY_SSUSPEND = 405
  fromEnum KEY_SUNDO = 406
  fromEnum KEY_SUSPEND = 407
  fromEnum KEY_UNDO = 408
  fromEnum KEY_MOUSE = 409
  fromEnum KEY_RESIZE = 410
  fromEnum KEY_EVENT = 411

  toEnum 256 = KEY_CODE_YES
  toEnum 258 = KEY_DOWN
  toEnum 259 = KEY_UP
  toEnum 260 = KEY_LEFT
  toEnum 261 = KEY_RIGHT
  toEnum 262 = KEY_HOME
  toEnum 263 = KEY_BACKSPACE
  toEnum 264 = KEY_F0
  toEnum 328 = KEY_DL
  toEnum 329 = KEY_IL
  toEnum 330 = KEY_DC
  toEnum 331 = KEY_IC
  toEnum 332 = KEY_EIC
  toEnum 333 = KEY_CLEAR
  toEnum 334 = KEY_EOS
  toEnum 335 = KEY_EOL
  toEnum 336 = KEY_SF
  toEnum 337 = KEY_SR
  toEnum 338 = KEY_NPAGE
  toEnum 339 = KEY_PPAGE
  toEnum 340 = KEY_STAB
  toEnum 341 = KEY_CTAB
  toEnum 342 = KEY_CATAB
  toEnum 343 = KEY_ENTER
  toEnum 346 = KEY_PRINT
  toEnum 347 = KEY_LL
  toEnum 348 = KEY_A1
  toEnum 349 = KEY_A3
  toEnum 350 = KEY_B2
  toEnum 351 = KEY_C1
  toEnum 352 = KEY_C3
  toEnum 353 = KEY_BTAB
  toEnum 354 = KEY_BEG
  toEnum 355 = KEY_CANCEL
  toEnum 356 = KEY_CLOSE
  toEnum 357 = KEY_COMMAND
  toEnum 358 = KEY_COPY
  toEnum 359 = KEY_CREATE
  toEnum 360 = KEY_END
  toEnum 361 = KEY_EXIT
  toEnum 362 = KEY_FIND
  toEnum 363 = KEY_HELP
  toEnum 364 = KEY_MARK
  toEnum 365 = KEY_MESSAGE
  toEnum 366 = KEY_MOVE
  toEnum 367 = KEY_NEXT
  toEnum 368 = KEY_OPEN
  toEnum 369 = KEY_OPTIONS
  toEnum 370 = KEY_PREVIOUS
  toEnum 371 = KEY_REDO
  toEnum 372 = KEY_REFERENCE
  toEnum 373 = KEY_REFRESH
  toEnum 374 = KEY_REPLACE
  toEnum 375 = KEY_RESTART
  toEnum 376 = KEY_RESUME
  toEnum 377 = KEY_SAVE
  toEnum 378 = KEY_SBEG
  toEnum 379 = KEY_SCANCEL
  toEnum 380 = KEY_SCOMMAND
  toEnum 381 = KEY_SCOPY
  toEnum 382 = KEY_SCREATE
  toEnum 383 = KEY_SDC
  toEnum 384 = KEY_SDL
  toEnum 385 = KEY_SELECT
  toEnum 386 = KEY_SEND
  toEnum 387 = KEY_SEOL
  toEnum 388 = KEY_SEXIT
  toEnum 389 = KEY_SFIND
  toEnum 390 = KEY_SHELP
  toEnum 391 = KEY_SHOME
  toEnum 392 = KEY_SIC
  toEnum 393 = KEY_SLEFT
  toEnum 394 = KEY_SMESSAGE
  toEnum 395 = KEY_SMOVE
  toEnum 396 = KEY_SNEXT
  toEnum 397 = KEY_SOPTIONS
  toEnum 398 = KEY_SPREVIOUS
  toEnum 399 = KEY_SPRINT
  toEnum 400 = KEY_SREDO
  toEnum 401 = KEY_SREPLACE
  toEnum 402 = KEY_SRIGHT
  toEnum 403 = KEY_SRSUME
  toEnum 404 = KEY_SSAVE
  toEnum 405 = KEY_SSUSPEND
  toEnum 406 = KEY_SUNDO
  toEnum 407 = KEY_SUSPEND
  toEnum 408 = KEY_UNDO
  toEnum 409 = KEY_MOUSE
  toEnum 410 = KEY_RESIZE
  toEnum 411 = KEY_EVENT
  toEnum unmatched = error ("Key.toEnum: Cannot match " ++ show unmatched)

{-# LINE 198 "lib/UI/NCurses/Enums.chs" #-}


-- mouse buttons
data Button = BUTTON_CTRL
            | BUTTON_SHIFT
            | BUTTON_ALT
            | BUTTON1_RELEASED
            | BUTTON1_PRESSED
            | BUTTON1_CLICKED
            | BUTTON1_DOUBLE_CLICKED
            | BUTTON1_TRIPLE_CLICKED
            | BUTTON2_RELEASED
            | BUTTON2_PRESSED
            | BUTTON2_CLICKED
            | BUTTON2_DOUBLE_CLICKED
            | BUTTON2_TRIPLE_CLICKED
            | BUTTON3_RELEASED
            | BUTTON3_PRESSED
            | BUTTON3_CLICKED
            | BUTTON3_DOUBLE_CLICKED
            | BUTTON3_TRIPLE_CLICKED
            | BUTTON4_RELEASED
            | BUTTON4_PRESSED
            | BUTTON4_CLICKED
            | BUTTON4_DOUBLE_CLICKED
            | BUTTON4_TRIPLE_CLICKED
            
instance Enum Button where
  fromEnum BUTTON_CTRL = 16777216
  fromEnum BUTTON_SHIFT = 33554432
  fromEnum BUTTON_ALT = 67108864
  fromEnum BUTTON1_RELEASED = 1
  fromEnum BUTTON1_PRESSED = 2
  fromEnum BUTTON1_CLICKED = 4
  fromEnum BUTTON1_DOUBLE_CLICKED = 8
  fromEnum BUTTON1_TRIPLE_CLICKED = 16
  fromEnum BUTTON2_RELEASED = 64
  fromEnum BUTTON2_PRESSED = 128
  fromEnum BUTTON2_CLICKED = 256
  fromEnum BUTTON2_DOUBLE_CLICKED = 512
  fromEnum BUTTON2_TRIPLE_CLICKED = 1024
  fromEnum BUTTON3_RELEASED = 4096
  fromEnum BUTTON3_PRESSED = 8192
  fromEnum BUTTON3_CLICKED = 16384
  fromEnum BUTTON3_DOUBLE_CLICKED = 32768
  fromEnum BUTTON3_TRIPLE_CLICKED = 65536
  fromEnum BUTTON4_RELEASED = 262144
  fromEnum BUTTON4_PRESSED = 524288
  fromEnum BUTTON4_CLICKED = 1048576
  fromEnum BUTTON4_DOUBLE_CLICKED = 2097152
  fromEnum BUTTON4_TRIPLE_CLICKED = 4194304

  toEnum 16777216 = BUTTON_CTRL
  toEnum 33554432 = BUTTON_SHIFT
  toEnum 67108864 = BUTTON_ALT
  toEnum 1 = BUTTON1_RELEASED
  toEnum 2 = BUTTON1_PRESSED
  toEnum 4 = BUTTON1_CLICKED
  toEnum 8 = BUTTON1_DOUBLE_CLICKED
  toEnum 16 = BUTTON1_TRIPLE_CLICKED
  toEnum 64 = BUTTON2_RELEASED
  toEnum 128 = BUTTON2_PRESSED
  toEnum 256 = BUTTON2_CLICKED
  toEnum 512 = BUTTON2_DOUBLE_CLICKED
  toEnum 1024 = BUTTON2_TRIPLE_CLICKED
  toEnum 4096 = BUTTON3_RELEASED
  toEnum 8192 = BUTTON3_PRESSED
  toEnum 16384 = BUTTON3_CLICKED
  toEnum 32768 = BUTTON3_DOUBLE_CLICKED
  toEnum 65536 = BUTTON3_TRIPLE_CLICKED
  toEnum 262144 = BUTTON4_RELEASED
  toEnum 524288 = BUTTON4_PRESSED
  toEnum 1048576 = BUTTON4_CLICKED
  toEnum 2097152 = BUTTON4_DOUBLE_CLICKED
  toEnum 4194304 = BUTTON4_TRIPLE_CLICKED
  toEnum unmatched = error ("Button.toEnum: Cannot match " ++ show unmatched)

{-# LINE 240 "lib/UI/NCurses/Enums.chs" #-}