
extern "C" 
{
	// ------------------------------------------------------------------------------
	// IGUITreeViewNode
	// ------------------------------------------------------------------------------

	IGUITreeView* IrrGUI_IGUITreeViewNode_getOwner(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getOwner();
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_getParent(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getParent();
		else return 0;
	}
	
	const wchar_t* IrrGUI_IGUITreeViewNode_getText(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getText();
		else return L"";
	}

	void IrrGUI_IGUITreeViewNode_setText( IGUITreeViewNode* tvnode, const wchar_t* text )
	{
		if (tvnode)
			tvnode->setText(text);
	}
		
	const wchar_t* IrrGUI_IGUITreeViewNode_getIcon(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getIcon();
		else return L"";
	}
	
	void IrrGUI_IGUITreeViewNode_setIcon( IGUITreeViewNode* tvnode, const wchar_t* icon )
	{
		if (tvnode)
			tvnode->setIcon(icon);
	}
	
	s32 IrrGUI_IGUITreeViewNode_getImageIndex(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getImageIndex();
		else return -1;
	}

	void IrrGUI_IGUITreeViewNode_setImageIndex( IGUITreeViewNode* tvnode, u32 imageIndex )
	{
		if (tvnode)
			tvnode->setImageIndex(imageIndex);
	}

	s32 IrrGUI_IGUITreeViewNode_getSelectedImageIndex(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getSelectedImageIndex();
		else return -1;
	}
	
	void IrrGUI_IGUITreeViewNode_setSelectedImageIndex( IGUITreeViewNode* tvnode, u32 imageIndex )
	{
		if (tvnode)
			tvnode->setSelectedImageIndex(imageIndex);		
	}

	void* IrrGUI_IGUITreeViewNode_getData(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getData();
		else return 0;
	}
		
	void IrrGUI_IGUITreeViewNode_setData( IGUITreeViewNode* tvnode, void* data )
	{
		if (tvnode)
			tvnode->setData(data);
	}
	
	IReferenceCounted* IrrGUI_IGUITreeViewNode_getData2(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getData2();
		else return 0;
	}
	
	void IrrGUI_IGUITreeViewNode_setData2( IGUITreeViewNode* tvnode, IReferenceCounted* data )
	{
		if (tvnode)
			tvnode->setData2(data);
	}
	
	s32 IrrGUI_IGUITreeViewNode_getChildCount(IGUITreeViewNode* tvnode)		
	{
		if (tvnode)
			return tvnode->getChildCount();
		else return -1;
	}
	
	void IrrGUI_IGUITreeViewNode_clearChilds(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			tvnode->clearChilds();
	}

	bool IrrGUI_IGUITreeViewNode_hasChilds(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->hasChilds();
		else return false;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_addChildBack(IGUITreeViewNode* tvnode, 
							const wchar_t*		text, 
							const wchar_t*		icon = 0, 
							s32					imageIndex = -1,
							s32					selectedImageIndex = -1,
							void*					data = 0,
							IReferenceCounted*			data2 = 0 )

	{
		if (tvnode)
			return tvnode->addChildBack(text, icon, imageIndex, selectedImageIndex, data, data2);
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_addChildFront(IGUITreeViewNode* tvnode,
							const wchar_t*		text, 
							const wchar_t*		icon = 0, 
							s32					imageIndex = -1,
							s32					selectedImageIndex = -1,
							void*					data = 0,
							IReferenceCounted*			data2 = 0 )
	{
		if (tvnode)
			return tvnode->addChildFront(text, icon, imageIndex, selectedImageIndex, data, data2);
		else return 0;
	}



	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_insertChildAfter(IGUITreeViewNode* tvnode, 
							IGUITreeViewNode*	other, 
							const wchar_t*		text, 
							const wchar_t*		icon = 0, 
							s32					imageIndex = -1,
							s32					selectedImageIndex = -1,
							void*					data = 0,
							IReferenceCounted*			data2 = 0 )
	{
		if (tvnode)
			return tvnode->insertChildAfter(other, text, icon, imageIndex, selectedImageIndex, data, data2);
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_insertChildBefore(IGUITreeViewNode* tvnode, 
							IGUITreeViewNode*	other, 
							const wchar_t*		text, 
							const wchar_t*		icon = 0, 
							s32					imageIndex = -1,
							s32					selectedImageIndex = -1,
							void*					data = 0,
							IReferenceCounted*			data2 = 0 )
	{
		if (tvnode)
			return tvnode->insertChildBefore(other, text, icon, imageIndex, selectedImageIndex, data, data2);
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_getFirstChild(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getFirstChild();
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_getLastChild(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getLastChild();
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_getPrevSibling(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getPrevSibling();
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_getNextSibling(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getNextSibling();
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeViewNode_getNextVisible(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getNextVisible();
		else return 0;
	}

	bool IrrGUI_IGUITreeViewNode_deleteChild( IGUITreeViewNode* tvnode, IGUITreeViewNode* child )
	{
		if (tvnode)
			return tvnode->deleteChild(child);
		else return false;
	}

	bool IrrGUI_IGUITreeViewNode_moveChildUp( IGUITreeViewNode* tvnode, IGUITreeViewNode* child )
	{
		if (tvnode)
			return tvnode->moveChildUp(child);
		else return false;
	}

	bool IrrGUI_IGUITreeViewNode_moveChildDown( IGUITreeViewNode* tvnode, IGUITreeViewNode* child )
	{
		if (tvnode)
			return tvnode->moveChildDown(child);
		else return false;
	}

	bool IrrGUI_IGUITreeViewNode_getExpanded(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getExpanded();
		else return false;
	}

	void IrrGUI_IGUITreeViewNode_setExpanded( IGUITreeViewNode* tvnode, bool expanded )
	{
		if (tvnode)
			tvnode->setExpanded(expanded);
	}

	bool IrrGUI_IGUITreeViewNode_getSelected(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getSelected();
		else return false;
	}

	void IrrGUI_IGUITreeViewNode_setSelected( IGUITreeViewNode* tvnode, bool selected )
	{
		if (tvnode)
			tvnode->setSelected(selected);
	}

	bool IrrGUI_IGUITreeViewNode_isRoot(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->isRoot();
		else return false;
	}

	s32 IrrGUI_IGUITreeViewNode_getLevel(IGUITreeViewNode* tvnode)
	{
		if (tvnode)
			return tvnode->getLevel();
		else return -1;
	}

	bool IrrGUI_IGUITreeViewNode_isVisible(IGUITreeViewNode* tvnode) 
	{
		if (tvnode)
			return tvnode->isVisible();
		else return false;
	}


	bool IrrGUI_IGUITreeViewNode_drop(IGUITreeViewNode* unk)
	{
		if (unk)
			return unk->drop();
		else return 0;
	}
	
	const c8* IrrGUI_IGUITreeViewNode_getDebugName(IGUITreeViewNode* unk)
	{
		if (unk)
			return unk->getDebugName();
		else return "";
	}
	
	void IrrGUI_IGUITreeViewNode_grab(IGUITreeViewNode* unk)
	{
		if (unk)
			unk->grab();
	}


	// ------------------------------------------------------------------------------
	// IGUITreeView
	// ------------------------------------------------------------------------------

	IGUITreeViewNode* IrrGUI_IGUITreeView_getRoot(IGUITreeView* tv)
	{
		if (tv)
			return tv->getRoot();
		else return 0;
	}

	IGUITreeViewNode* IrrGUI_IGUITreeView_getSelected(IGUITreeView* tv)
	{
		if (tv)
			return tv->getSelected();
		else return 0;
	}

	bool IrrGUI_IGUITreeView_getLinesVisible(IGUITreeView* tv)
	{
		if (tv)
			return tv->getLinesVisible();
		else return false;
	}
	
	void IrrGUI_IGUITreeView_setLinesVisible( IGUITreeView* tv, bool visible )
	{
		if (tv)
			tv->setLinesVisible(visible);
	}

	void IrrGUI_IGUITreeView_setIconFont( IGUITreeView* tv, IGUIFont* font )
	{
		if (tv)
			tv->setIconFont(font);
	}
	
	void IrrGUI_IGUITreeView_setImageList( IGUITreeView* tv, IGUIImageList* imageList )
	{
		if (tv)
			tv->setImageList(imageList);
	}
	
	IGUIImageList* IrrGUI_IGUITreeView_getImageList(IGUITreeView* tv)
	{
		if (tv)
			return tv->getImageList();
		else return 0;
	}
	
	void IrrGUI_IGUITreeView_setImageLeftOfIcon( IGUITreeView* tv, bool bLeftOf )
	{
		if (tv)
			tv->setImageLeftOfIcon(bLeftOf);
	}

	bool IrrGUI_IGUITreeView_getImageLeftOfIcon(IGUITreeView* tv)
	{
		if (tv)
			return tv->getImageLeftOfIcon();
	}
	
	IGUITreeViewNode* IrrGUI_IGUITreeView_getLastEventNode(IGUITreeView* tv)
	{
		if (tv)
			return tv->getLastEventNode();
		else return 0;
	}

}