Box3D
Safe HaskellNone
LanguageGHC2021

Box3D.Id

Description

Low-level bindings to box3d/id.h: opaque handles to Box3D objects.

The C API passes these as integer-only structs of at most 8 bytes by value. On the 64-bit ABIs this package supports (x86-64 SysV and Win64, AArch64) such a struct travels in a general-purpose register exactly like a uint32_t/uint64_t, so the handles are newtypes over words and cross the FFI directly, with no shim. The payload is the raw struct bytes and carries no stable meaning; the constructors are exported only so foreign imports can see through the newtypes. A zero word is the null id, which is also what zero-initialisation produces on the C side. Struct sizes are pinned by _Static_asserts in cbits/box3d_shim.c.

ContactId is 12 bytes and does not fit a word, so it keeps a struct-shaped representation; nothing passes it by value yet.

Synopsis

Documentation

newtype WorldId Source #

Handle to a world instance.

Constructors

WorldId Word32 

Instances

Instances details
Storable WorldId Source # 
Instance details

Defined in Box3D.Id

Show WorldId Source # 
Instance details

Defined in Box3D.Id

Eq WorldId Source # 
Instance details

Defined in Box3D.Id

Methods

(==) :: WorldId -> WorldId -> Bool #

(/=) :: WorldId -> WorldId -> Bool #

newtype BodyId Source #

Handle to a body instance.

Constructors

BodyId Word64 

Instances

Instances details
HasUserData BodyId Source # 
Instance details

Defined in Box3D.UserData

Methods

setUserData :: BodyId -> Ptr () -> IO () Source #

getUserData :: BodyId -> IO (Ptr ()) Source #

Storable BodyId Source # 
Instance details

Defined in Box3D.Id

Show BodyId Source # 
Instance details

Defined in Box3D.Id

Eq BodyId Source # 
Instance details

Defined in Box3D.Id

Methods

(==) :: BodyId -> BodyId -> Bool #

(/=) :: BodyId -> BodyId -> Bool #

newtype ShapeId Source #

Handle to a shape instance.

Constructors

ShapeId Word64 

Instances

Instances details
HasUserData ShapeId Source # 
Instance details

Defined in Box3D.UserData

Methods

setUserData :: ShapeId -> Ptr () -> IO () Source #

getUserData :: ShapeId -> IO (Ptr ()) Source #

Storable ShapeId Source # 
Instance details

Defined in Box3D.Id

Show ShapeId Source # 
Instance details

Defined in Box3D.Id

Eq ShapeId Source # 
Instance details

Defined in Box3D.Id

Methods

(==) :: ShapeId -> ShapeId -> Bool #

(/=) :: ShapeId -> ShapeId -> Bool #

newtype JointId Source #

Handle to a joint instance.

Constructors

JointId Word64 

Instances

Instances details
HasUserData JointId Source # 
Instance details

Defined in Box3D.UserData

Methods

setUserData :: JointId -> Ptr () -> IO () Source #

getUserData :: JointId -> IO (Ptr ()) Source #

Storable JointId Source # 
Instance details

Defined in Box3D.Id

Show JointId Source # 
Instance details

Defined in Box3D.Id

Eq JointId Source # 
Instance details

Defined in Box3D.Id

Methods

(==) :: JointId -> JointId -> Bool #

(/=) :: JointId -> JointId -> Bool #

data ContactId Source #

Handle to a contact instance.

Instances

Instances details
Storable ContactId Source # 
Instance details

Defined in Box3D.Id

Show ContactId Source # 
Instance details

Defined in Box3D.Id

Eq ContactId Source # 
Instance details

Defined in Box3D.Id