hasquant-0.5.0.2: QuantLib/Internal/CalendarEnum.chs
{-# LANGUAGE TemplateHaskell, StandaloneDeriving #-}
-- suppress warnings about unused Extra_ constructors
{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module QuantLib.Internal.CalendarEnum
(
mapCalendar
, CalendarConstructor(..)
, JointCalendarRule(..)
, mapDayCounter
, DayCounterConstructor(..)
) where
#include "qlTypesC2HS.h"
#include "qlEnumC2HS.h"
#include "qlEnumObjects.h"
import QuantLib.Internal.Syntax
import QuantLib.Internal.Type
import QuantLib.Time.Date(Weekday)
{#enum JointCalendarRule{} deriving(Show, Eq)#}
{#enum CalendarCountry{} add prefix = "Country__" deriving(Show, Eq)#}
{#enum AustriaMarket{} add prefix = "Austria__" deriving(Show, Eq)#}
{#enum BrazilMarket{} add prefix = "Brazil__" deriving(Show, Eq)#}
{#enum CanadaMarket{} add prefix = "Canada__" deriving(Show, Eq)#}
{#enum ChinaMarket{} add prefix = "China__" deriving(Show, Eq)#}
{#enum FranceMarket{} add prefix= "France__" deriving(Show, Eq)#}
{#enum GermanyMarket{} add prefix = "Germany__" deriving(Show, Eq)#}
{#enum IndonesiaMarket{} add prefix = "Indonesia__" deriving(Show, Eq)#}
{#enum IsraelMarket{} add prefix = "Israel__" deriving(Show, Eq)#}
{#enum ItalyMarket{} add prefix = "Italy__" deriving(Show, Eq)#}
{#enum RomaniaMarket{} add prefix = "Romania__" deriving(Show, Eq)#}
{#enum RussiaMarket{} add prefix = "Russia__" deriving(Show, Eq)#}
{#enum SouthKoreaMarket{} add prefix = "SouthKorea__" deriving(Show, Eq)#}
{#enum UnitedKingdomMarket{} add prefix = "UnitedKingdom__" deriving(Show, Eq)#}
{#enum UnitedStatesMarket{} add prefix = "UnitedStates__" deriving(Show, Eq)#}
{#enum AustraliaMarket{} add prefix = "Australia__" deriving(Show, Eq)#}
{#enum NewZealandMarket{} add prefix = "NewZealand__" deriving(Show, Eq)#}
{#enum PolandMarket{} add prefix = "Poland__" deriving(Show, Eq)#}
data CalendarExtra =
Extra__Bespoke !String ![Weekday]
| Extra__Joint2 !Calendar !Calendar !JointCalendarRule
| Extra__Joint3 !Calendar !Calendar !Calendar !JointCalendarRule
| Extra__Joint4 !Calendar !Calendar !Calendar !Calendar !JointCalendarRule
$(deriveCrossEnum CrossEnumSpec
{ crossTypeName = "CalendarConstructor"
, crossMapperFn = "mapCalendar"
, crossMainEnum = ''CalendarCountry
, crossSubSuffix = "Market"
, crossExtraType = ''CalendarExtra
})
deriving instance Show CalendarConstructor
deriving instance Eq CalendarConstructor
{#enum DayCounterType{} add prefix = "DayCounter__" deriving(Show, Eq)#}
{#enum ActualActualConvention{} add prefix = "ActualActual__" deriving(Show, Eq)#}
{#enum Thirty360Convention{} add prefix = "Thirty360__" deriving(Show, Eq)#}
{#enum Actual365FixedConvention{} add prefix = "Actual365Fixed__" deriving(Show, Eq)#}
-- these three don't have a real named Convention enum upstream, just a plain
-- includeLastDay bool -- this marker tells deriveCrossEnum to give them a single
-- constructor carrying a runtime Bool instead of cross-producting named values
type Actual360Convention = Bool
type Actual36525Convention = Bool
type Actual366Convention = Bool
data DayCounterExtra = Extra__Business252 !Calendar
| Extra__ActualActualBond' !Schedule
| Extra__ActualActualISMA' !Schedule
$(deriveCrossEnum CrossEnumSpec
{ crossTypeName = "DayCounterConstructor"
, crossMapperFn = "mapDayCounter"
, crossMainEnum = ''DayCounterType
, crossSubSuffix = "Convention"
, crossExtraType = ''DayCounterExtra
})
deriving instance Show DayCounterConstructor
deriving instance Eq DayCounterConstructor
-- vim: set ff=unix ts=8 sts=2 sw=2 et: