#ifndef BCAPBASE_H_
#define BCAPBASE_H_

enum {
	TYPE_BASE = -1,
	TYPE_CTRL,
	TYPE_CTRL_VAR,
};

class bCapBase {
public:
	bCapBase(int Type, BSTR Name);
	virtual ~bCapBase();

	int get_Type() const { return m_iType; };
	HRESULT get_Name(BSTR *Name);

protected:
	virtual HRESULT find_Object(int Type, BSTR Name, class bCapBase **pObj) { return E_NOTIMPL; };
	virtual HRESULT remove_Object(int Type, BSTR Name) { return E_NOTIMPL; };

private:
	friend  HRESULT put_Parent(class bCapBase *Me, class bCapBase *Parent);

	const int 		m_iType;
	BSTR	   		m_bstrName;
	class bCapBase *m_objParent;
};

#endif /* BCAPBASE_H_ */
