{
	BaseDocument *doc = GetActiveDocument();
	if(!doc)  return FALSE;
	BaseObject *obj = doc->GetActiveObject();
	if(!obj)  return FALSE;


	AutoAlloc<Description> desc;
	if (!desc) return FALSE;
	if (!obj->GetDescription(desc, DESCFLAGS_DESC_0)) return FALSE;

	DescID dcid, groupid;
	void *handle = desc->BrowseInit();
	if (!handle) return FALSE;

	//We will store the description values in this variable
	GeData gd;
	const BaseContainer *objBc = NULL;
	while (desc->GetNext(handle, &objBc, dcid, groupid))
	{
		if (objBc)	{
			const String name = objBc->GetString(DESC_NAME);     //The text in the GUI for each Gizmo (like the .str file works in plugins)
			const String ID   = objBc->GetString(DESC_IDENT);    //The description's ID# expressed in text form
			GePrint(name + " " + ID);

			obj->GetParameter(DescID(dcid), gd, DESCFLAGS_GET_0); //Get all the description values and store them in variable "d"
		   
			//Now we need to check the "gd" variable for the specific type of data each description can store
			const Real rValue = gd.GetReal();
			const LONG lValue = gd.GetLong();
			const String sValue = gd.GetString();
			GePrint("RealValue: " +RealToString(rValue) + " , " + "LongValue: " +LongToString(rValue) + " , " + "StringValue: " +sValue);
		}
	}
	desc->BrowseFree(handle);   //Free the memory used by the Browse function
}