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


{-# LINE 1 "./Data/IGraph/Internal/Constants.chs" #-}{-# OPTIONS -fno-warn-overlapping-patterns #-}

module Data.IGraph.Internal.Constants where



{-# LINE 8 "./Data/IGraph/Internal/Constants.chs" #-}

sizeOfVit :: Int
sizeOfVit = 20
{-# LINE 11 "./Data/IGraph/Internal/Constants.chs" #-}

sizeOfVector :: Int
sizeOfVector = 12
{-# LINE 14 "./Data/IGraph/Internal/Constants.chs" #-}

data Directed = Undirected
              | Directed
              deriving (Eq,Show)
instance Enum Directed where
  fromEnum Undirected = 0
  fromEnum Directed = 1

  toEnum 0 = Undirected
  toEnum 1 = Directed
  toEnum unmatched = error ("Directed.toEnum: Cannot match " ++ show unmatched)

{-# LINE 18 "./Data/IGraph/Internal/Constants.chs" #-}

{-
{#enum igraph_i_loops_t as Loops
  { IGRAPH_NO_LOOPS as NoLoops, IGRAPH_LOOPS as Loops }
  deriving (Eq, Show) #}

{#enum igraph_i_multiple_t as Multiple
  { IGRAPH_NO_MULTIPLE as NoMultiple, IGRAPH_MULTIPLE as Multiple }
  deriving (Eq, Show) #}

{#enum igraph_order_t as Order
  { IGRAPH_ASCENDING as Ascending, IGRAPH_DESCENDING as Descending }
  deriving (Eq, Show) #}

{#enum igraph_optimal_t as Optimal
  { IGRAPH_MINIMUM as Minimum, IGRAPH_MAXIMUM as Maximum }
  deriving (Eq, Show) #}
-}

-- | A constant specifying how edge directions are considered in directed
-- graphs. Valid modes are: `Out' follows edge directions; `In' follows
-- the opposite directions; and `All' ignores edge directions. This argument
-- is ignored for undirected graphs.
data NeiMode = Out
             | In
             | All
             | Total
             deriving (Eq,Show)
instance Enum NeiMode where
  fromEnum Out = 1
  fromEnum In = 2
  fromEnum All = 3
  fromEnum Total = 3

  toEnum 1 = Out
  toEnum 2 = In
  toEnum 3 = All
  toEnum 3 = Total
  toEnum unmatched = error ("NeiMode.toEnum: Cannot match " ++ show unmatched)

{-# LINE 44 "./Data/IGraph/Internal/Constants.chs" #-}

-- | For a directed graph this specifies whether to calculate weak or strong
-- connectedness. This argument is ignored for undirected graphs.
data Connectedness = Weak
                   | Strong
                   deriving (Eq,Show)
instance Enum Connectedness where
  fromEnum Weak = 1
  fromEnum Strong = 2

  toEnum 1 = Weak
  toEnum 2 = Strong
  toEnum unmatched = error ("Connectedness.toEnum: Cannot match " ++ show unmatched)

{-# LINE 50 "./Data/IGraph/Internal/Constants.chs" #-}

{-
{#enum igraph_reciprocity_t as Reciprocity
  { IGRAPH_RECIPROCITY_DEFAULT as ReciprocityDefault, IGRAPH_RECIPROCITY_RATIO as ReciprocityRatio }
  deriving (Eq, Show) #}

{#enum igraph_adjacency_t as Adjacency
  { IGRAPH_ADJ_DIRECTED as AdjDirected, IGRAPH_ADJ_UNDIRECTED as AdjUndirected
  , IGRAPH_ADJ_MAX as AdjMax, IGRAPH_ADJ_UPPER as AdjUpper, IGRAPH_ADJ_LOWER as AdjLower
  , IGRAPH_ADJ_MIN as AdjMin, IGRAPH_ADJ_PLUS as AdjPlus }
  deriving (Eq, Show) #}

{#enum igraph_star_mode_t as StarMode
  { IGRAPH_STAR_OUT as StarOut, IGRAPH_STAR_IN as StarIn
  , IGRAPH_STAR_UNDIRECTED as StarUndirected, IGRAPH_STAR_MUTUAL as StarMutual }
  deriving (Eq, Show) #}

{#enum igraph_tree_mode_t as TreeMode
  { IGRAPH_TREE_OUT as TreeOut, IGRAPH_TREE_IN as TreeIn
  , IGRAPH_TREE_UNDIRECTED as TreeUndirected }
  deriving (Eq, Show) #}

{#enum igraph_erdos_renyi_t as ErdosRenyi
  { IGRAPH_ERDOS_RENYI_GNP as ErdosRenyiGnp
  , IGRAPH_ERDOS_RENYI_GNM as ErdosRenyiGnm }
  deriving (Eq, Show) #}

{#enum igraph_get_adjacency_t as GetAdjacency
  { IGRAPH_GET_ADJACENCY_UPPER as GetAdjacencyUpper
  , IGRAPH_GET_ADJACENCY_LOWER as GetAdjacencyLower
  , IGRAPH_GET_ADJACENCY_BOTH  as GetAdjacencyBoth }
  deriving (Eq, Show) #}

{#enum igraph_degseq_t as Degseq
  { IGRAPH_DEGSEQ_SIMPLE as DegseqSimple
  , IGRAPH_DEGSEQ_VL     as DegseqVl }
  deriving (Eq, Show) #}

{#enum igraph_fileformat_type_t as FileformatType
  { IGRAPH_FILEFORMAT_EDGELIST as FileformatEdgelist
  , IGRAPH_FILEFORMAT_NCOL     as FileformatNcol
  , IGRAPH_FILEFORMAT_PAJEK    as FileformatPajek
  , IGRAPH_FILEFORMAT_LGL      as FileformatLgl
  , IGRAPH_FILEFORMAT_GRAPHML  as FileformatGraphml }
  deriving (Eq, Show) #}

{#enum igraph_rewiring_t as Rewiring
  { IGRAPH_REWIRING_SIMPLE as RewiringSimple }
  deriving (Eq, Show) #}

--
-- TODO
--
-}

data EdgeOrder = EdgeOrderId
               | EdgeOrderFrom
               | EdgeOrderTo
               deriving (Eq,Show)
instance Enum EdgeOrder where
  fromEnum EdgeOrderId = 0
  fromEnum EdgeOrderFrom = 1
  fromEnum EdgeOrderTo = 2

  toEnum 0 = EdgeOrderId
  toEnum 1 = EdgeOrderFrom
  toEnum 2 = EdgeOrderTo
  toEnum unmatched = error ("EdgeOrder.toEnum: Cannot match " ++ show unmatched)

{-# LINE 110 "./Data/IGraph/Internal/Constants.chs" #-}

{-
{#enum igraph_to_directed_t as
  { IGRAPH_TO_DIRECTED_ARBITRARY=0,
         IGRAPH_TO_DIRECTED_MUTUAL }
  deriving (Eq, Show) #}

{#enum igraph_to_undirected_t as
  { IGRAPH_TO_UNDIRECTED_EACH=0,
         IGRAPH_TO_UNDIRECTED_COLLAPSE,
               IGRAPH_TO_UNDIRECTED_MUTUAL}
  deriving (Eq, Show) #}

{#enum igraph_vconn_nei_t as
  { IGRAPH_VCONN_NEI_ERROR=0,
         IGRAPH_VCONN_NEI_NUMBER_OF_NODES,
         IGRAPH_VCONN_NEI_IGNORE,
         IGRAPH_VCONN_NEI_NEGATIVE }
  deriving (Eq, Show) #}

{#enum igraph_spincomm_update_t as
  { IGRAPH_SPINCOMM_UPDATE_SIMPLE=0,
         IGRAPH_SPINCOMM_UPDATE_CONFIG }
  deriving (Eq, Show) #}

{#enum igraph_lazy_adlist_simplify_t as
  { IGRAPH_DONT_SIMPLIFY=0,
         IGRAPH_SIMPLIFY }
  deriving (Eq, Show) #}
-}

data TransitivityMode = TransitivityNAN
                      | TransitivityZero
                      deriving (Eq,Show)
instance Enum TransitivityMode where
  fromEnum TransitivityNAN = 0
  fromEnum TransitivityZero = 1

  toEnum 0 = TransitivityNAN
  toEnum 1 = TransitivityZero
  toEnum unmatched = error ("TransitivityMode.toEnum: Cannot match " ++ show unmatched)

{-# LINE 145 "./Data/IGraph/Internal/Constants.chs" #-}

{-
{#enum igraph_spinglass_implementation_t as
  { IGRAPH_SPINCOMM_IMP_ORIG=0,
         IGRAPH_SPINCOMM_IMP_NEG }
  deriving (Eq, Show) #}

{#enum igraph_community_comparison_t as
  { IGRAPH_COMMCMP_VI = 0,
               IGRAPH_COMMCMP_NMI,
               IGRAPH_COMMCMP_SPLIT_JOIN,
               IGRAPH_COMMCMP_RAND,
               IGRAPH_COMMCMP_ADJUSTED_RAND }
  deriving (Eq, Show) #}

{#enum igraph_add_weights_t as
  { IGRAPH_ADD_WEIGHTS_NO = 0,
               IGRAPH_ADD_WEIGHTS_YES,
               IGRAPH_ADD_WEIGHTS_IF_PRESENT }
  deriving (Eq, Show) #}

{#enum igraph_barabasi_algorithm_t as
  { IGRAPH_BARABASI_BAG = 0,
         IGRAPH_BARABASI_PSUMTREE,
         IGRAPH_BARABASI_PSUMTREE_MULTIPLE}
  deriving (Eq, Show) #}
-}

data FASAlgorithm = ExactIP
                  | ApproxEades
                  deriving (Eq,Show)
instance Enum FASAlgorithm where
  fromEnum ExactIP = 0
  fromEnum ApproxEades = 1

  toEnum 0 = ExactIP
  toEnum 1 = ApproxEades
  toEnum unmatched = error ("FASAlgorithm.toEnum: Cannot match " ++ show unmatched)

{-# LINE 177 "./Data/IGraph/Internal/Constants.chs" #-}

data SubgraphImplementation = SubgraphAuto
                            | CopyAndDelete
                            | CreateFromScratch
                            deriving (Eq,Show)
instance Enum SubgraphImplementation where
  fromEnum SubgraphAuto = 0
  fromEnum CopyAndDelete = 1
  fromEnum CreateFromScratch = 2

  toEnum 0 = SubgraphAuto
  toEnum 1 = CopyAndDelete
  toEnum 2 = CreateFromScratch
  toEnum unmatched = error ("SubgraphImplementation.toEnum: Cannot match " ++ show unmatched)

{-# LINE 184 "./Data/IGraph/Internal/Constants.chs" #-}

{-
{#enum igraph_imitate_algorithm_t as ImitateAlgorithm
  { ImitateAugmented, ImitateBlind, ImitateContracted }
  deriving (Eq, Show) #}
-}

{-
typedef igraph_real_t  igraph_scalar_function_t(const igraph_vector_t *var,
            const igraph_vector_t *par,
            void* extra);
typedef void igraph_vector_function_t(const igraph_vector_t *var,
              const igraph_vector_t *par,
              igraph_vector_t* res, void* extra);
-}