packages feed

LslPlus-0.3.2: src/Language/Lsl/Internal/Constants.hs

{-# OPTIONS_GHC -XNoMonomorphismRestriction #-}
module Language.Lsl.Internal.Constants where

import Data.Bits((.|.),shiftL)
import Language.Lsl.Internal.Type(LSLValue(..),typeOfLSLValue)
import Language.Lsl.Internal.Util(findM)

data Constant a = Constant { constName :: String, constVal :: LSLValue a }
    deriving (Show)

cInventoryAll = (-1);llcInventoryAll :: RealFloat a => LSLValue a;llcInventoryAll = IVal cInventoryAll
cInventoryAnimation = 20;llcInventoryAnimation :: RealFloat a => LSLValue a; llcInventoryAnimation = IVal cInventoryAnimation
cInventoryBodyPart = 13;llcInventoryBodyPart :: RealFloat a => LSLValue a; llcInventoryBodyPart = IVal cInventoryBodyPart
cInventoryClothing = 5;llcInventoryClothing :: RealFloat a => LSLValue a; llcInventoryClothing = IVal cInventoryClothing
cInventoryGesture = 21;llcInventoryGesture :: RealFloat a => LSLValue a; llcInventoryGesture = IVal cInventoryGesture
cInventoryLandmark = 3;llcInventoryLandmark :: RealFloat a => LSLValue a; llcInventoryLandmark = IVal cInventoryLandmark
cInventoryNotecard = 7;llcInventoryNotecard :: RealFloat a => LSLValue a; llcInventoryNotecard = IVal cInventoryNotecard
cInventoryNone = (-1);llcInventoryNone :: RealFloat a => LSLValue a;llcInventoryNone = IVal cInventoryNone
cInventoryObject = 6;llcInventoryObject :: RealFloat a => LSLValue a; llcInventoryObject = IVal cInventoryObject
cInventoryScript = 10;llcInventoryScript :: RealFloat a => LSLValue a; llcInventoryScript = IVal cInventoryScript
cInventorySound = 1;llcInventorySound :: RealFloat a => LSLValue a; llcInventorySound = IVal cInventorySound
cInventoryTexture = 0;llcInventoryTexture :: RealFloat a => LSLValue a; llcInventoryTexture = IVal cInventoryTexture
cPermissionChangeLinks = 0x80 :: Int
llcPermissionChangeLinks = IVal cPermissionChangeLinks

cChangedLink = 0x20 :: Int
llcChangedLink = IVal cChangedLink
cChangedInventory = 0x1;llcChangedInventory :: RealFloat a => LSLValue a; llcChangedInventory = IVal cChangedInventory
cChangedAllowedDrop = 0x40;llcChangedAllowedDrop :: RealFloat a => LSLValue a; llcChangedAllowedDrop = IVal cChangedAllowedDrop

cMaskBase = 0;llcMaskBase :: RealFloat a => LSLValue a; llcMaskBase = IVal cMaskBase
cMaskOwner = 1;llcMaskOwner :: RealFloat a => LSLValue a; llcMaskOwner = IVal cMaskOwner
cMaskGroup = 2;llcMaskGroup :: RealFloat a => LSLValue a; llcMaskGroup = IVal cMaskGroup
cMaskEveryone = 3;llcMaskEveryone :: RealFloat a => LSLValue a; llcMaskEveryone = IVal cMaskEveryone
cMaskNext = 4;llcMaskNext :: RealFloat a => LSLValue a; llcMaskNext = IVal cMaskNext

cPermModify = 0x00004000;llcPermModify :: RealFloat a => LSLValue a; llcPermModify = IVal cPermModify
cPermCopy = 0x00008000;llcPermCopy :: RealFloat a => LSLValue a; llcPermCopy = IVal cPermCopy
cPermTransfer = 0x00002000;llcPermTransfer :: RealFloat a => LSLValue a; llcPermTransfer = IVal cPermTransfer
cPermMove = 0x00080000;llcPermMove :: RealFloat a => LSLValue a; llcPermMove = IVal cPermMove
cFullPerm = cPermModify .|. cPermMove .|. cPermTransfer .|. cPermCopy

cPrimTypeBox = 0;llcPrimTypeBox :: RealFloat a => LSLValue a; llcPrimTypeBox = IVal cPrimTypeBox
cPrimTypeCylinder = 1;llcPrimTypeCylinder :: RealFloat a => LSLValue a; llcPrimTypeCylinder = IVal cPrimTypeCylinder
cPrimTypePrism = 2;llcPrimTypePrism :: RealFloat a => LSLValue a; llcPrimTypePrism = IVal cPrimTypePrism
cPrimTypeRing = 6;llcPrimTypeRing :: RealFloat a => LSLValue a; llcPrimTypeRing = IVal cPrimTypeRing
cPrimTypeSphere = 3;llcPrimTypeSphere :: RealFloat a => LSLValue a; llcPrimTypeSphere = IVal cPrimTypeSphere
cPrimTypeSculpt = 7;llcPrimTypeSculpt :: RealFloat a => LSLValue a; llcPrimTypeSculpt = IVal cPrimTypeSculpt
cPrimTypeTorus = 4;llcPrimTypeTorus :: RealFloat a => LSLValue a; llcPrimTypeTorus = IVal cPrimTypeTorus
cPrimTypeTube = 5;llcPrimTypeTube :: RealFloat a => LSLValue a; llcPrimTypeTube = IVal cPrimTypeTube

validAttachmentPoints = [0..36]::[Int]

cDebugChannel = 2147483647 :: Int
llcDebugChannel = IVal cDebugChannel

cEOF = "\n\n\n"
llcEOF = (SVal cEOF)

cPermissionControlCamera = 0x800 :: Int
llcPermissionControlCamera = IVal cPermissionControlCamera
cPermissionTrackCamera = 0x400;llcPermissionTrackCamera :: RealFloat a => LSLValue a; llcPermissionTrackCamera = IVal cPermissionTrackCamera
cPermissionTriggerAnimation = 0x10;llcPermissionTriggerAnimation :: RealFloat a => LSLValue a; llcPermissionTriggerAnimation = IVal cPermissionTriggerAnimation
cPermissionDebit = 0x2;llcPermissionDebit :: RealFloat a => LSLValue a; llcPermissionDebit = IVal cPermissionDebit
cPermissionAttach = 0x20;llcPermissionAttach :: RealFloat a => LSLValue a; llcPermissionAttach = IVal cPermissionAttach
cPermissionTakeControls = 0x4;llcPermissionTakeControls :: RealFloat a => LSLValue a; llcPermissionTakeControls = IVal cPermissionTakeControls

cActive = 0x2;llcActive :: RealFloat a => LSLValue a; llcActive = IVal cActive
cAgent = 0x1;llcAgent :: RealFloat a => LSLValue a; llcAgent = IVal cAgent
cPassive = 0x4;llcPassive :: RealFloat a => LSLValue a; llcPassive = IVal cPassive
cScripted = 0x8;llcScripted :: RealFloat a => LSLValue a; llcScripted = IVal cScripted


cStatusPhysics = 1;llcStatusPhysics :: RealFloat a => LSLValue a; llcStatusPhysics = IVal cStatusPhysics
cStatusRotateX = 2;llcStatusRotateX :: RealFloat a => LSLValue a; llcStatusRotateX = IVal cStatusRotateX
cStatusRotateY = 4;llcStatusRotateY :: RealFloat a => LSLValue a; llcStatusRotateY = IVal cStatusRotateY
cStatusRotateZ = 8;llcStatusRotateZ :: RealFloat a => LSLValue a; llcStatusRotateZ = IVal cStatusRotateZ
cStatusPhantom = 16;llcStatusPhantom :: RealFloat a => LSLValue a; llcStatusPhantom = IVal cStatusPhantom
cStatusSandbox = 32;llcStatusSandbox :: RealFloat a => LSLValue a; llcStatusSandbox = IVal cStatusSandbox
cStatusBlockGrab = 64;llcStatusBlockGrab :: RealFloat a => LSLValue a; llcStatusBlockGrab = IVal cStatusBlockGrab
cStatusDieAtEdge = 128;llcStatusDieAtEdge :: RealFloat a => LSLValue a; llcStatusDieAtEdge = IVal cStatusDieAtEdge
cStatusReturnAtEdge = 256;llcStatusReturnAtEdge :: RealFloat a => LSLValue a; llcStatusReturnAtEdge = IVal cStatusReturnAtEdge
cStatusCastShadows = 512;llcStatusCastShadows :: RealFloat a => LSLValue a; llcStatusCastShadows = IVal cStatusCastShadows

cPrimBumpShiny = 19;llcPrimBumpShiny :: RealFloat a => LSLValue a; llcPrimBumpShiny = IVal cPrimBumpShiny
cPrimColor = 18;llcPrimColor :: RealFloat a => LSLValue a; llcPrimColor = IVal cPrimColor
cPrimTexture = 17;llcPrimTexture :: RealFloat a => LSLValue a; llcPrimTexture = IVal cPrimTexture
cPrimTexgen = 22;llcPrimTexgen :: RealFloat a => LSLValue a; llcPrimTexgen = IVal cPrimTexgen
cPrimFullbright = 20;llcPrimFullbright :: RealFloat a => LSLValue a; llcPrimFullbright = IVal cPrimFullbright

cPrimMaterial = 2;llcPrimMaterial :: RealFloat a => LSLValue a; llcPrimMaterial = IVal cPrimMaterial
cPrimPhantom = 5;llcPrimPhantom :: RealFloat a => LSLValue a; llcPrimPhantom = IVal cPrimPhantom
cPrimPhysics = 3;llcPrimPhysics :: RealFloat a => LSLValue a; llcPrimPhysics = IVal cPrimPhysics
cPrimFlexible = 21;llcPrimFlexible :: RealFloat a => LSLValue a; llcPrimFlexible = IVal cPrimFlexible
cPrimPointLight = 23;llcPrimPointLight :: RealFloat a => LSLValue a; llcPrimPointLight = IVal cPrimPointLight
cPrimPosition = 6;llcPrimPosition :: RealFloat a => LSLValue a; llcPrimPosition = IVal cPrimPosition
cPrimRotation = 8;llcPrimRotation :: RealFloat a => LSLValue a; llcPrimRotation = IVal cPrimRotation
cPrimSize = 7;llcPrimSize :: RealFloat a => LSLValue a; llcPrimSize = IVal cPrimSize
cPrimTempOnRez = 4;llcPrimTempOnRez :: RealFloat a => LSLValue a; llcPrimTempOnRez = IVal cPrimTempOnRez 
cPrimType = 9;llcPrimType :: RealFloat a => LSLValue a; llcPrimType = IVal cPrimType

cParcelDetailsName = 0;llcParcelDetailsName :: RealFloat a => LSLValue a; llcParcelDetailsName = IVal cParcelDetailsName
cParcelDetailsDesc = 1;llcParcelDetailsDesc :: RealFloat a => LSLValue a; llcParcelDetailsDesc = IVal cParcelDetailsDesc
cParcelDetailsOwner = 2;llcParcelDetailsOwner :: RealFloat a => LSLValue a; llcParcelDetailsOwner = IVal cParcelDetailsOwner
cParcelDetailsGroup = 3;llcParcelDetailsGroup :: RealFloat a => LSLValue a; llcParcelDetailsGroup = IVal cParcelDetailsGroup 
cParcelDetailsArea = 4;llcParcelDetailsArea :: RealFloat a => LSLValue a; llcParcelDetailsArea = IVal cParcelDetailsArea

cClickActionNone = 0;llcClickActionNone :: RealFloat a => LSLValue a; llcClickActionNone = IVal cClickActionNone
cClickActionTouch = 0;llcClickActionTouch :: RealFloat a => LSLValue a; llcClickActionTouch = IVal cClickActionTouch
cClickActionSit = 1;llcClickActionSit :: RealFloat a => LSLValue a; llcClickActionSit = IVal cClickActionSit
cClickActionBuy = 2;llcClickActionBuy :: RealFloat a => LSLValue a; llcClickActionBuy = IVal cClickActionBuy
cClickActionPay = 3;llcClickActionPay :: RealFloat a => LSLValue a; llcClickActionPay = IVal cClickActionPay
cClickActionOpen = 4;llcClickActionOpen :: RealFloat a => LSLValue a; llcClickActionOpen = IVal cClickActionOpen
cClickActionPlay = 5;llcClickActionPlay :: RealFloat a => LSLValue a; llcClickActionPlay = IVal cClickActionPlay
cClickActionOpenMedia = 6;llcClickActionOpenMedia :: RealFloat a => LSLValue a; llcClickActionOpenMedia = IVal cClickActionOpenMedia
cClickActions = [cClickActionTouch,cClickActionSit,cClickActionBuy,cClickActionPay,cClickActionOpen,cClickActionPlay,cClickActionOpenMedia]

cDataBorn = 3;llcDataBorn :: RealFloat a => LSLValue a; llcDataBorn = IVal cDataBorn
cDataName = 2;llcDataName :: RealFloat a => LSLValue a; llcDataName = IVal cDataName
cDataOnline = 1;llcDataOnline :: RealFloat a => LSLValue a; llcDataOnline = IVal cDataOnline
cDataPayinfo = 8;llcDataPayinfo :: RealFloat a => LSLValue a; llcDataPayinfo = IVal cDataPayinfo
cDataRating = 4;llcDataRating :: RealFloat a => LSLValue a; llcDataRating = IVal cDataRating
cDataSimPos = 5;llcDataSimPos :: RealFloat a => LSLValue a; llcDataSimPos = IVal cDataSimPos
cDataSimRating = 7;llcDataSimRating :: RealFloat a => LSLValue a; llcDataSimRating = IVal cDataSimRating
cDataSimStatus = 6;llcDataSimStatus :: RealFloat a => LSLValue a; llcDataSimStatus = IVal cDataSimStatus

cHTTPBodyMaxlength = 2;llcHTTPBodyMaxlength :: RealFloat a => LSLValue a; llcHTTPBodyMaxlength = IVal cHTTPBodyMaxlength
cHTTPBodyTruncated = 0;llcHTTPBodyTruncated :: RealFloat a => LSLValue a; llcHTTPBodyTruncated = IVal cHTTPBodyTruncated
cHTTPMethod = 0;llcHTTPMethod :: RealFloat a => LSLValue a; llcHTTPMethod = IVal cHTTPMethod
cHTTPMimetype = 1;llcHTTPMimetype :: RealFloat a => LSLValue a; llcHTTPMimetype = IVal cHTTPMimetype
cHTTPVerifyCert = 3;llcHTTPVerifyCert :: RealFloat a => LSLValue a; llcHTTPVerifyCert = IVal cHTTPVerifyCert

cRemoteDataChannel = 1;llcRemoteDataChannel :: RealFloat a => LSLValue a; llcRemoteDataChannel = IVal cRemoteDataChannel
cRemoteDataRequest = 2;llcRemoteDataRequest :: RealFloat a => LSLValue a; llcRemoteDataRequest = IVal cRemoteDataRequest
cRemoteDataReply = 3;llcRemoteDataReply :: RealFloat a => LSLValue a; llcRemoteDataReply = IVal cRemoteDataReply

llcZeroVector = VVal 0 0 0
llcZeroRotation = RVal 0 0 0 1

mkIConst :: RealFloat a => Int -> (Int,LSLValue a)
mkIConst i = (i,IVal i)

allConstants :: RealFloat a => [Constant a]
allConstants = [
    Constant "ACTIVE" llcActive,
    Constant "AGENT" llcAgent,
    Constant "AGENT_ALWAYS_RUN" (IVal 0x1000),
    Constant "AGENT_ATTACHMENTS" (IVal 0x2),
    Constant "AGENT_AWAY" (IVal 0x40),
    Constant "AGENT_BUSY" (IVal 0x800),
    Constant "AGENT_CROUCHING" (IVal 0x400),
    Constant "AGENT_FLYING" (IVal 0x1),
    Constant "AGENT_IN_AIR" (IVal 0x100),
    Constant "AGENT_MOUSELOOK" (IVal 0x8),
    Constant "AGENT_ON_OBJECT" (IVal 0x20),
    Constant "AGENT_SCRIPTED" (IVal 0x4),
    Constant "AGENT_SITTING" (IVal 0x10),
    Constant "AGENT_TYPING" (IVal 0x200),
    Constant "AGENT_WALKING" (IVal 0x80),
    Constant "ALL_SIDES" (IVal (-1)),
    Constant "ANIM_ON" (IVal 0x1),
    Constant "ATTACH_BACK" (IVal 9),
    Constant "ATTACH_BELLY" (IVal 28),
    Constant "ATTACH_CHEST" (IVal 1),
    Constant "ATTACH_CHIN" (IVal 12),
    Constant "ATTACH_HEAD" (IVal 2),
    Constant "ATTACH_HUD_BOTTOM" (IVal 37),
    Constant "ATTACH_HUD_BOTTOM_LEFT" (IVal 36),
    Constant "ATTACH_HUD_BOTTOM_RIGHT" (IVal 38),
    Constant "ATTACH_HUD_CENTER_1" (IVal 35),
    Constant "ATTACH_HUD_CENTER_2" (IVal 31),
    Constant "ATTACH_HUD_TOP_CENTER" (IVal 33),
    Constant "ATTACH_HUD_TOP_LEFT" (IVal 34),
    Constant "ATTACH_HUD_TOP_RIGHT" (IVal 32),
    Constant "ATTACH_LEAR" (IVal 13),
    Constant "ATTACH_LEYE" (IVal 15),
    Constant "ATTACH_LFOOT" (IVal 7),
    Constant "ATTACH_LHAND" (IVal 5),
    Constant "ATTACH_LHIP" (IVal 25),
    Constant "ATTACH_LLARM" (IVal 21),
    Constant "ATTACH_LLLEG" (IVal 27),
    Constant "ATTACH_LPEC" (IVal 30),
    Constant "ATTACH_LSHOULDER" (IVal 3),
    Constant "ATTACH_LUARM" (IVal 20),
    Constant "ATTACH_LULEG" (IVal 26),
    Constant "ATTACH_MOUTH" (IVal 11),
    Constant "ATTACH_NOSE" (IVal 17),
    Constant "ATTACH_PELVIS" (IVal 10),
    Constant "ATTACH_REAR" (IVal 14),
    Constant "ATTACH_REYE" (IVal 16),
    Constant "ATTACH_RFOOT" (IVal 8),
    Constant "ATTACH_RHAND" (IVal 6),
    Constant "ATTACH_RHIP" (IVal 22),
    Constant "ATTACH_RLARM" (IVal 19),
    Constant "ATTACH_RLLEG" (IVal 24),
    Constant "ATTACH_RPEC" (IVal 29),
    Constant "ATTACH_RSHOULDER" (IVal 4),
    Constant "ATTACH_RUARM" (IVal 18),
    Constant "ATTACH_RULEG" (IVal 23),
    Constant "CAMERA_ACTIVE" (IVal 12),
    Constant "CAMERA_BEHINDNESS_ANGLE" (IVal 8),
    Constant "CAMERA_BEHINDNESS_LAG" (IVal 9),
    Constant "CAMERA_DISTANCE" (IVal 7),
    Constant "CAMERA_FOCUS" (IVal 17),
    Constant "CAMERA_FOCUS_LAG" (IVal 6),
    Constant "CAMERA_FOCUS_LOCKED" (IVal 22),
    Constant "CAMERA_FOCUS_OFFSET" (IVal 1),
    Constant "CAMERA_FOCUS_THRESHOLD" (IVal 11),
    Constant "CAMERA_PITCH" (IVal 0),
    Constant "CAMERA_POSITION" (IVal 13),
    Constant "CAMERA_POSITION_LAG" (IVal 5),
    Constant "CAMERA_POSITION_LOCKED" (IVal 21),
    Constant "CAMERA_POSITION_THRESHOLD" (IVal 10),
    Constant "CHANGED_ALLOWED_DROP" llcChangedAllowedDrop,
    Constant "CHANGED_COLOR" (IVal 0x2),
    Constant "CHANGED_INVENTORY" llcChangedInventory,
    Constant "CHANGED_LINK" llcChangedLink,
    Constant "CHANGED_OWNER" (IVal 0x80),
    Constant "CHANGED_REGION" (IVal 0x100),
    Constant "CHANGED_SCALE" (IVal 0x8),
    Constant "CHANGED_SHAPE" (IVal 0x4),
    Constant "CHANGED_TELEPORT" (IVal 0x200),
    Constant "CHANGED_TEXTURE" (IVal 0x10),
    Constant "CLICK_ACTION_NONE" llcClickActionNone,
    Constant "CLICK_ACTION_TOUCH" llcClickActionTouch,
    Constant "CLICK_ACTION_SIT" llcClickActionSit,
    Constant "CLICK_ACTION_BUY" llcClickActionBuy,
    Constant "CLICK_ACTION_PAY" llcClickActionPay,
    Constant "CLICK_ACTION_OPEN" llcClickActionOpen,
    Constant "CLICK_ACTION_PLAY" llcClickActionPlay,
    Constant "CLICK_ACTION_OPEN_MEDIA" llcClickActionOpenMedia,
    Constant "CONTROL_BACK" (IVal 0x2),
    Constant "CONTROL_DOWN" (IVal 0x20),
    Constant "CONTROL_FWD" (IVal 0x1),
    Constant "CONTROL_LBUTTON" (IVal 0x10000000),
    Constant "CONTROL_LEFT" (IVal 0x4),
    Constant "CONTROL_ML_LBUTTON" (IVal 0x40000000),
    Constant "CONTROL_RIGHT" (IVal 0x8),
    Constant "CONTROL_ROT_LEFT" (IVal 0x100),
    Constant "CONTROL_ROT_RIGHT" (IVal 0x200),
    Constant "CONTROL_UP" (IVal 0x10),
    Constant "DATA_BORN" llcDataBorn,
    Constant "DATA_NAME" llcDataName,
    Constant "DATA_ONLINE" llcDataOnline,
    Constant "DATA_PAYINFO" llcDataPayinfo,
    Constant "DATA_RATING" llcDataRating,
    Constant "DATA_SIM_POS" llcDataSimPos,
    Constant "DATA_SIM_RATING" llcDataSimRating,
    Constant "DATA_SIM_STATUS" llcDataSimStatus,
    Constant "DEBUG_CHANNEL" llcDebugChannel,
    Constant "DEG_TO_RAD" (FVal 0.01745329238),
    Constant "EOF" $ SVal cEOF,
    Constant "FALSE" (IVal 0),
    Constant "HTTP_BODY_MAXLENGTH" llcHTTPBodyMaxlength,
    Constant "HTTP_BODY_TRUNCATED" llcHTTPBodyTruncated,
    Constant "HTTP_METHOD" llcHTTPMethod,
    Constant "HTTP_MIMETYPE" llcHTTPMimetype,
    Constant "HTTP_VERIFY_CERT" llcHTTPVerifyCert,
    Constant "INVENTORY_ALL" llcInventoryAll,
    Constant "INVENTORY_ANIMATION" llcInventoryAnimation,
    Constant "INVENTORY_BODYPART" llcInventoryBodyPart,
    Constant "INVENTORY_CLOTHING" llcInventoryClothing,
    Constant "INVENTORY_GESTURE" llcInventoryGesture,
    Constant "INVENTORY_LANDMARK" llcInventoryLandmark,
    Constant "INVENTORY_NONE" llcInventoryNone,
    Constant "INVENTORY_NOTECARD" llcInventoryNotecard,
    Constant "INVENTORY_OBJECT" llcInventoryObject,
    Constant "INVENTORY_SCRIPT" llcInventoryScript,
    Constant "INVENTORY_SOUND" llcInventorySound,
    Constant "INVENTORY_TEXTURE" llcInventoryTexture,
    Constant "LAND_LARGE_BRUSH" (IVal 3),
    Constant "LAND_LEVEL" (IVal 0),
    Constant "LAND_LOWER" (IVal 2),
    Constant "LAND_MEDIUM_BRUSH" (IVal 2),
    Constant "LAND_NOISE" (IVal 4),
    Constant "LAND_RAISE" (IVal 1),
    Constant "LAND_REVERT" (IVal 5),
    Constant "LAND_SMALL_BRUSH" (IVal 1),
    Constant "LAND_SMOOTH" (IVal 3),
    Constant "LINK_ALL_CHILDREN" (IVal (-3)),
    Constant "LINK_ALL_OTHERS" (IVal (-2)),
    Constant "LINK_ROOT" (IVal 1),
    Constant "LINK_SET" (IVal (-1)),
    Constant "LINK_THIS" (IVal (-4)),
    Constant "LIST_STAT_GEOMETRIC_MEAN" (IVal 9),
    Constant "LIST_STAT_MAX" (IVal 2),
    Constant "LIST_STAT_MEAN"  (IVal 3),
    Constant "LIST_STAT_MEDIAN" (IVal 4),
    Constant "LIST_STAT_MIN" (IVal 1),
    Constant "LIST_STAT_NUM_COUNT" (IVal 8),
    Constant "LIST_STAT_RANGE" (IVal 0),
    Constant "LIST_STAT_STD_DEV" (IVal 5),
    Constant "LIST_STAT_SUM" (IVal 6),
    Constant "LIST_STAT_SUM_SQUARES" (IVal 7),
    Constant "LOOP" (IVal 0x2),
    Constant "MASK_BASE" llcMaskBase,
    Constant "MASK_EVERYONE" llcMaskEveryone,
    Constant "MASK_GROUP" llcMaskGroup,
    Constant "MASK_NEXT" llcMaskNext,
    Constant "MASK_OWNER" llcMaskOwner,
    Constant "NULL_KEY" (SVal "00000000-0000-0000-0000-000000000000"),
    Constant "OBJECT_CREATOR" (IVal 8),
    Constant "OBJECT_DESC" (IVal 2),
    Constant "OBJECT_NAME" (IVal 1),
    Constant "OBJECT_OWNER" (IVal 6),
    Constant "OBJECT_POS" (IVal 3),
    Constant "OBJECT_ROT" (IVal 4),
    Constant "OBJECT_VELOCITY" (IVal 5),
    Constant "OBJECT_GROUP" (IVal 7),
    Constant "OBJECT_UNKNOWN_DETAIL" (IVal (-1)),
    Constant "PARCEL_COUNT_GROUP" (IVal 2),
    Constant "PARCEL_COUNT_OTHER" (IVal 3),
    Constant "PARCEL_COUNT_OWNER" (IVal 1),
    Constant "PARCEL_COUNT_SELECTED" (IVal 4),
    Constant "PARCEL_COUNT_TEMP" (IVal 5),
    Constant "PARCEL_COUNT_TOTAL" (IVal 0),
    Constant "PARCEL_DETAILS_AREA" llcParcelDetailsArea,
    Constant "PARCEL_DETAILS_DESC" llcParcelDetailsDesc,
    Constant "PARCEL_DETAILS_GROUP" llcParcelDetailsGroup,
    Constant "PARCEL_DETAILS_NAME" llcParcelDetailsName,
    Constant "PARCEL_DETAILS_OWNER" llcParcelDetailsOwner,
    Constant "PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY" (IVal (1 `shiftL` 27)),
    Constant "PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS" (IVal (1 `shiftL` 26)),
    Constant "PARCEL_FLAG_ALLOW_CREATE_OBJECTS" (IVal (1 `shiftL` 6)),
    Constant "PARCEL_FLAG_ALLOW_DAMAGE" (IVal (1 `shiftL` 5)),
    Constant "PARCEL_FLAG_ALLOW_FLY" (IVal 0),
    Constant "PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY" (IVal (1 `shiftL` 28)),
    Constant "PARCEL_FLAG_ALLOW_GROUP_SCRIPTS" (IVal (1 `shiftL` 25)),
    Constant "PARCEL_FLAG_ALLOW_LANDMARK" (IVal (1 `shiftL` 3)),
    Constant "PARCEL_FLAG_ALLOW_SCRIPTS" (IVal (1 `shiftL` 1)),
    Constant "PARCEL_FLAG_ALLOW_TERRAFORM" (IVal (1 `shiftL` 4)),
    Constant "PARCEL_FLAG_LOCAL_SOUND_ONLY" (IVal (1 `shiftL` 15)),
    Constant "PARCEL_FLAG_RESTRICT_PUSHOBJECT" (IVal (1 `shiftL` 21)),
    Constant "PARCEL_FLAG_USE_ACCESS_GROUP" (IVal (1 `shiftL` 8)),
    Constant "PARCEL_FLAG_USE_ACCESS_LIST" (IVal (1 `shiftL` 9)),
    Constant "PARCEL_FLAG_USE_BAN_LIST" (IVal (1 `shiftL` 10)),
    Constant "PARCEL_FLAG_USE_LAND_PASS_LIST" (IVal (1 `shiftL` 11)),
    Constant "PARCEL_MEDIA_COMMAND_AGENT" (IVal 7),
    Constant "PARCEL_MEDIA_COMMAND_AUTO_ALIGN" (IVal 9),
    Constant "PARCEL_MEDIA_COMMAND_DESC" (IVal 12),
    Constant "PARCEL_MEDIA_COMMAND_LOOP" (IVal 3),
    Constant "PARCEL_MEDIA_COMMAND_LOOP_SET" (IVal 13),
    Constant "PARCEL_MEDIA_COMMAND_PAUSE" (IVal 1),
    Constant "PARCEL_MEDIA_COMMAND_PLAY" (IVal 2),
    Constant "PARCEL_MEDIA_COMMAND_SIZE" (IVal 11),
    Constant "PARCEL_MEDIA_COMMAND_STOP" (IVal 0),
    Constant "PARCEL_MEDIA_COMMAND_TEXTURE" (IVal 4),
    Constant "PARCEL_MEDIA_COMMAND_TIME" (IVal 6),
    Constant "PARCEL_MEDIA_COMMAND_TYPE" (IVal 10),
    Constant "PARCEL_MEDIA_COMMAND_UNLOAD" (IVal 8),
    Constant "PARCEL_MEDIA_COMMAND_URL" (IVal 5),
    Constant "PASSIVE" llcPassive,
    Constant "PAYMENT_INFO_ON_FILE" (IVal 1),
    Constant "PAYMENT_INFO_USED" (IVal 2),
    Constant "PAY_DEFAULT" (IVal (-2)),
    Constant "PAY_HIDE" (IVal (-1)),
    Constant "PERMISSION_ATTACH" llcPermissionAttach,
    Constant "PERMISSION_CHANGE_JOINTS" (IVal 0x100),
    Constant "PERMISSION_CHANGE_LINKS" llcPermissionChangeLinks,
    Constant "PERMISSION_CHANGE_PERMISSIONS" (IVal 0x200),
    Constant "PERMISSION_CONTROL_CAMERA" llcPermissionControlCamera,
    Constant "PERMISSION_DEBIT" llcPermissionDebit,
    Constant "PERMISSION_RELEASE_OWNERSHIP" (IVal 0x40),
    Constant "PERMISSION_REMAP_CONTROLS" (IVal 0x8),
    Constant "PERMISSION_TAKE_CONTROLS" llcPermissionTakeControls,
    Constant "PERMISSION_TRACK_CAMERA" (IVal 0x400),
    Constant "PERMISSION_TRIGGER_ANIMATION" llcPermissionTriggerAnimation,
    Constant "PERM_ALL" (IVal 0x7FFFFFFF),
    Constant "PERM_COPY" llcPermCopy,
    Constant "PERM_MODIFY" llcPermModify,
    Constant "PERM_MOVE" llcPermMove,
    Constant "PERM_TRANSFER" llcPermTransfer,
    Constant "PI" (FVal 3.14159274),
    Constant "PING_PONG" (IVal 0x8),
    Constant "PI_BY_TWO" (FVal 1.57079637),
    Constant "PRIM_BUMP_BARK" (IVal 4),
    Constant "PRIM_BUMP_BLOBS" (IVal 12),
    Constant "PRIM_BUMP_BRICKS" (IVal 5),
    Constant "PRIM_BUMP_BRIGHT" (IVal 1),
    Constant "PRIM_BUMP_CHECKER" (IVal 6),
    Constant "PRIM_BUMP_CONCRETE" (IVal 7),
    Constant "PRIM_BUMP_DARK" (IVal 2),
    Constant "PRIM_BUMP_DISKS" (IVal 10),
    Constant "PRIM_BUMP_GRAVEL" (IVal 11),
    Constant "PRIM_BUMP_LARGETILE" (IVal 14),
    Constant "PRIM_BUMP_NONE" (IVal 0),
    Constant "PRIM_BUMP_SHINY" llcPrimBumpShiny,
    Constant "PRIM_BUMP_SIDING" (IVal 13),
    Constant "PRIM_BUMP_STONE" (IVal 9),
    Constant "PRIM_BUMP_STUCCO" (IVal 15),
    Constant "PRIM_BUMP_SUCTION" (IVal 16),
    Constant "PRIM_BUMP_TILE" (IVal 8),
    Constant "PRIM_BUMP_WEAVE" (IVal 17),
    Constant "PRIM_BUMP_WOOD" (IVal 3),
    Constant "PRIM_CAST_SHADOWS" (IVal 24),
    Constant "PRIM_COLOR" llcPrimColor,
    Constant "PRIM_FLEXIBLE" llcPrimFlexible,
    Constant "PRIM_FULLBRIGHT" llcPrimFullbright,
    Constant "PRIM_GLOW" (IVal 25),
    Constant "PRIM_HOLE_CIRCLE" (IVal 0x10),
    Constant "PRIM_HOLE_DEFAULT" (IVal 0x0),
    Constant "PRIM_HOLE_SQUARE" (IVal 0x20),
    Constant "PRIM_HOLE_TRIANGLE" (IVal 0x30),
    Constant "PRIM_MATERIAL" llcPrimMaterial,
    Constant "PRIM_MATERIAL_FLESH" (IVal 4),
    Constant "PRIM_MATERIAL_GLASS" (IVal 2),
    Constant "PRIM_MATERIAL_LIGHT" (IVal 7),
    Constant "PRIM_MATERIAL_METAL" (IVal 1),
    Constant "PRIM_MATERIAL_PLASTIC" (IVal 5),
    Constant "PRIM_MATERIAL_RUBBER" (IVal 6),
    Constant "PRIM_MATERIAL_STONE" (IVal 0),
    Constant "PRIM_MATERIAL_WOOD" (IVal 3),
    Constant "PRIM_PHANTOM" llcPrimPhantom,
    Constant "PRIM_PHYSICS" llcPrimPhysics,
    Constant "PRIM_POINT_LIGHT" llcPrimPointLight,
    Constant "PRIM_POSITION" llcPrimPosition,
    Constant "PRIM_ROTATION" llcPrimRotation,
    Constant "PRIM_SCULPT_TYPE_CYLINDER" (IVal 4),
    Constant "PRIM_SCULPT_TYPE_PLANE" (IVal 3),
    Constant "PRIM_SCULPT_TYPE_SPHERE" (IVal 1),
    Constant "PRIM_SCULPT_TYPE_TORUS" (IVal 2),
    Constant "PRIM_SHINY_HIGH" (IVal 3),
    Constant "PRIM_SHINY_LOW" (IVal 1),
    Constant "PRIM_SHINY_MEDIUM" (IVal 2),
    Constant "PRIM_SHINY_NONE" (IVal 0),
    Constant "PRIM_SIZE" llcPrimSize,
    Constant "PRIM_TEMP_ON_REZ" llcPrimTempOnRez,
    Constant "PRIM_TEXGEN" llcPrimTexgen,
    Constant "PRIM_TEXGEN_DEFAULT" (IVal 0),
    Constant "PRIM_TEXGEN_PLANAR" (IVal 1),
    Constant "PRIM_TEXTURE" llcPrimTexture,
    --Constant "PRIM_TYPE" (IVal 1),
    Constant "PRIM_TYPE" llcPrimType,
    Constant "PRIM_TYPE_BOX" llcPrimTypeBox,
    Constant "PRIM_TYPE_CYLINDER" llcPrimTypeCylinder,
    Constant "PRIM_TYPE_PRISM" llcPrimTypePrism,
    Constant "PRIM_TYPE_RING" llcPrimTypeRing,
    Constant "PRIM_TYPE_SPHERE" llcPrimTypeSphere,
    Constant "PRIM_TYPE_SCULPT" llcPrimTypeSculpt,
    Constant "PRIM_TYPE_TORUS" llcPrimTypeTorus,
    Constant "PRIM_TYPE_TUBE" llcPrimTypeTube,
    Constant "PSYS_PART_BOUNCE_MASK" (IVal 0x4),
    Constant "PSYS_PART_EMISSIVE_MASK" (IVal 0x100),
    Constant "PSYS_PART_END_ALPHA" (IVal 4),
    Constant "PSYS_PART_END_COLOR" (IVal 3),
    Constant "PSYS_PART_END_SCALE" (IVal 6),
    Constant "PSYS_PART_FLAGS" (IVal 0),
    Constant "PSYS_PART_FOLLOW_SRC_MASK" (IVal 0x10),
    Constant "PSYS_PART_FOLLOW_VELOCITY_MASK" (IVal 0x20),
    Constant "PSYS_PART_INTERP_COLOR_MASK" (IVal 0x1),
    Constant "PSYS_PART_INTERP_SCALE_MASK" (IVal 0x2),
    Constant "PSYS_PART_MAX_AGE" (IVal 7),
    Constant "PSYS_PART_START_ALPHA" (IVal 2),
    Constant "PSYS_PART_START_COLOR" (IVal 1),
    Constant "PSYS_PART_START_SCALE" (IVal 5),
    Constant "PSYS_PART_TARGET_LINEAR_MASK" (IVal 0x80),
    Constant "PSYS_PART_TARGET_POS_MASK" (IVal 0x40),
    Constant "PSYS_PART_WIND_MASK" (IVal 0x8),
    Constant "PSYS_SRC_ACCEL" (IVal 8),
    Constant "PSYS_SRC_ANGLE_BEGIN" (IVal 22),
    Constant "PSYS_SRC_ANGLE_END" (IVal 23),
    Constant "PSYS_SRC_BURST_PART_COUNT" (IVal 15),
    Constant "PSYS_SRC_BURST_RADIUS" (IVal 16),
    Constant "PSYS_SRC_BURST_RATE" (IVal 13),
    Constant "PSYS_SRC_BURST_SPEED_MAX" (IVal 18),
    Constant "PSYS_SRC_BURST_SPEED_MIN" (IVal 17),
    Constant "PSYS_SRC_INNERANGLE" (IVal 10),
    Constant "PSYS_SRC_MAX_AGE" (IVal 19),
    Constant "PSYS_SRC_OBJ_REL_MASK" (IVal 1),
    Constant "PSYS_SRC_OMEGA" (IVal 21),
    Constant "PSYS_SRC_OUTERANGLE" (IVal 11),
    Constant "PSYS_SRC_PATTERN" (IVal 9),
    Constant "PSYS_SRC_PATTERN_ANGLE" (IVal 0x4),
    Constant "PSYS_SRC_PATTERN_ANGLE_CONE" (IVal 0x8),
    Constant "PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY" (IVal 0x10),
    Constant "PSYS_SRC_PATTERN_DROP" (IVal 0x1),
    Constant "PSYS_SRC_PATTERN_EXPLODE" (IVal 0x2),
    Constant "PSYS_SRC_TARGET_KEY" (IVal 20),
    Constant "PSYS_SRC_TEXTURE" (IVal 12),
    Constant "PUBLIC_CHANNEL" (IVal 0),
    Constant "RAD_TO_DEG" (FVal 57.29578),
    Constant "REGION_FLAG_ALLOW_DAMAGE" (IVal 0),
    Constant "REGION_FLAG_ALLOW_DIRECT_TELEPORT" (IVal (1 `shiftL` 20)),
    Constant "REGION_FLAG_BLOCK_FLY" (IVal (1 `shiftL` 19)),
    Constant "REGION_FLAG_BLOCK_TERRAFORM" (IVal (1 `shiftL` 6)),
    Constant "REGION_FLAG_DISABLE_COLLISIONS" (IVal (1 `shiftL` 12)),
    Constant "REGION_FLAG_DISABLE_PHYSICS" (IVal (1 `shiftL` 14)),
    Constant "REGION_FLAG_FIXED_SUN" (IVal (1 `shiftL` 4)),
    Constant "REGION_FLAG_RESTRICT_PUSHOBJECT" (IVal (1 `shiftL` 22)),
    Constant "REGION_FLAG_SANDBOX" (IVal (1 `shiftL` 8)),
    Constant "REMOTE_DATA_CHANNEL" llcRemoteDataChannel,
    Constant "REMOTE_DATA_REPLY" llcRemoteDataReply,
    Constant "REMOTE_DATA_REQUEST" llcRemoteDataRequest,
    Constant "REVERSE" (IVal 0x4),
    Constant "ROTATE" (IVal 0x20),
    Constant "SCALE" (IVal 0x40),
    Constant "SCRIPTED" llcScripted,
    Constant "SMOOTH" (IVal 0x10),
    Constant "SQRT2" (FVal 1.414213538),
    Constant "STATUS_BLOCK_GRAB" (IVal 0x40),
    Constant "STATUS_CAST_SHADOWS" (IVal 0x200),
    Constant "STATUS_DIE_AT_EDGE" (IVal 0x80),
    Constant "STATUS_PHANTOM" (IVal 0x10),
    Constant "STATUS_PHYSICS" (IVal 0x1),
    Constant "STATUS_RETURN_AT_EDGE" (IVal 0x100),
    Constant "STATUS_ROTATE_X" (IVal 0x2),
    Constant "STATUS_ROTATE_Y" (IVal 0x4),
    Constant "STATUS_ROTATE_Z" (IVal 0x8),
    Constant "STATUS_SANDBOX" (IVal 0x20),
    Constant "STRING_TRIM" (IVal 0x03),
    Constant "STRING_TRIM_HEAD" (IVal 0x01),
    Constant "STRING_TRIM_TAIL" (IVal 0x02),
    Constant "TEXTURE_BLANK" (KVal "5748decc-f629-461c-9a36-a35a221fe21f"),
    Constant "TEXTURE_DEFAULT" (KVal "8b5fec65-8d8d-9dc5-cda8-8fdf2716e361"),
    Constant "TEXTURE_PLYWOOD" (KVal "89556747-24cb-43ed-920b-47caed15465f"),
    Constant "TEXTURE_TRANSPARENT" (KVal "59facb66-4a72-40a2-815c-7d9b42c56f60"),
    Constant "TRUE" (IVal 1),
    Constant "TWO_PI" (FVal 6.28318548),
    Constant "TYPE_FLOAT" (IVal 2),
    Constant "TYPE_INTEGER" (IVal 1),
    Constant "TYPE_INVALID" (IVal 0),
    Constant "TYPE_KEY" (IVal 4),
    Constant "TYPE_ROTATION" (IVal 6),
    Constant "TYPE_STRING" (IVal 3),
    Constant "TYPE_VECTOR" (IVal 5),
    Constant "VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY" (IVal 32),
    Constant "VEHICLE_ANGULAR_DEFLECTION_TIMESCALE" (IVal 33),
    Constant "VEHICLE_ANGULAR_FRICTION_TIMESCALE" (IVal 17),
    Constant "VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE" (IVal 35),
    Constant "VEHICLE_ANGULAR_MOTOR_DIRECTION" (IVal 19),
    Constant "VEHICLE_ANGULAR_MOTOR_TIMESCALE" (IVal 34),
    Constant "VEHICLE_BANKING_EFFICIENCY" (IVal 38),
    Constant "VEHICLE_BANKING_MIX" (IVal 39),
    Constant "VEHICLE_BANKING_TIMESCALE" (IVal 40),
    Constant "VEHICLE_BUOYANCY" (IVal 27),
    Constant "VEHICLE_FLAG_CAMERA_DECOUPLED" (IVal 0x200),
    Constant "VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT" (IVal 0x10),
    Constant "VEHICLE_FLAG_HOVER_TERRAIN_ONLY" (IVal 0x8),
    Constant "VEHICLE_FLAG_HOVER_UP_ONLY" (IVal 0x20),
    Constant "VEHICLE_FLAG_HOVER_WATER_ONLY" (IVal 0x4),
    Constant "VEHICLE_FLAG_LIMIT_MOTOR_UP" (IVal 0x40),
    Constant "VEHICLE_FLAG_LIMIT_ROLL_ONLY" (IVal 0x2),
    Constant "VEHICLE_FLAG_MOUSELOOK_BANK" (IVal 0x100),
    Constant "VEHICLE_FLAG_MOUSELOOK_STEER" (IVal 0x80),
    Constant "VEHICLE_FLAG_NO_DEFLECTION_UP" (IVal 0x1),
    Constant "VEHICLE_FLAG_NO_FLY_UP" (IVal 0x1),
    Constant "VEHICLE_HOVER_EFFICIENCY" (IVal 25),
    Constant "VEHICLE_HOVER_HEIGHT" (IVal 24),
    Constant "VEHICLE_HOVER_TIMESCALE" (IVal 26),
    Constant "VEHICLE_LINEAR_DEFLECTION_EFFICIENCY" (IVal 28),
    Constant "VEHICLE_LINEAR_DEFLECTION_TIMESCALE" (IVal 29),
    Constant "VEHICLE_LINEAR_FRICTION_TIMESCALE" (IVal 16),
    Constant "VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE" (IVal 31),
    Constant "VEHICLE_LINEAR_MOTOR_DIRECTION" (IVal 18),
    Constant "VEHICLE_LINEAR_MOTOR_OFFSET" (IVal 20),
    Constant "VEHICLE_LINEAR_MOTOR_TIMESCALE" (IVal 30),
    Constant "VEHICLE_REFERENCE_FRAME" (IVal 44),
    Constant "VEHICLE_TYPE_AIRPLANE" (IVal 4),
    Constant "VEHICLE_TYPE_BALLOON" (IVal 5),
    Constant "VEHICLE_TYPE_BOAT" (IVal 3),
    Constant "VEHICLE_TYPE_CAR" (IVal 2),
    Constant "VEHICLE_TYPE_NONE" (IVal 0),
    Constant "VEHICLE_TYPE_SLED" (IVal 1),
    Constant "VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY" (IVal 36),
    Constant "VEHICLE_VERTICAL_ATTRACTION_TIMESCALE" (IVal 37),
    Constant "ZERO_ROTATION" llcZeroRotation,
    Constant "ZERO_VECTOR" llcZeroVector
    ]

findConstant s = findM (\ c -> s == constName c) allConstants
findConstVal s = fmap constVal $ findConstant s
findConstType s = fmap typeOfLSLValue $ findConstVal s
isConstant s =
    case findConstant s of
        Nothing -> False
        _ -> True

        
-- non LSL (lslPlus only) constants
lslPlusAvatarKey = 0
lslPlusAvatarPos = 1
lslPlusAvatarRot = 2
lslPlusAvatarName = 3