packages feed

qtah-qt5-0.8.0: src/Graphics/UI/Qtah/Generated/Widgets/QDateTimeEdit.hs

{-# LANGUAGE FlexibleContexts, FlexibleInstances, ForeignFunctionInterface, MonoLocalBinds, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
---------- GENERATED FILE, EDITS WILL BE LOST ----------

module Graphics.UI.Qtah.Generated.Widgets.QDateTimeEdit (
  castQDateTimeEditToQAbstractSpinBox,
  castQAbstractSpinBoxToQDateTimeEdit,
  castQDateTimeEditToQWidget,
  castQWidgetToQDateTimeEdit,
  castQDateTimeEditToQObject,
  castQObjectToQDateTimeEdit,
  QDateTimeEditValue (..),
  QDateTimeEditConstPtr (..),
  calendarPopup,
  currentSection,
  currentSectionIndex,
  date,
  displayFormat,
  displayedSections,
  maximumDate,
  minimumDate,
  sectionCount,
  QDateTimeEditPtr (..),
  setCalendarPopup,
  setCurrentSection,
  setCurrentSectionIndex,
  setDate,
  setDisplayFormat,
  setMaximumDate,
  setMinimumDate,
  emitDateChanged,
  QDateTimeEditConst (..),
  castQDateTimeEditToConst,
  QDateTimeEdit (..),
  castQDateTimeEditToNonconst,
  new,
  QDateTimeEditSuper (..),
  QDateTimeEditSuperConst (..),
  QDateTimeEditSection (..),
  QDateTimeEditSections,
  IsQDateTimeEditSections (..),
  amPmSection,
  daySection,
  hourSection,
  mSecSection,
  minuteSection,
  monthSection,
  noSection,
  secondSection,
  yearSection,
  ) where

import Data.Bits ((.&.), (.|.))
import qualified Data.Bits as QtahDB
import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Foreign.Hoppy.Runtime as QtahFHR
import qualified Graphics.UI.Qtah.Flags as QtahFlags
import qualified Graphics.UI.Qtah.Generated.Core.QDate as M22
import qualified Graphics.UI.Qtah.Generated.Core.QObject as M94
import qualified Graphics.UI.Qtah.Generated.Core.QString as M142
import qualified Graphics.UI.Qtah.Generated.Widgets.QAbstractSpinBox as M366
import qualified Graphics.UI.Qtah.Generated.Widgets.QWidget as M506
import Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP
import qualified Prelude as QtahP

foreign import ccall "genpop__QDateTimeEdit_new" new' ::  HoppyP.IO (HoppyF.Ptr QDateTimeEdit)
foreign import ccall "genpop__QDateTimeEdit_calendarPopup" calendarPopup' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QDateTimeEdit_setCalendarPopup" setCalendarPopup' ::  HoppyF.Ptr QDateTimeEdit -> HoppyFC.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QDateTimeEdit_currentSection" currentSection' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QDateTimeEdit_setCurrentSection" setCurrentSection' ::  HoppyF.Ptr QDateTimeEdit -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QDateTimeEdit_currentSectionIndex" currentSectionIndex' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QDateTimeEdit_setCurrentSectionIndex" setCurrentSectionIndex' ::  HoppyF.Ptr QDateTimeEdit -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QDateTimeEdit_date" date' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO (HoppyF.Ptr M22.QDateConst)
foreign import ccall "genpop__QDateTimeEdit_setDate" setDate' ::  HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr M22.QDateConst -> HoppyP.IO ()
foreign import ccall "genpop__QDateTimeEdit_displayFormat" displayFormat' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO (HoppyF.Ptr M142.QStringConst)
foreign import ccall "genpop__QDateTimeEdit_setDisplayFormat" setDisplayFormat' ::  HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO ()
foreign import ccall "genpop__QDateTimeEdit_displayedSections" displayedSections' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QDateTimeEdit_maximumDate" maximumDate' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO (HoppyF.Ptr M22.QDateConst)
foreign import ccall "genpop__QDateTimeEdit_setMaximumDate" setMaximumDate' ::  HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr M22.QDateConst -> HoppyP.IO ()
foreign import ccall "genpop__QDateTimeEdit_minimumDate" minimumDate' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO (HoppyF.Ptr M22.QDateConst)
foreign import ccall "genpop__QDateTimeEdit_setMinimumDate" setMinimumDate' ::  HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr M22.QDateConst -> HoppyP.IO ()
foreign import ccall "genpop__QDateTimeEdit_sectionCount" sectionCount' ::  HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QDateTimeEdit_emitDateChanged" emitDateChanged' ::  HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr M22.QDateConst -> HoppyP.IO ()
foreign import ccall "gencast__QDateTimeEdit__QAbstractSpinBox" castQDateTimeEditToQAbstractSpinBox :: HoppyF.Ptr QDateTimeEditConst -> HoppyF.Ptr M366.QAbstractSpinBoxConst
foreign import ccall "gencast__QAbstractSpinBox__QDateTimeEdit" castQAbstractSpinBoxToQDateTimeEdit :: HoppyF.Ptr M366.QAbstractSpinBoxConst -> HoppyF.Ptr QDateTimeEditConst
foreign import ccall "gencast__QDateTimeEdit__QWidget" castQDateTimeEditToQWidget :: HoppyF.Ptr QDateTimeEditConst -> HoppyF.Ptr M506.QWidgetConst
foreign import ccall "gencast__QWidget__QDateTimeEdit" castQWidgetToQDateTimeEdit :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr QDateTimeEditConst
foreign import ccall "gencast__QDateTimeEdit__QObject" castQDateTimeEditToQObject :: HoppyF.Ptr QDateTimeEditConst -> HoppyF.Ptr M94.QObjectConst
foreign import ccall "gencast__QObject__QDateTimeEdit" castQObjectToQDateTimeEdit :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr QDateTimeEditConst
foreign import ccall "gendel__QDateTimeEdit" delete'QDateTimeEdit :: HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO ()
foreign import ccall "&gendel__QDateTimeEdit" deletePtr'QDateTimeEdit :: HoppyF.FunPtr (HoppyF.Ptr QDateTimeEditConst -> HoppyP.IO ())

class QDateTimeEditValue a where
  withQDateTimeEditPtr :: a -> (QDateTimeEditConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QDateTimeEditConstPtr a => QDateTimeEditValue a where
  withQDateTimeEditPtr = HoppyP.flip ($) . toQDateTimeEditConst

class (M366.QAbstractSpinBoxConstPtr this) => QDateTimeEditConstPtr this where
  toQDateTimeEditConst :: this -> QDateTimeEditConst

calendarPopup :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Bool)
calendarPopup arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (calendarPopup' arg'1')

currentSection :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO QDateTimeEditSection)
currentSection arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (currentSection' arg'1')

currentSectionIndex :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Int)
currentSectionIndex arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (currentSectionIndex' arg'1')

date :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO M22.QDate)
date arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M22.QDateConst) =<<
  (date' arg'1')

displayFormat :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO QtahP.String)
displayFormat arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M142.QStringConst) =<<
  (displayFormat' arg'1')

displayedSections :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO QDateTimeEditSections)
displayedSections arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    QtahP.return . QtahFlags.numToFlags
  ) =<<
  (displayedSections' arg'1')

maximumDate :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO M22.QDate)
maximumDate arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M22.QDateConst) =<<
  (maximumDate' arg'1')

minimumDate :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO M22.QDate)
minimumDate arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . M22.QDateConst) =<<
  (minimumDate' arg'1')

sectionCount :: (QDateTimeEditValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Int)
sectionCount arg'1 =
  withQDateTimeEditPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) =<<
  (sectionCount' arg'1')

class (QDateTimeEditConstPtr this, M366.QAbstractSpinBoxPtr this) => QDateTimeEditPtr this where
  toQDateTimeEdit :: this -> QDateTimeEdit

setCalendarPopup :: (QDateTimeEditPtr this) => (this) {- ^ this -} -> (HoppyP.Bool) -> (HoppyP.IO ())
setCalendarPopup arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQDateTimeEdit arg'1) $ \arg'1' ->
  (
    \x -> HoppyP.return $ if x then 1 else 0
  ) arg'2 >>= \arg'2' ->
  (setCalendarPopup' arg'1' arg'2')

setCurrentSection :: (QDateTimeEditPtr this) => (this) {- ^ this -} -> (QDateTimeEditSection) -> (HoppyP.IO ())
setCurrentSection arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQDateTimeEdit arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'2 >>= \arg'2' ->
  (setCurrentSection' arg'1' arg'2')

setCurrentSectionIndex :: (QDateTimeEditPtr this) => (this) {- ^ this -} -> (HoppyP.Int) -> (HoppyP.IO ())
setCurrentSectionIndex arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQDateTimeEdit arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  (setCurrentSectionIndex' arg'1' arg'2')

setDate :: (QDateTimeEditPtr this, M22.QDateValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setDate arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQDateTimeEdit arg'1) $ \arg'1' ->
  M22.withQDatePtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (setDate' arg'1' arg'2')

setDisplayFormat :: (QDateTimeEditPtr this, M142.QStringValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setDisplayFormat arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQDateTimeEdit arg'1) $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (setDisplayFormat' arg'1' arg'2')

setMaximumDate :: (QDateTimeEditPtr this, M22.QDateValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setMaximumDate arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQDateTimeEdit arg'1) $ \arg'1' ->
  M22.withQDatePtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (setMaximumDate' arg'1' arg'2')

setMinimumDate :: (QDateTimeEditPtr this, M22.QDateValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setMinimumDate arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQDateTimeEdit arg'1) $ \arg'1' ->
  M22.withQDatePtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (setMinimumDate' arg'1' arg'2')

emitDateChanged :: (QDateTimeEditPtr this, M22.QDateValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
emitDateChanged arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQDateTimeEdit arg'1) $ \arg'1' ->
  M22.withQDatePtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (emitDateChanged' arg'1' arg'2')

data QDateTimeEditConst =
    QDateTimeEditConst (HoppyF.Ptr QDateTimeEditConst)
  | QDateTimeEditConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QDateTimeEditConst)
  deriving (HoppyP.Show)

instance HoppyP.Eq QDateTimeEditConst where
  x == y = HoppyFHR.toPtr x == HoppyFHR.toPtr y

instance HoppyP.Ord QDateTimeEditConst where
  compare x y = HoppyP.compare (HoppyFHR.toPtr x) (HoppyFHR.toPtr y)

castQDateTimeEditToConst :: QDateTimeEdit -> QDateTimeEditConst
castQDateTimeEditToConst (QDateTimeEdit ptr') = QDateTimeEditConst $ HoppyF.castPtr ptr'
castQDateTimeEditToConst (QDateTimeEditGc fptr' ptr') = QDateTimeEditConstGc fptr' $ HoppyF.castPtr ptr'

instance HoppyFHR.CppPtr QDateTimeEditConst where
  nullptr = QDateTimeEditConst HoppyF.nullPtr
  
  withCppPtr (QDateTimeEditConst ptr') f' = f' ptr'
  withCppPtr (QDateTimeEditConstGc fptr' ptr') f' = HoppyF.withForeignPtr fptr' $ \_ -> f' ptr'
  
  toPtr (QDateTimeEditConst ptr') = ptr'
  toPtr (QDateTimeEditConstGc _ ptr') = ptr'
  
  touchCppPtr (QDateTimeEditConst _) = HoppyP.return ()
  touchCppPtr (QDateTimeEditConstGc fptr' _) = HoppyF.touchForeignPtr fptr'

instance HoppyFHR.Deletable QDateTimeEditConst where
  delete (QDateTimeEditConst ptr') = delete'QDateTimeEdit ptr'
  delete (QDateTimeEditConstGc _ _) = HoppyP.fail $ HoppyP.concat ["Deletable.delete: Asked to delete a GC-managed ", "QDateTimeEditConst", " object."]
  
  toGc this'@(QDateTimeEditConst ptr') = if ptr' == HoppyF.nullPtr then HoppyP.return this' else HoppyP.fmap (HoppyP.flip QDateTimeEditConstGc ptr') $ HoppyF.newForeignPtr (HoppyF.castFunPtr deletePtr'QDateTimeEdit :: HoppyF.FunPtr (HoppyF.Ptr () -> HoppyP.IO ())) (HoppyF.castPtr ptr' :: HoppyF.Ptr ())
  toGc this'@(QDateTimeEditConstGc {}) = HoppyP.return this'

instance QDateTimeEditConstPtr QDateTimeEditConst where
  toQDateTimeEditConst = HoppyP.id

instance M366.QAbstractSpinBoxConstPtr QDateTimeEditConst where
  toQAbstractSpinBoxConst (QDateTimeEditConst ptr') = M366.QAbstractSpinBoxConst $ castQDateTimeEditToQAbstractSpinBox ptr'
  toQAbstractSpinBoxConst (QDateTimeEditConstGc fptr' ptr') = M366.QAbstractSpinBoxConstGc fptr' $ castQDateTimeEditToQAbstractSpinBox ptr'

instance M506.QWidgetConstPtr QDateTimeEditConst where
  toQWidgetConst (QDateTimeEditConst ptr') = M506.QWidgetConst $ castQDateTimeEditToQWidget ptr'
  toQWidgetConst (QDateTimeEditConstGc fptr' ptr') = M506.QWidgetConstGc fptr' $ castQDateTimeEditToQWidget ptr'

instance M94.QObjectConstPtr QDateTimeEditConst where
  toQObjectConst (QDateTimeEditConst ptr') = M94.QObjectConst $ castQDateTimeEditToQObject ptr'
  toQObjectConst (QDateTimeEditConstGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQDateTimeEditToQObject ptr'

data QDateTimeEdit =
    QDateTimeEdit (HoppyF.Ptr QDateTimeEdit)
  | QDateTimeEditGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QDateTimeEdit)
  deriving (HoppyP.Show)

instance HoppyP.Eq QDateTimeEdit where
  x == y = HoppyFHR.toPtr x == HoppyFHR.toPtr y

instance HoppyP.Ord QDateTimeEdit where
  compare x y = HoppyP.compare (HoppyFHR.toPtr x) (HoppyFHR.toPtr y)

castQDateTimeEditToNonconst :: QDateTimeEditConst -> QDateTimeEdit
castQDateTimeEditToNonconst (QDateTimeEditConst ptr') = QDateTimeEdit $ HoppyF.castPtr ptr'
castQDateTimeEditToNonconst (QDateTimeEditConstGc fptr' ptr') = QDateTimeEditGc fptr' $ HoppyF.castPtr ptr'

instance HoppyFHR.CppPtr QDateTimeEdit where
  nullptr = QDateTimeEdit HoppyF.nullPtr
  
  withCppPtr (QDateTimeEdit ptr') f' = f' ptr'
  withCppPtr (QDateTimeEditGc fptr' ptr') f' = HoppyF.withForeignPtr fptr' $ \_ -> f' ptr'
  
  toPtr (QDateTimeEdit ptr') = ptr'
  toPtr (QDateTimeEditGc _ ptr') = ptr'
  
  touchCppPtr (QDateTimeEdit _) = HoppyP.return ()
  touchCppPtr (QDateTimeEditGc fptr' _) = HoppyF.touchForeignPtr fptr'

instance HoppyFHR.Deletable QDateTimeEdit where
  delete (QDateTimeEdit ptr') = delete'QDateTimeEdit $ (HoppyF.castPtr ptr' :: HoppyF.Ptr QDateTimeEditConst)
  delete (QDateTimeEditGc _ _) = HoppyP.fail $ HoppyP.concat ["Deletable.delete: Asked to delete a GC-managed ", "QDateTimeEdit", " object."]
  
  toGc this'@(QDateTimeEdit ptr') = if ptr' == HoppyF.nullPtr then HoppyP.return this' else HoppyP.fmap (HoppyP.flip QDateTimeEditGc ptr') $ HoppyF.newForeignPtr (HoppyF.castFunPtr deletePtr'QDateTimeEdit :: HoppyF.FunPtr (HoppyF.Ptr () -> HoppyP.IO ())) (HoppyF.castPtr ptr' :: HoppyF.Ptr ())
  toGc this'@(QDateTimeEditGc {}) = HoppyP.return this'

instance QDateTimeEditConstPtr QDateTimeEdit where
  toQDateTimeEditConst (QDateTimeEdit ptr') = QDateTimeEditConst $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'
  toQDateTimeEditConst (QDateTimeEditGc fptr' ptr') = QDateTimeEditConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'

instance QDateTimeEditPtr QDateTimeEdit where
  toQDateTimeEdit = HoppyP.id

instance M366.QAbstractSpinBoxConstPtr QDateTimeEdit where
  toQAbstractSpinBoxConst (QDateTimeEdit ptr') = M366.QAbstractSpinBoxConst $ castQDateTimeEditToQAbstractSpinBox $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'
  toQAbstractSpinBoxConst (QDateTimeEditGc fptr' ptr') = M366.QAbstractSpinBoxConstGc fptr' $ castQDateTimeEditToQAbstractSpinBox $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'

instance M366.QAbstractSpinBoxPtr QDateTimeEdit where
  toQAbstractSpinBox (QDateTimeEdit ptr') = M366.QAbstractSpinBox $ (HoppyF.castPtr :: HoppyF.Ptr M366.QAbstractSpinBoxConst -> HoppyF.Ptr M366.QAbstractSpinBox) $ castQDateTimeEditToQAbstractSpinBox $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'
  toQAbstractSpinBox (QDateTimeEditGc fptr' ptr') = M366.QAbstractSpinBoxGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M366.QAbstractSpinBoxConst -> HoppyF.Ptr M366.QAbstractSpinBox) $ castQDateTimeEditToQAbstractSpinBox $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'

instance M506.QWidgetConstPtr QDateTimeEdit where
  toQWidgetConst (QDateTimeEdit ptr') = M506.QWidgetConst $ castQDateTimeEditToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'
  toQWidgetConst (QDateTimeEditGc fptr' ptr') = M506.QWidgetConstGc fptr' $ castQDateTimeEditToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'

instance M506.QWidgetPtr QDateTimeEdit where
  toQWidget (QDateTimeEdit ptr') = M506.QWidget $ (HoppyF.castPtr :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr M506.QWidget) $ castQDateTimeEditToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'
  toQWidget (QDateTimeEditGc fptr' ptr') = M506.QWidgetGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr M506.QWidget) $ castQDateTimeEditToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'

instance M94.QObjectConstPtr QDateTimeEdit where
  toQObjectConst (QDateTimeEdit ptr') = M94.QObjectConst $ castQDateTimeEditToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'
  toQObjectConst (QDateTimeEditGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQDateTimeEditToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'

instance M94.QObjectPtr QDateTimeEdit where
  toQObject (QDateTimeEdit ptr') = M94.QObject $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQDateTimeEditToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'
  toQObject (QDateTimeEditGc fptr' ptr') = M94.QObjectGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQDateTimeEditToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QDateTimeEdit -> HoppyF.Ptr QDateTimeEditConst) ptr'

new :: (HoppyP.IO QDateTimeEdit)
new =
  HoppyP.fmap QDateTimeEdit
  (new')

class QDateTimeEditSuper a where
  downToQDateTimeEdit :: a -> QDateTimeEdit

instance QDateTimeEditSuper M366.QAbstractSpinBox where
  downToQDateTimeEdit = castQDateTimeEditToNonconst . cast' . M366.castQAbstractSpinBoxToConst
    where
      cast' (M366.QAbstractSpinBoxConst ptr') = QDateTimeEditConst $ castQAbstractSpinBoxToQDateTimeEdit ptr'
      cast' (M366.QAbstractSpinBoxConstGc fptr' ptr') = QDateTimeEditConstGc fptr' $ castQAbstractSpinBoxToQDateTimeEdit ptr'
instance QDateTimeEditSuper M506.QWidget where
  downToQDateTimeEdit = castQDateTimeEditToNonconst . cast' . M506.castQWidgetToConst
    where
      cast' (M506.QWidgetConst ptr') = QDateTimeEditConst $ castQWidgetToQDateTimeEdit ptr'
      cast' (M506.QWidgetConstGc fptr' ptr') = QDateTimeEditConstGc fptr' $ castQWidgetToQDateTimeEdit ptr'
instance QDateTimeEditSuper M94.QObject where
  downToQDateTimeEdit = castQDateTimeEditToNonconst . cast' . M94.castQObjectToConst
    where
      cast' (M94.QObjectConst ptr') = QDateTimeEditConst $ castQObjectToQDateTimeEdit ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QDateTimeEditConstGc fptr' $ castQObjectToQDateTimeEdit ptr'

class QDateTimeEditSuperConst a where
  downToQDateTimeEditConst :: a -> QDateTimeEditConst

instance QDateTimeEditSuperConst M366.QAbstractSpinBoxConst where
  downToQDateTimeEditConst = cast'
    where
      cast' (M366.QAbstractSpinBoxConst ptr') = QDateTimeEditConst $ castQAbstractSpinBoxToQDateTimeEdit ptr'
      cast' (M366.QAbstractSpinBoxConstGc fptr' ptr') = QDateTimeEditConstGc fptr' $ castQAbstractSpinBoxToQDateTimeEdit ptr'
instance QDateTimeEditSuperConst M506.QWidgetConst where
  downToQDateTimeEditConst = cast'
    where
      cast' (M506.QWidgetConst ptr') = QDateTimeEditConst $ castQWidgetToQDateTimeEdit ptr'
      cast' (M506.QWidgetConstGc fptr' ptr') = QDateTimeEditConstGc fptr' $ castQWidgetToQDateTimeEdit ptr'
instance QDateTimeEditSuperConst M94.QObjectConst where
  downToQDateTimeEditConst = cast'
    where
      cast' (M94.QObjectConst ptr') = QDateTimeEditConst $ castQObjectToQDateTimeEdit ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QDateTimeEditConstGc fptr' $ castQObjectToQDateTimeEdit ptr'

instance HoppyFHR.Assignable (HoppyF.Ptr (HoppyF.Ptr QDateTimeEdit)) QDateTimeEdit where
  assign ptr' value' = HoppyF.poke ptr' $ HoppyFHR.toPtr value'

instance HoppyFHR.Decodable (HoppyF.Ptr (HoppyF.Ptr QDateTimeEdit)) QDateTimeEdit where
  decode = HoppyP.fmap QDateTimeEdit . HoppyF.peek

data QDateTimeEditSection =
  NoSection
  | AmPmSection
  | MSecSection
  | SecondSection
  | MinuteSection
  | HourSection
  | DaySection
  | MonthSection
  | YearSection
  | UnknownQDateTimeEditSection (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QDateTimeEditSection where
  fromCppEnum NoSection = 0
  fromCppEnum AmPmSection = 1
  fromCppEnum MSecSection = 2
  fromCppEnum SecondSection = 4
  fromCppEnum MinuteSection = 8
  fromCppEnum HourSection = 16
  fromCppEnum DaySection = 256
  fromCppEnum MonthSection = 512
  fromCppEnum YearSection = 1024
  fromCppEnum (UnknownQDateTimeEditSection n) = n
  
  toCppEnum (0) = NoSection
  toCppEnum (1) = AmPmSection
  toCppEnum (2) = MSecSection
  toCppEnum (4) = SecondSection
  toCppEnum (8) = MinuteSection
  toCppEnum (16) = HourSection
  toCppEnum (256) = DaySection
  toCppEnum (512) = MonthSection
  toCppEnum (1024) = YearSection
  toCppEnum n = UnknownQDateTimeEditSection n

instance HoppyP.Eq QDateTimeEditSection where
  x == y = HoppyFHR.fromCppEnum x == HoppyFHR.fromCppEnum y

instance HoppyP.Ord QDateTimeEditSection where
  compare x y = HoppyP.compare (HoppyFHR.fromCppEnum x) (HoppyFHR.fromCppEnum y)

newtype QDateTimeEditSections = QDateTimeEditSections (HoppyFC.CInt) deriving (QtahP.Eq, QtahP.Ord, QtahP.Show)

instance QtahFlags.Flags (HoppyFC.CInt) QDateTimeEditSection QDateTimeEditSections where
  enumToFlags = QDateTimeEditSections . QtahFHR.fromCppEnum
  flagsToEnum (QDateTimeEditSections x') = QtahFHR.toCppEnum x'

class IsQDateTimeEditSections a where
  toQDateTimeEditSections :: a -> QDateTimeEditSections

instance IsQDateTimeEditSections QDateTimeEditSections where toQDateTimeEditSections = QtahP.id
instance IsQDateTimeEditSections QDateTimeEditSection where toQDateTimeEditSections = QtahFlags.enumToFlags
instance IsQDateTimeEditSections (HoppyFC.CInt) where toQDateTimeEditSections = QtahFlags.numToFlags

amPmSection :: QDateTimeEditSections
amPmSection = QDateTimeEditSections (1)

daySection :: QDateTimeEditSections
daySection = QDateTimeEditSections (256)

hourSection :: QDateTimeEditSections
hourSection = QDateTimeEditSections (16)

mSecSection :: QDateTimeEditSections
mSecSection = QDateTimeEditSections (2)

minuteSection :: QDateTimeEditSections
minuteSection = QDateTimeEditSections (8)

monthSection :: QDateTimeEditSections
monthSection = QDateTimeEditSections (512)

noSection :: QDateTimeEditSections
noSection = QDateTimeEditSections (0)

secondSection :: QDateTimeEditSections
secondSection = QDateTimeEditSections (4)

yearSection :: QDateTimeEditSections
yearSection = QDateTimeEditSections (1024)

instance QtahDB.Bits QDateTimeEditSections where
  x .&. y = QtahFlags.numToFlags (QtahFlags.flagsToNum x .&. QtahFlags.flagsToNum y)
  x .|. y = QtahFlags.numToFlags (QtahFlags.flagsToNum x .|. QtahFlags.flagsToNum y)
  xor x y = QtahFlags.numToFlags $ QtahDB.xor (QtahFlags.flagsToNum x) (QtahFlags.flagsToNum y)
  complement x = QtahFlags.numToFlags $ QtahDB.complement $ QtahFlags.flagsToNum x
  shift x i = QtahFlags.numToFlags $ QtahDB.shift (QtahFlags.flagsToNum x) i
  rotate x i = QtahFlags.numToFlags $ QtahDB.rotate (QtahFlags.flagsToNum x) i
  bitSize x = case QtahDB.bitSizeMaybe x of
      QtahP.Just n -> n
      QtahP.Nothing -> QtahP.error "bitSize is undefined"
  bitSizeMaybe = QtahDB.bitSizeMaybe . QtahFlags.flagsToNum
  isSigned = QtahDB.isSigned . QtahFlags.flagsToNum
  testBit x i = QtahDB.testBit (QtahFlags.flagsToNum x) i
  bit = QtahFlags.numToFlags . QtahDB.bit
  popCount = QtahDB.popCount . QtahFlags.flagsToNum