.. index::
	single: Extension functions list; Extension functions list
	
=========================
Extension functions list
=========================

As we read before (:ref:`Use-Extension-Functions-Directly`) we can use this extension directly without depending on the functions of RCRegistry class.

.. index::
	pair: Etension functions list; Functions List

Functions List
==============

Here we are going to know the whole list of functions that could be called directly. We have to know that, they are not written in Ring, C++ or any other language syntax. They have been written in this way to clarify their actual components.

.. code-block:: none

	CRegistry* cregopenkey ( RootHkey index /*like HKEY_CURRENT_USER*/ , string keyname , \optional int flags, \optional boolean access64tree )

	void cregclosekey ( CRegistry* keyhandle )

	void cregdeletekey ( CRegistry* keyhandle )

	boolean cregkeyexist ( RootHkey index , string keyname ) 

	boolean cregsubkeyexist ( CRegistry* keyhandle , string subkeyname )

	void cregsetflags ( CRegistry* keyhandle , int flags )

	int cregentriescount ( CRegistry* keyhandle )

	int creggetflags ( CRegistry* keyhandle )

	void cregaccess64tree ( CRegistry* keyhandle , boolean access)

	boolean cregisvirtualized (CRegistry* keyhandle)
	int cregisvirtualized (CRegistry* key, bool detailed)

	int cregsubkeyscount ( CRegistry* keyhandle , int valueindex )

	String creggetsubkeyat ( CRegistry* keyhandle , int valueindex )

	boolean cregrefresh ( CRegistry *keyhandle )

	CRegEntry* creggetat ( CRegistry* keyhandle , int valueindex )

	string creggetname ( CRegEntry* entryhandle )

	void cregcopy ( CRegEntry* Entry , CRegistry* Dest )
	void cregcopy ( CRegistry* Source , String valuename, CRegistry* Dist )

	void cregrename ( CRegistry* keyhandle , string valuename , string newname)

	void cregsetvalue ( CRegistry* keyhandle , string valuename , string\int value )

	string creggetvalue ( CRegistry* keyhandle , string valuename )

	void cregdelete ( CRegistry* keyhandle , string valuename )

	void cregsetmulti ( CRegistry* keyhandle , string valuename , string value )

	void cregmultiremoveat ( CRegistry* keyhandle , string valuename , int index )

	void cregmultisetat ( CRegistry* keyhandle , string valuename , int index , string value)

	void cregmultiadd ( CRegistry* keyhandle , string valuename , string value)

	string cregmultigetat ( CRegistry* keyhandle , string valuename , int index )

	int cregmulticount ( CRegistry* keyhandle , string valuename )

	void cregmulticlear ( CRegistry* keyhandle  , string valuename )

	string creggetexpandsz( CRegistry* keyhandle , string valuename )

	void cregsetexpandsz( CRegistry* keyhandle , string valuename , string value )

	string creggetexpandedsz( CRegistry* keyhandle , string valuename )

	void cregsetqword( CRegistry* keyhandle , string valuename , number\string value )

	string creggetqword( CRegistry* keyhandle , string valuename )

	string creggetbinary( CRegistry* keyhandle , string valuename )

	void cregsetbinary( CRegistry* keyhandle , string valuename , string value )

	int cregbinarylength( CRegistry* keyhandle , string valuename )

	boolean cregisstring ( CRegistry* keyhandle , string valuename )

	boolean cregisdword ( CRegistry* keyhandle , string valuename )

	boolean cregismultistring ( CRegistry* keyhandle , string valuename )

	boolean cregisbinary ( CRegistry* keyhandle , string valuename )

	boolean cregisexpandsz ( CRegistry* keyhandle , string valuename )

	boolean cregisqword ( CRegistry* keyhandle , string valuename )

	boolean cregexists ( CRegistry* keyhandle , string valuename )

	int cregtype ( CRegistry* keyhandle , string valuename )

.. note::
   1. Each function or parameter preceded by star in its definition denotes that it is a handle/pointer.
   2. Each function has "CReg" prefix to show that these functions are normal extension of their original C++ class "CRegistry", and to preserve enough space for any one who could develop other extension which will deal directly with WIN APIs of Wndows Registry.