[cdev] ������ 4, 135��

Grigoriy A. Sitkarev sitkarev �� komitex.ru
�� ��� 30 01:20:01 MSK 2010


�������.

����� ������� �������, ������������ ���-�� ������ � ������� - ��������� 
�� ���� ������. ��� ����� ������������ ������� ����� ���� ���� ������ - 
�� ����������, ������� �������� � �������. ��� ����� ������������ ����� 
�������, ��������� ������� ������������� ���� parray_callback_t (��� �� 
���������� ��� �������� � ���������) � ����� ������������ 
parray_foreach() �� ������. ��������� opaque ��������� �� ������������ 
������, ������� ������ ����� ���� �������� � callback (������� 
������������) ��� ��������� ��������. �.�. ������� parray_foreach() 
������� ��� �������� �������, ������������ ����� ��������������� �� 
����� ������� � ��� ��� ����� ����� ���������, ������  �� ������� ��������.

��������, ������������ ����� �������� ���-��:

static int
print_user_data(void *data, void *opaque)
{
	struct user_data *up = (struct user_data *) data;
	float *flp = (float *) opaque;

	printf("%f %d\n", *flp, up->age)

	return 0;
}

������ ���-�� � ������ �����:

{
	struct parray *pa;
	float value;
	...
	value = 10.0;
	parray_foreach(pa, print_user_data, &value);
	...
}

����� � opaque �� �������� ����� ����������, � ������� �� ����� ������ 
�������� ������ ������ print_user_data - ��� ��� �������. � ��� ��� 
����� ���� ����� ���� ������, � ���� ���� ���� ��� ��� ������, 
���������������� ������� ���� ������ �����������.

�� ����������, ��� �ӣ ����� �� ����. � ����� �������� ������, ģ������ 
callback, �������� ��� �� ������, ���� 0 �� ����������� ������ ����� 
���������� ����.

--
�.�.

������ ��������� �����:
> �������� �������������, � ��������� ��� ��� ��� ������ ������ ��� ������� � ������ 4(������ ����������)
> 
> /* Traverse pointer array calling callback function for each element. */
> void *parray_foreach(struct parray *pa, parray_callback_t callback, void *opaque);
.





��������� ���������� � ������ �������� cdev