# Path: pyoptix/enums.py
# class ObjectType:
#     unknown = RTobjecttype.RT_OBJECTTYPE_UNKNOWN
#     group = RTobjecttype.RT_OBJECTTYPE_GROUP
#     geometry_group = RTobjecttype.RT_OBJECTTYPE_GEOMETRY_GROUP
#     transform = RTobjecttype.RT_OBJECTTYPE_TRANSFORM
#     selector = RTobjecttype.RT_OBJECTTYPE_SELECTOR
#     geometry_instance = RTobjecttype.RT_OBJECTTYPE_GEOMETRY_INSTANCE
#     buffer = RTobjecttype.RT_OBJECTTYPE_BUFFER
#     texture_sampler = RTobjecttype.RT_OBJECTTYPE_TEXTURE_SAMPLER
#     object = RTobjecttype.RT_OBJECTTYPE_OBJECT
#     matrix2x2 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT2x2
#     matrix2x3 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT2x3
#     matrix2x4 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT2x4
#     matrix3x2 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT3x2
#     matrix3x3 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT3x3
#     matrix3x4 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT3x4
#     matrix4x2 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT4x2
#     matrix4x3 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT4x3
#     matrix4x4 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT4x4
#     float = RTobjecttype.RT_OBJECTTYPE_FLOAT
#     float2 = RTobjecttype.RT_OBJECTTYPE_FLOAT2
#     float3 = RTobjecttype.RT_OBJECTTYPE_FLOAT3
#     float4 = RTobjecttype.RT_OBJECTTYPE_FLOAT4
#     int = RTobjecttype.RT_OBJECTTYPE_INT
#     int2 = RTobjecttype.RT_OBJECTTYPE_INT2
#     int3 = RTobjecttype.RT_OBJECTTYPE_INT3
#     int4 = RTobjecttype.RT_OBJECTTYPE_INT4
#     unsigned_int = RTobjecttype.RT_OBJECTTYPE_UNSIGNED_INT
#     unsigned_int2 = RTobjecttype.RT_OBJECTTYPE_UNSIGNED_INT2
#     unsigned_int3 = RTobjecttype.RT_OBJECTTYPE_UNSIGNED_INT3
#     unsigned_int4 = RTobjecttype.RT_OBJECTTYPE_UNSIGNED_INT4
#     user = RTobjecttype.RT_OBJECTTYPE_USER
#     program = RTobjecttype.RT_OBJECTTYPE_PROGRAM
# 
# def get_object_type_from_dtype(dtype, shape):
#     if dtype in DTYPE_SHAPE_TO_OBJECT_TYPE and shape in DTYPE_SHAPE_TO_OBJECT_TYPE[dtype]:
#         return DTYPE_SHAPE_TO_OBJECT_TYPE[dtype][shape]
#     else:
#         return DTYPE_SHAPE_TO_OBJECT_TYPE['default']
# 
# def get_dtype_from_object_type(object_type):
#     if object_type in OBJECT_TYPE_TO_DTYPE_SHAPE:
#         return OBJECT_TYPE_TO_DTYPE_SHAPE[object_type]
#     else:
#         return None, None
# 
# def get_object_type_from_pyoptix_class(instance):
#     try:
#         if instance.__class__.__name__ in PYOPTIX_CLASS_TO_OBJECT_TYPE:
#             return PYOPTIX_CLASS_TO_OBJECT_TYPE[instance.__class__.__name__]
#         else:
#             for base in instance.__class__.__bases__:
#                 if base.__name__ in PYOPTIX_CLASS_TO_OBJECT_TYPE:
#                     return PYOPTIX_CLASS_TO_OBJECT_TYPE[base.__name__]
#             return PYOPTIX_CLASS_TO_OBJECT_TYPE['default']
#     except Exception:
#         return None


import numpy
from pyoptix.enums import ObjectType, get_object_type_from_dtype, get_dtype_from_object_type, \
    get_object_type_from_pyoptix_class

OBJECT_TYPE_TO_SET_FUNCTION = {
    ObjectType.buffer: 'set_buffer',
    ObjectType.texture_sampler: 'set_texture',
    ObjectType.program: 'set_program_id_with_program',
    ObjectType.group: 'set_group',
    ObjectType.geometry_group: 'set_geometry_group',
    ObjectType.selector: 'set_selector',

# Path: pyoptix/enums.py
# class ObjectType:
#     unknown = RTobjecttype.RT_OBJECTTYPE_UNKNOWN
#     group = RTobjecttype.RT_OBJECTTYPE_GROUP
#     geometry_group = RTobjecttype.RT_OBJECTTYPE_GEOMETRY_GROUP
#     transform = RTobjecttype.RT_OBJECTTYPE_TRANSFORM
#     selector = RTobjecttype.RT_OBJECTTYPE_SELECTOR
#     geometry_instance = RTobjecttype.RT_OBJECTTYPE_GEOMETRY_INSTANCE
#     buffer = RTobjecttype.RT_OBJECTTYPE_BUFFER
#     texture_sampler = RTobjecttype.RT_OBJECTTYPE_TEXTURE_SAMPLER
#     object = RTobjecttype.RT_OBJECTTYPE_OBJECT
#     matrix2x2 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT2x2
#     matrix2x3 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT2x3
#     matrix2x4 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT2x4
#     matrix3x2 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT3x2
#     matrix3x3 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT3x3
#     matrix3x4 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT3x4
#     matrix4x2 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT4x2
#     matrix4x3 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT4x3
#     matrix4x4 = RTobjecttype.RT_OBJECTTYPE_MATRIX_FLOAT4x4
#     float = RTobjecttype.RT_OBJECTTYPE_FLOAT
#     float2 = RTobjecttype.RT_OBJECTTYPE_FLOAT2
#     float3 = RTobjecttype.RT_OBJECTTYPE_FLOAT3
#     float4 = RTobjecttype.RT_OBJECTTYPE_FLOAT4
#     int = RTobjecttype.RT_OBJECTTYPE_INT
#     int2 = RTobjecttype.RT_OBJECTTYPE_INT2
#     int3 = RTobjecttype.RT_OBJECTTYPE_INT3
#     int4 = RTobjecttype.RT_OBJECTTYPE_INT4
#     unsigned_int = RTobjecttype.RT_OBJECTTYPE_UNSIGNED_INT
#     unsigned_int2 = RTobjecttype.RT_OBJECTTYPE_UNSIGNED_INT2
#     unsigned_int3 = RTobjecttype.RT_OBJECTTYPE_UNSIGNED_INT3
#     unsigned_int4 = RTobjecttype.RT_OBJECTTYPE_UNSIGNED_INT4
#     user = RTobjecttype.RT_OBJECTTYPE_USER
#     program = RTobjecttype.RT_OBJECTTYPE_PROGRAM
# 
# def get_object_type_from_dtype(dtype, shape):
#     if dtype in DTYPE_SHAPE_TO_OBJECT_TYPE and shape in DTYPE_SHAPE_TO_OBJECT_TYPE[dtype]:
#         return DTYPE_SHAPE_TO_OBJECT_TYPE[dtype][shape]
#     else:
#         return DTYPE_SHAPE_TO_OBJECT_TYPE['default']
# 
# def get_dtype_from_object_type(object_type):
#     if object_type in OBJECT_TYPE_TO_DTYPE_SHAPE:
#         return OBJECT_TYPE_TO_DTYPE_SHAPE[object_type]
#     else:
#         return None, None
# 
# def get_object_type_from_pyoptix_class(instance):
#     try:
#         if instance.__class__.__name__ in PYOPTIX_CLASS_TO_OBJECT_TYPE:
#             return PYOPTIX_CLASS_TO_OBJECT_TYPE[instance.__class__.__name__]
#         else:
#             for base in instance.__class__.__bases__:
#                 if base.__name__ in PYOPTIX_CLASS_TO_OBJECT_TYPE:
#                     return PYOPTIX_CLASS_TO_OBJECT_TYPE[base.__name__]
#             return PYOPTIX_CLASS_TO_OBJECT_TYPE['default']
#     except Exception:
#         return None


# Path: pyoptix/variable.py
import numpy
from pyoptix.enums import ObjectType, get_object_type_from_dtype, get_dtype_from_object_type, \
    get_object_type_from_pyoptix_class


OBJECT_TYPE_TO_SET_FUNCTION = {
    ObjectType.buffer: 'set_buffer',
    ObjectType.texture_sampler: 'set_texture',
    ObjectType.program: 'set_program_id_with_program',
    ObjectType.group: 'set_group',
    ObjectType.geometry_group: 'set_geometry_group',
    ObjectType.selector: 'set_selector',

    ObjectType.transform: 'set_transform',