//--------------------------------------------------------------------------
// VarSetInterface.idl
//
//
//
// (c) Copyright 1999, Mission Critical Software, Inc., All Rights Reserved
//
// Proprietary and confidential to Mission Critical Software, Inc.
//--------------------------------------------------------------------------

import "oaidl.idl";
import "ocidl.idl";
	[
		object,
#ifdef OFA
      uuid(6173AFF9-8FFA-4afa-81E8-64AAC99F549E),
#else
		uuid(C7C70F26-7E34-11D2-A1D6-00A0C9AFE114),
#endif
		dual,
		helpstring("IVarSet Interface"),
		pointer_default(unique)
	]
	interface IVarSet : IDispatch
	{
      [propget, helpstring("Returns total number of items in the set.")]
		HRESULT Count([out, retval] long* count);
      [propget, helpstring("Returns the number of immediate children for a node.")]
      HRESULT NumChildren([in] BSTR parentKey,[out,retval] long*count);
      
      HRESULT get([in] BSTR property, [out, retval] VARIANT * value );
      HRESULT put([in] BSTR property, [in] VARIANT value );

      HRESULT putObject([in] BSTR property, [in] VARIANT value);

      [propget, restricted, id(DISPID_NEWENUM)]   // Must be propget.
		HRESULT _NewEnum([out, retval] IUnknown** retval);
		
      [propget, id(1), helpstring("property Indexed (sorted)")] 
      HRESULT Indexed([out, retval] BOOL *pVal);
		[propput, id(1), helpstring("property Indexed (sorted)")] 
      HRESULT Indexed([in] BOOL newVal);
		
      HRESULT getItems([in] BSTR basepoint,
                       [in] BSTR startAfter,
                       [in] BOOL bRecursive, 
                       [in] ULONG bSize, 
                       [out] SAFEARRAY(BSTR) * keys,
                       [out] SAFEARRAY(VARIANT) * values,
                       [out] LONG * nReturned);

      HRESULT getItems2([in] VARIANT basepoint,
                       [in] VARIANT startAfter,
                       [in] VARIANT bRecursive, 
                       [in] VARIANT bSize, 
                       [out] VARIANT * keys,
                       [out] VARIANT * values,
                       [out] VARIANT * nReturned);

                                                                    
      [helpstring("Removes all definitions from the collection.")]
      HRESULT Clear();

      [propget, helpstring("property - specifies whether the keys are case-sensitive.")]
      HRESULT CaseSensitive([out,retval] BOOL * bIsCaseSensitive);

      [propput, helpstring("property - specifies whether the keys are case-sensitive.")]
      HRESULT CaseSensitive([in] BOOL bNewVal );

      [propget]
      HRESULT AllowRehashing([out,retval] BOOL * bAllowResizing);

      [propput]
      HRESULT AllowRehashing([in] BOOL bNewVal );

      HRESULT DumpToFile( [in] BSTR filename);

      HRESULT ImportSubTree([in] BSTR key, [in] IVarSet * pVarSet);

      HRESULT getReference( [in] BSTR key,[out,retval] IVarSet ** pVarSet);     

      [propget]
      HRESULT Restrictions([out,retval] DWORD * restrictions);

      [propput]
      HRESULT Restrictions([in] DWORD newRestrictions);
	};