Skip to content

Instantly share code, notes, and snippets.

@ChadSki
Created September 15, 2013 23:56
Show Gist options
  • Select an option

  • Save ChadSki/6575360 to your computer and use it in GitHub Desktop.

Select an option

Save ChadSki/6575360 to your computer and use it in GitHub Desktop.
Cython and dispatch tables
primitive_getter = {
'float32' : lambda int address: (<float*>address)[0],
'float64' : lambda int address: (<double*>address)[0],
'int8' : lambda int address: (<int8_t*>address)[0],
'int16' : lambda int address: (<int16_t*>address)[0],
'int32' : lambda int address: (<int32_t*>address)[0],
'int64' : lambda int address: (<int64_t*>address)[0],
'uint8' : lambda int address: (<uint8_t*>address)[0],
'uint16' : lambda int address: (<uint16_t*>address)[0],
'uint32' : lambda int address: (<uint32_t*>address)[0],
'uint64' : lambda int address: (<uint64_t*>address)[0],
}
primitive_setter = {
'float32' : lambda int address, float value: (<float*>address)[0] = value,
'float64' : lambda int address, float value: (<double*>address)[0] = value,
'int8' : lambda int address, int value: (<int8_t*>address)[0] = value,
'int16' : lambda int address, int value: (<int16_t*>address)[0] = value,
'int32' : lambda int address, int value: (<int32_t*>address)[0] = value,
'int64' : lambda int address, int value: (<int64_t*>address)[0] = value,
'uint8' : lambda int address, int value: (<uint8_t*>address)[0] = value,
'uint16' : lambda int address, int value: (<uint16_t*>address)[0] = value,
'uint32' : lambda int address, int value: (<uint32_t*>address)[0] = value,
'uint64' : lambda int address, int value: (<uint64_t*>address)[0] = value,
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment