rendered paste body#ifndef INPUT_MANAGER_H#define INPUT_MANAGER_H#include <vector>#include <windows.h>typedef void ( *KeyHandler ) ( void );typedef void ( *MouseHandler ) ( int x, int y );class InputManager{ std::vector< int > m_pollKeys; std::vector< KeyHandler > m_downHandlers; std::vector< KeyHandler > m_upHandlers; std::vector< KeyHandler > m_pressedHandlers; MouseHandler m_mouseHandler; // Polls a vector of keys, removes depressed keys from the vector. void PollKeys( );public: InputManager( ); // Is called by the Windows message handler routine, adds pressed // keys to the vector. void HandleInput( WPARAM wParam ); void InstallKeyDown( int vk, KeyHandler handler ); void InstallKeyUp( int vk, KeyHandler handler ); void InstallKeyPressed( KeyHandler handler ); void InstallMouseHandler( MouseHandler handler ); // Used to remove remove the associated handler from the vector. void UninstallKeyDown( int vk ); void UninstallKeyUp( int vk ); void UninstallKeyPressed( int vk ); void UninstallMouseHandler( );};#endif// ------------------------#include "InputManager.h"void InputManager::HandleInput( WPARAM wParam ){ if ( m_downHandlers[wParam] != NULL ) { // Call the key-down handler. m_handlers[wParam]( ); // Set up the pressed key for polling. m_pollKeys }}void InputManager::PollKeys( ){ // Poll all pressed keys.}InputManager::InputManager( ){ for ( int i=0; i<0xFF; i++ ) { m_downHandlers.push_back( NULL ); m_upHandlers.push_back( NULL ); m_pressedHandlers.push_back( NULL ); }}void InputManager::InstallKeyDown( int vk, KeyHandler handler ){ m_downHandlers[vk] = handler;}void InputManager::InstallKeyUp( int vk, KeyHandler handler ){ m_upHandlers[vk] = handler;}void InputManager::InstallKeyPressed( int vk, KeyHandler handler ){ m_pressedHandlers[vk] = handler;}void InputManager::UninstallKeyDown( int vk ){ m_downHandlers[vk] = NULL;}void InputManager::UninstallKeyUp( int vk ){ m_upHandlers[vk] = NULL;}void InputManager::UninstallKeyPressed( int vk ){ m_pressedHandlers[vk] = NULL;}