- while (i <= LOGIN_HELPER_LAST_DEFINED)
- {
- if (flags & i) n_reqs++;
- i <<= 1;
- }
-
- list = Accessibility_LoginHelper_DeviceReqList__alloc ();
- list->_length = n_reqs;
- list->_buffer = Accessibility_LoginHelper_DeviceReqList_allocbuf (list->_length);
-
- for (i = 0, j = 1; i < n_reqs; i++)
- {
- Accessibility_LoginHelper_DeviceReq req;
- while ((flags & j) == 0) {
- j <<= 1;
- }
- switch (j)
- {
- case LOGIN_HELPER_GUI_EVENTS:
- req = Accessibility_LoginHelper_GUI_EVENTS;
- break;
- case LOGIN_HELPER_CORE_KEYBOARD:
- req = Accessibility_LoginHelper_CORE_KEYBOARD;
- break;
- case LOGIN_HELPER_CORE_POINTER:
- req = Accessibility_LoginHelper_CORE_POINTER;
- break;
- case LOGIN_HELPER_EXT_INPUT:
- req = Accessibility_LoginHelper_EXT_INPUT;
- break;
- case LOGIN_HELPER_POST_WINDOWS:
- req = Accessibility_LoginHelper_POST_WINDOWS;
- break;
- case LOGIN_HELPER_AUDIO_OUT:
- req = Accessibility_LoginHelper_AUDIO_OUT;
- break;
- case LOGIN_HELPER_AUDIO_IN:
- req = Accessibility_LoginHelper_AUDIO_IN;
- break;
- case LOGIN_HELPER_NETWORK:
- req = Accessibility_LoginHelper_NETWORK;
- break;
- case LOGIN_HELPER_LOCALHOST:
- req = Accessibility_LoginHelper_LOCALHOST;
- break;
- case LOGIN_HELPER_SERIAL_OUT:
- req = Accessibility_LoginHelper_SERIAL_OUT;
- break;
- case LOGIN_HELPER_SERIAL_IN:
- req = Accessibility_LoginHelper_SERIAL_IN;
- break;
- default:
- req = 0;
- break;
- }
- list->_buffer[i] = req;
- j <<= 1;
- }
-
- return list;