packages feed

shaderc-0.1.0.5: src/Shaderc/Enum.hsc

{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE PatternSynonyms #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Shaderc.Enum where

import Foreign.Storable
import Foreign.C.Enum
import Data.Word
import Data.Int

#include <shaderc/shaderc.h>

enum "CompilationStatus" ''#{type shaderc_compilation_status}
		[''Show, ''Storable] [
	("CompilationStatusSuccess",
		#{const shaderc_compilation_status_success}),
	("CompilationStatusInvalidStage",
		#{const shaderc_compilation_status_invalid_stage}),
	("CompilationStatusError",
		#{const shaderc_compilation_status_compilation_error}),
	("CompilationStatusInternalError",
		#{const shaderc_compilation_status_internal_error}),
	("CompilationStatusNullResultObject",
		#{const shaderc_compilation_status_null_result_object}),
	("CompilationStatusInvalidAssembly",
		#{const shaderc_compilation_status_invalid_assembly}),
	("CompilationStatusValidationError",
		#{const shaderc_compilation_status_validation_error}),
	("CompilationStatusTransformationError",
		#{const shaderc_compilation_status_transformation_error}),
	("CompilationStatusConfigurationError",
		#{const shaderc_compilation_status_configuration_error}) ]

enum "SourceLanguage" ''#{type shaderc_source_language}
		[''Show, ''Storable] [
	("SourceLanguageGlsl", #{const shaderc_source_language_glsl}),
	("SourceLanguageHlsl", #{const shaderc_source_language_hlsl}) ]

enum "OptimizationLevel" ''#{type shaderc_optimization_level}
		[''Show, ''Eq, ''Storable] [
	("OptimizationLevelZero", #{const shaderc_optimization_level_zero}),
	("OptimizationLevelSize", #{const shaderc_optimization_level_size}),
	("OptimizationLevelPerformance",
		#{const shaderc_optimization_level_performance}) ]

enum "Profile" ''#{type shaderc_profile} [''Show, ''Eq, ''Storable] [
	("ProfileNone", #{const shaderc_profile_none}),
	("ProfileCore", #{const shaderc_profile_core}),
	("ProfileCompatibility", #{const shaderc_profile_compatibility}),
	("ProfileEs", #{const shaderc_profile_es}) ]

version :: Int -> Version
version = Version . fromIntegral

newtype Version = Version #{type int} deriving Show