| #include "VirtualTouchpadClient.h" | 
 | #include "dvr/virtual_touchpad_client.h" | 
 |  | 
 | struct DvrVirtualTouchpad {}; | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | namespace { | 
 | android::dvr::VirtualTouchpad* FromC(DvrVirtualTouchpad* client) { | 
 |   return reinterpret_cast<android::dvr::VirtualTouchpad*>(client); | 
 | } | 
 | }  // namespace | 
 |  | 
 | DvrVirtualTouchpad* dvrVirtualTouchpadCreate() { | 
 |   return reinterpret_cast<DvrVirtualTouchpad*>( | 
 |       android::dvr::VirtualTouchpadClient::Create().release()); | 
 | } | 
 |  | 
 | void dvrVirtualTouchpadDestroy(DvrVirtualTouchpad* client) { | 
 |   delete FromC(client); | 
 | } | 
 |  | 
 | int dvrVirtualTouchpadAttach(DvrVirtualTouchpad* client) { | 
 |   return FromC(client)->Attach(); | 
 | } | 
 |  | 
 | int dvrVirtualTouchpadDetach(DvrVirtualTouchpad* client) { | 
 |   return FromC(client)->Detach(); | 
 | } | 
 |  | 
 | int dvrVirtualTouchpadTouch(DvrVirtualTouchpad* client, int touchpad, float x, | 
 |                             float y, float pressure) { | 
 |   return FromC(client)->Touch(touchpad, x, y, pressure); | 
 | } | 
 |  | 
 | int dvrVirtualTouchpadButtonState(DvrVirtualTouchpad* client, int touchpad, | 
 |                                   int buttons) { | 
 |   return FromC(client)->ButtonState(touchpad, buttons); | 
 | } | 
 |  | 
 | #ifdef __cplusplus | 
 | }  // extern "C" | 
 | #endif |