
extern "C" {

	void* IrrScene_IIndexBuffer_getData(IIndexBuffer* ibuf)
	{
		if (ibuf)
			return ibuf->getData();
		else return 0;
	}

	s32 IrrScene_IIndexBuffer_getType(IIndexBuffer* ibuf) // returns E_INDEX_TYPE
	{
		if (ibuf)
			return ibuf->getType();
		else return -1;
	}
	
	void IrrScene_IIndexBuffer_setType(IIndexBuffer* ibuf, E_INDEX_TYPE IndexType)
	{
		if (ibuf)
			ibuf->setType(IndexType);
	}

	u32 IrrScene_IIndexBuffer_stride(IIndexBuffer* ibuf)
	{
		if (ibuf)
			return ibuf->stride();
		else return 0;
	}

	u32 IrrScene_IIndexBuffer_size(IIndexBuffer* ibuf)
	{
		if (ibuf)
			return ibuf->size();
		else return 0;
	}
	
	void IrrScene_IIndexBuffer_push_back(IIndexBuffer* ibuf, u32 element)
	{
		if (ibuf)
			ibuf->push_back(element);
	}
		
	u32 IrrScene_IIndexBuffer_elementAt(IIndexBuffer* ibuf, u32 index)
	{
		if (ibuf)
			return (*ibuf)[index];
		else return 0;
	}
	
	u32 IrrScene_IIndexBuffer_getLast(IIndexBuffer* ibuf)
	{
		if (ibuf)
			return ibuf->getLast();
		else return 0;
	}
	
	void IrrScene_IIndexBuffer_setValue(IIndexBuffer* ibuf, u32 index, u32 value)
	{
		if (ibuf)
			ibuf->setValue(index, value);
	}
	
	void IrrScene_IIndexBuffer_set_used(IIndexBuffer* ibuf, u32 usedNow)
	{
		if (ibuf)
			ibuf->set_used(usedNow);
	}
	
	void IrrScene_IIndexBuffer_reallocate(IIndexBuffer* ibuf, u32 new_size)
	{
		if (ibuf)
			ibuf->reallocate(new_size);
	}
	
	u32 IrrScene_IIndexBuffer_allocated_size(IIndexBuffer* ibuf)
	{
		if (ibuf)
			return ibuf->allocated_size();
		else return 0;
	}

	void* IrrScene_IIndexBuffer_pointer(IIndexBuffer* ibuf)
	{
		if (ibuf)
			return ibuf->pointer();
		else return 0;
	}

	s32 IrrScene_IIndexBuffer_getHardwareMappingHint(IIndexBuffer* ibuf) // returns E_HARDWARE_MAPPING 
	{
		if (ibuf)
			return ibuf->getHardwareMappingHint();
		else return -1;
	}

	void IrrScene_IIndexBuffer_setHardwareMappingHint(IIndexBuffer* ibuf, E_HARDWARE_MAPPING NewMappingHint)
	{
		if (ibuf)
			ibuf->setHardwareMappingHint(NewMappingHint);
	}

	void IrrScene_IIndexBuffer_setDirty(IIndexBuffer* ibuf)
	{
		if (ibuf)
			ibuf->setDirty();
	}
	
	u32 IrrScene_IIndexBuffer_getChangedID(IIndexBuffer* ibuf)
	{
		if (ibuf)
			return ibuf->getChangedID();
		else return 0;
	}

	bool IrrScene_IIndexBuffer_drop(IIndexBuffer* unk)
	{
		if (unk)
			return unk->drop();
		else return 0;
	}
	
	const c8* IrrScene_IIndexBuffer_getDebugName(IIndexBuffer* unk)
	{
		if (unk)
			return unk->getDebugName();
		else return "";
	}
	
	void IrrScene_IIndexBuffer_grab(IIndexBuffer* unk)
	{
		if (unk)
			unk->grab();
	}
}