Changeset 20304

Show
Ignore:
Timestamp:
06/15/07 10:07:36 (1 year ago)
Author:
aronb
Message:

Define all possible input base types in InputBaseTypes?.h. When creating a new
device driver you must derive from one of these classes. This was added in an
attempt to stop future bugs similar to the one fixed in r203003.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • juggler/branches/2.0/modules/gadgeteer/drivers/3Dconnexion/SpaceBall/puck_device.h

    r19046 r20304  
    3636 
    3737#include <gadget/gadgetParam.h> 
     38#include <gadget/Type/InputBaseTypes.h> 
     39#include <gadget/Type/Input.h> 
     40#include <gadget/Type/Digital.h> 
    3841#include <gadget/Type/Analog.h> 
    39 #include <gadget/Type/Digital.h> 
    4042#include <gadget/InputManager.h> 
    41 #include <gadget/Type/Input.h> 
    42 #include <gadget/Type/InputMixer.h> 
    4343 
    4444/* 
     
    804804/** A driver for puck-like devices 
    805805*/ 
    806 class PuckDevice : public gadget::InputMixer<gadget::InputMixer 
    807                          <gadget::Input,gadget::Digital>,gadget::Analog> 
     806class PuckDevice : public gadget::input_digital_analog_t 
    808807{ 
    809808  public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/5DT/DataGlove/DataGlove.cpp

    r16524 r20304  
    4040#include <gadget/Type/DeviceConstructor.h> 
    4141#include <gadget/gadgetParam.h> 
     42#include <gadget/Util/Debug.h> 
    4243#include <drivers/5DT/DataGlove/DataGloveStandalone.h> /* standalone dataglove driver */ 
    4344#include <drivers/5DT/DataGlove/DataGlove.h> /* Gadgeteer dataglove driver */ 
  • juggler/branches/2.0/modules/gadgeteer/drivers/5DT/DataGlove/DataGlove.h

    r19463 r20304  
    3838#include <vector> 
    3939 
     40#include <gadget/Type/InputBaseTypes.h> 
    4041#include <gadget/Type/Input.h> 
    41 #include <gadget/Type/Glove.h> 
    4242#include <gadget/Type/Analog.h> 
    43 #include <gadget/Type/Digital.h> 
    44 #include <gadget/Type/InputMixer.h> 
    4543#include <drivers/5DT/DataGlove/DataGloveStandalone.h> 
    4644 
     
    6159 
    6260//class DataGlove : virtual public Input, public Glove, public Analog 
    63 class DataGlove : public InputMixer<Input,Analog> 
     61class DataGlove : public input_analog_t 
    6462{ 
    6563public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/ART/DTrack/DTrack.h

    r18145 r20304  
    3131 
    3232#include <gadget/Devices/DriverConfig.h> 
    33 #include <gadget/Type/Input.h> 
    34 #include <gadget/Type/Position.h> 
    35 #include <gadget/Type/Digital.h> 
    36 #include <gadget/Type/Analog.h> 
    37 #include <gadget/Type/InputMixer.h> 
     33#include <gadget/Type/InputBaseTyped.h> 
    3834 
    3935#include "DTrackStandalone.h" 
     
    4339{ 
    4440 
    45 class DTrack : public InputMixer<InputMixer<InputMixer<Input, Digital>, Analog>, Position> 
     41class DTrack : public input_digital_analog_position_t; 
    4642{ 
    4743public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Ascension/Flock/Flock.h

    r17427 r20304  
    3636#include <gadget/Devices/DriverConfig.h> 
    3737#include <vpr/Thread/Thread.h> 
     38#include <gadget/Type/InputBaseTypes.h> 
    3839#include <gadget/Type/Input.h> 
    3940#include <gadget/Type/Position.h> 
    40 #include <gadget/Type/InputMixer.h> 
    4141#include <drivers/Ascension/Flock/FlockStandalone.h> 
    4242 
     
    6767 */ 
    6868//class Flock : public Input, public Position 
    69 class Flock : public InputMixer<Input,Position> 
     69class Flock 
     70   : public input_position_t 
    7071{ 
    7172public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Ascension/MotionStar/MotionStar.h

    r16524 r20304  
    3939#include <vpr/Thread/Thread.h> 
    4040 
     41#include <gadget/Type/InputBaseTypes.h> 
    4142#include <gadget/Type/Input.h> 
    4243#include <gadget/Type/Position.h> 
    43 #include <gadget/Type/InputMixer.h> 
    4444#include <drivers/Ascension/MotionStar/MotionStarStandalone.h> 
    4545 
     
    7272 * @see Position 
    7373 */ 
    74 class MotionStar : public InputMixer<Input,Position> 
     74class MotionStar 
     75   : public input_position_t 
    7576{ 
    7677public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Ascension/Wanda/Wanda.h

    r18697 r20304  
    3939#include <vpr/vprDomain.h> 
    4040 
     41#include <gadget/Type/InputBaseTypes.h> 
    4142#include <gadget/Type/Input.h> 
     43#include <gadget/Type/Digital.h> 
    4244#include <gadget/Type/Analog.h> 
    43 #include <gadget/Type/Digital.h> 
    44 #include <gadget/Type/InputMixer.h> 
    4545#include <drivers/Ascension/Wanda/WandaStandalone.h> 
    4646 
     
    5252 * Gadgeteer wrapper around wanda::WandaStandalone driver. 
    5353 */ 
    54 class Wanda : public InputMixer<Input, InputMixer<Digital, Analog> > 
     54class Wanda 
     55   : public input_digital_analog_t 
    5556{ 
    5657public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Elexol/Ether24/Ether24.h

    r18654 r20304  
    3737#include <vector> 
    3838#include <vpr/Thread/Thread.h> 
     39#include <gadget/Type/InputBaseTypes.h> 
    3940#include <gadget/Type/Input.h> 
    4041#include <gadget/Type/Digital.h> 
    41 #include <gadget/Type/InputMixer.h> 
    4242#include <drivers/Elexol/Ether24/Ether24Standalone.h> 
    4343 
     
    5050 */ 
    5151class Ether24 
    52    : public InputMixer<Input, Digital> 
     52   : public input_digital_t 
    5353{ 
    5454public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Fakespace/PinchGlove/PinchGlove.h

    r16524 r20304  
    4141#include <drivers/Fakespace/PinchGlove/PinchGloveStandalone.h> 
    4242 
     43#include <gadget/Type/InputBaseTypes.h> 
     44#include <gadget/Type/Input.h> 
     45#include <gadget/Type/Glove.h> 
    4346#include <gadget/Type/Digital.h> 
    44 #include <gadget/Type/Input.h> 
    45 #include <gadget/Type/InputMixer.h> 
    46 #include <gadget/Type/Glove.h> 
    4747 
    4848namespace gadget 
     
    5252 * Fakespace PinchGlove device. 
    5353 */ 
    54 class PinchGlove : public InputMixer<InputMixer<Input, Glove>, Digital> 
     54class PinchGlove 
     55   : public input_glove_digital_t 
    5556{ 
    5657public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Immersion/IBox/IBox.h

    r16524 r20304  
    4242#include <gadget/Devices/DriverConfig.h> 
    4343#include <vector> 
     44#include <gadget/Type/InputBaseTypes.h> 
    4445#include <gadget/Type/Input.h> 
    4546#include <gadget/Type/Digital.h> 
    4647#include <gadget/Type/Analog.h> 
    47 #include <gadget/Type/InputMixer.h> 
    4848#include <drivers/Immersion/IBox/IBoxStandalone.h> 
    4949 
     
    6060 */ 
    6161//class IBox : public Input, public Digital, public Analog 
    62 class IBox : public InputMixer<InputMixer<Input,Digital>,Analog> 
     62class IBox 
     63   : public input_digital_analog_t 
    6364{ 
    6465protected: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Intersense/IS900/Intersense.h

    r18786 r20304  
    4141#include <vector> 
    4242#include <vpr/Thread/Thread.h> 
     43#include <gadget/Type/InputBaseTypes.h> 
    4344#include <gadget/Type/Input.h> 
    44 #include <gadget/Type/Position.h> 
    4545#include <gadget/Type/Digital.h> 
    4646#include <gadget/Type/Analog.h> 
    47 #include <gadget/Type/InputMixer.h> 
     47#include <gadget/Type/Position.h> 
    4848#include <drivers/Intersense/IS900/IntersenseStandalone.h> 
    4949 
     
    110110 */ 
    111111//class Intersense : public Input, public Position, public Digital, public Analog 
    112 class Intersense : 
    113    public InputMixer<InputMixer<InputMixer<Input, Digital>, Analog>, Position> 
     112class Intersense 
     113   : public input_digital_analog_position_t 
    114114{ 
    115115protected: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Intersense/IntersenseAPI/IntersenseAPI.h

    r17118 r20304  
    3737#include <vector> 
    3838#include <vpr/Thread/Thread.h> 
     39#include <gadget/Type/InputBaseTypes.h> 
    3940#include <gadget/Type/Input.h> 
    40 #include <gadget/Type/Position.h> 
    4141#include <gadget/Type/Digital.h> 
    4242#include <gadget/Type/Analog.h> 
    43 #include <gadget/Type/InputMixer.h> 
     43#include <gadget/Type/Position.h> 
    4444#include <drivers/Intersense/IntersenseAPI/IntersenseAPIStandalone.h> 
    4545 
     
    7575 */ 
    7676class IntersenseAPI 
    77    : public InputMixer<InputMixer<InputMixer<Input, Digital>, Analog>, Position> 
     77   : public input_digital_analog_position_t 
    7878{ 
    7979public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Logitech/ThreeDMouse/logiclass.h

    r16524 r20304  
    5252 
    5353#include <gadget/Devices/DriverConfig.h> 
     54#include <gadget/Type/InputBaseTypes.h> 
    5455#include <gadget/Type/Input.h> 
    5556#include <gadget/Type/Position.h> 
    56 #include <gadget/Type/InputMixer.h> 
    5757#include <gmtl/Vec.h> 
    5858#include <vector> 
     
    9191*/ 
    9292//class ThreeDMouse : public gadget::Input, public gadget::Position 
    93 class ThreeDMouse : public InputMixer<Input,Position> 
     93class ThreeDMouse 
     94   : public input_position_t 
    9495{ 
    9596public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Microsoft/DirectXJoystick/DirectXJoystick.h

    r16712 r20304  
    3939#include <utility> 
    4040 
     41#include <gadget/Type/InputBaseTypes.h> 
    4142#include <gadget/Type/Input.h> 
    4243#include <gadget/Type/Digital.h> 
    4344#include <gadget/Type/Analog.h> 
    44 #include <gadget/Type/InputMixer.h> 
    4545#include <drivers/Microsoft/DirectXJoystick/DirectXJoystickStandalone.h> 
    4646 
     
    5454 * @see Digital, Analog 
    5555 */ 
    56 class DirectXJoystick : public InputMixer<InputMixer<Input, Digital>, Analog> 
     56class DirectXJoystick 
     57   : public input_digital_analog_t 
    5758{ 
    5859public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Microsoft/SpeechRecognition/MSFTSpeechRecogDigital.h

    r18442 r20304  
    4444 
    4545#include <vpr/Thread/Thread.h> 
     46#include <gadget/Type/InputBaseTypes.h> 
    4647#include <gadget/Type/Input.h> 
    4748#include <gadget/Type/Command.h> 
    48 #include <gadget/Type/InputMixer.h> 
    4949 
    5050#include <drivers/Microsoft/SpeechRecognition/MSFTSpeechServerManager.h> 
     
    5959 
    6060class MSFTSpeechRecogDigital 
    61    : public gadget::InputMixer<gadget::Input, gadget::Command> 
     61   : public input_command_t 
    6262{ 
    6363public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Microsoft/SpeechRecognition/MSFTSpeechRecogString.h

    r18442 r20304  
    4343 
    4444#include <vpr/Thread/Thread.h> 
     45#include <gadget/Type/InputBaseTypes.h> 
    4546#include <gadget/Type/Input.h> 
    4647#include <gadget/Type/String.h> 
    47 #include <gadget/Type/InputMixer.h> 
    4848 
    4949#include <drivers/Microsoft/SpeechRecognition/MSFTSpeechServerManager.h> 
     
    5858 
    5959class MSFTSpeechRecogString 
    60    : public gadget::InputMixer<gadget::Input, gadget::String> 
     60   : public input_string_t 
    6161{ 
    6262public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Open/DTK/DTK.h

    r16524 r20304  
    3535 
    3636#include <gadget/Devices/DriverConfig.h> 
     37#include <gadget/Type/InputBaseTypes.h> 
     38#include <gadget/Type/Input.h> 
    3739#include <gadget/Type/Digital.h> 
    3840#include <gadget/Type/Analog.h> 
    3941#include <gadget/Type/Position.h> 
    40 #include <gadget/Type/InputMixer.h> 
    4142#include <drivers/Open/DTK/DTKMemorySegment.h> 
    4243 
     
    5253//class GADGET_CLASS_API DTK : public Input, public Position, public Digital, 
    5354//                           public Analog 
    54 class GADGET_CLASS_API DTK : public InputMixer<InputMixer<InputMixer<Input,Digital>,Analog>,Position> 
     55class DTK 
     56   : public input_digital_analog_position_t 
    5557{ 
    5658public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Open/LinuxJoydev/LinuxJoydev.h

    r16929 r20304  
    3737#include <vector> 
    3838#include <utility> 
     39#include <gadget/Type/InputBaseTypes.h> 
    3940#include <gadget/Type/Input.h> 
    4041#include <gadget/Type/Digital.h> 
    4142#include <gadget/Type/Analog.h> 
    42 #include <gadget/Type/InputMixer.h> 
    43  
    4443 
    4544namespace gadget 
     
    5150 * @see gadget:;Digital, gadget:;Analog 
    5251 */ 
    53 class LinuxJoydev : public InputMixer<InputMixer<Input,Digital>,Analog> 
     52class LinuxJoydev 
     53   : public input_digital_analog_t 
    5454{ 
    5555public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Open/Trackd/TrackdController.h

    r16524 r20304  
    3636#include <gadget/Devices/DriverConfig.h> 
    3737#include <vector> 
     38#include <gadget/Type/InputBaseTypes.h> 
    3839#include <gadget/Type/Input.h> 
    3940#include <gadget/Type/Digital.h> 
    4041#include <gadget/Type/Analog.h> 
    41 #include <gadget/Type/InputMixer.h> 
    4242#include <drivers/Open/Trackd/TrackdControllerStandalone.h> 
    4343 
     
    5858 */ 
    5959//class TrackdController : public Input, public Digital, public Analog 
    60 class TrackdController : public InputMixer<InputMixer<Input,Digital>,Analog> 
     60class TrackdController 
     61   : public input_digital_analog_t 
    6162{ 
    6263public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Open/Trackd/TrackdSensor.h

    r16524 r20304  
    3636#include <gadget/Devices/DriverConfig.h> 
    3737#include <vector> 
     38#include <gadget/Type/InputBaseTypes.h> 
    3839#include <gadget/Type/Input.h> 
    3940#include <gadget/Type/Position.h> 
    40 #include <gadget/Type/InputMixer.h> 
    4141#include <drivers/Open/Trackd/TrackdSensorStandalone.h> 
    4242 
     
    5757 */ 
    5858//class TrackdSensor : public Input, public Position 
    59 class TrackdSensor : public InputMixer<Input,Position> 
     59class TrackdSensor 
     60   : public input_position_t 
    6061{ 
    6162public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Open/VRPN/Vrpn.h

    r20303 r20304  
    5353 
    5454#include <vpr/Sync/Mutex.h> 
     55#include <gadget/Type/InputBaseTypes.h> 
    5556#include <gadget/Type/Input.h> 
    56 #include <gadget/Type/Position.h> 
    5757#include <gadget/Type/Digital.h> 
    5858#include <gadget/Type/Analog.h> 
    59 #include <gadget/Type/InputMixer.h> 
     59#include <gadget/Type/Position.h> 
    6060 
    6161#include <gmtl/Matrix.h> 
     
    8888 */ 
    8989class Vrpn 
    90    : public InputMixer<InputMixer<InputMixer<Input, Digital>, Analog>, 
    91                        Position> 
     90   : public input_digital_analog_position_t 
    9291{ 
    9392public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/Polhemus/Fastrak/Fastrak.h

    r16524 r20304  
    5252#include <jccl/Config/ConfigElementPtr.h> 
    5353 
     54#include <gadget/Type/InputBaseTypes.h> 
    5455#include <gadget/Type/Input.h> 
    5556#include <gadget/Type/Digital.h> 
    5657#include <gadget/Type/Position.h> 
    57 #include <gadget/Type/InputMixer.h> 
    5858 
    5959#include <drivers/Polhemus/Fastrak/FastrakStandalone.h> 
     
    6363{ 
    6464 
    65 class Fastrak : public InputMixer<InputMixer<Input,Digital>, Position> 
     65class Fastrak 
     66   : public input_digital_position_t 
    6667{ 
    6768public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/USDigital/SerialEncoder/SerialEncoder.h

    r16524 r20304  
    3838#include <vpr/Sync/Guard.h> 
    3939 
     40#include <gadget/Type/InputBaseTypes.h> 
    4041#include <gadget/Type/Input.h> 
    4142#include <gadget/Type/Position.h> 
     
    4445 
    4546#include <gadget/Type/PositionInterface.h> 
    46 #include <gadget/Type/InputMixer.h> 
    4747 
    4848#include "SerialEncoderStandalone.h" 
     
    5050 
    5151 
    52 class SerialEncoder:public gadget::InputMixer<gadget::Input,gadget::Position> 
     52class SerialEncoder 
     53   : public gadget::input_position_t 
    5354{ 
    5455public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/VRCO/TrackdAPI/TrackdAPIController.h

    r18744 r20304  
    3636#include <gadget/Devices/DriverConfig.h> 
    3737#include <vector> 
     38#include <gadget/Type/InputBaseTypes.h> 
    3839#include <gadget/Type/Input.h> 
    3940#include <gadget/Type/Digital.h> 
    4041#include <gadget/Type/Analog.h> 
    41 #include <gadget/Devices/Sim/SimInput.h> 
    42 #include <gadget/Type/InputMixer.h> 
    4342 
    4443#define TRACKD_DLL_EXPORTS 0 
     
    6160 * @see gadget::Analog 
    6261 */ 
    63 class TrackdAPIController : public InputMixer<InputMixer<Input,Digital>,Analog> 
     62class TrackdAPIController 
     63   : public input_digital_analog_t 
    6464{ 
    6565public: 
  • juggler/branches/2.0/modules/gadgeteer/drivers/VRCO/TrackdAPI/TrackdAPISensor.h

    r18744 r20304  
    3636#include <gadget/Devices/DriverConfig.h> 
    3737#include <vector> 
     38#include <gadget/Type/InputBaseTypes.h> 
    3839#include <gadget/Type/Input.h> 
    3940#include <gadget/Type/Position.h> 
    40 #include <gadget/Type/InputMixer.h> 
    4141 
    4242#define TRACKD_DLL_EXPORTS 0 
     
    5858 * @see gadget::Position 
    5959 */ 
    60 class TrackdAPISensor : public InputMixer<Input,Position> 
     60class TrackdAPISensor 
     61   : public input_position_t 
    6162{ 
    6263public: 
  • juggler/branches/2.0/modules/gadgeteer/gadget/Type/BaseTypeFactory.cpp

    r16524 r20304  
    4747#include <gadget/Type/String.h> 
    4848#include <gadget/Type/InputMixer.h> 
    49 //#include <gadget/Type/BaseTypes.h> 
    5049#include <gadget/Util/Debug.h> 
     50#include <gadget/Type/InputBaseTypes.h> 
    5151 
     52 
     53#define REGISTER_CONSTRUCTOR_TYPE(INPUT_TYPE) \ 
     54   BaseTypeConstructor< INPUT_TYPE::MixedPlaceholderType >* con_ ## INPUT_TYPE  \ 
     55         = new BaseTypeConstructor< INPUT_TYPE::MixedPlaceholderType >;         \ 
     56   if (NULL == con_ ## INPUT_TYPE)                                              \ 
     57   {                                                                            \ 
     58      vprDEBUG(vprDBG_ALL,vprDBG_CRITICAL_LVL)                                  \ 
     59         << clrOutBOLD(clrRED,"ERROR:") << " Failed to load a known type "      \ 
     60         << #INPUT_TYPE << std::endl << vprDEBUG_FLUSH;                         \ 
     61   } 
    5262 
    5363namespace gadget 
     
    6979   // Platform-independent devices. 
    7080 
    71    // Input Digital 
    72    BaseTypeConstructor< InputMixer<Input,Digital>::MixedPlaceholderType >* input_digital 
    73          = new BaseTypeConstructor< InputMixer<Input,Digital>::MixedPlaceholderType >; 
    74  
    75    // Input Analog 
    76    BaseTypeConstructor< InputMixer<Input,Analog>::MixedPlaceholderType >* input_analog 
    77          = new BaseTypeConstructor< InputMixer<Input,Analog>::MixedPlaceholderType >; 
    78  
    79    // Input Position 
    80    BaseTypeConstructor< InputMixer<Input,Position>::MixedPlaceholderType >* input_position 
    81          = new BaseTypeConstructor< InputMixer<Input,Position>::MixedPlaceholderType >; 
    82  
    83    // Input Digital Analog 
    84    // Input Analog Digital 
    85    BaseTypeConstructor< InputMixer< InputMixer<Input,Digital> , Analog>::MixedPlaceholderType >* input_digital_analog 
    86          = new BaseTypeConstructor< InputMixer< InputMixer<Input,Digital> , Analog>::MixedPlaceholderType >; 
    87  
    88    // Input Digital Position 
    89    // Input Position Digital 
    90    BaseTypeConstructor< InputMixer< InputMixer<Input,Digital> , Position>::MixedPlaceholderType >* input_digital_position 
    91          = new BaseTypeConstructor< InputMixer< InputMixer<Input,Digital> , Position>::MixedPlaceholderType >; 
    92  
    93    // Input Analog Position 
    94    // Input Position Analog 
    95    BaseTypeConstructor< InputMixer< InputMixer<Input,Analog> , Position>::MixedPlaceholderType >* input_analog_position 
    96          = new BaseTypeConstructor< InputMixer< InputMixer<Input,Analog> , Position>::MixedPlaceholderType >; 
    97  
    98    // Input Digital Analog Position 
    99    BaseTypeConstructor< InputMixer< InputMixer< InputMixer<Input,Digital> , Analog> , Position>::MixedPlaceholderType >* input_digital_analog_position 
    100          = new BaseTypeConstructor< InputMixer< InputMixer< InputMixer<Input,Digital> , Analog> , Position>::MixedPlaceholderType >; 
    101  
    102    // SimInput Input Position 
    103    BaseTypeConstructor< InputMixer< InputMixer<SimInput,Input> , Position>::MixedPlaceholderType >* siminput_input_position 
    104          = new BaseTypeConstructor< InputMixer< InputMixer<SimInput,Input> , Position>::MixedPlaceholderType >; 
    105  
    106    // SimInput Input Digital 
    107    BaseTypeConstructor< InputMixer< InputMixer<SimInput,Input> , Digital>::MixedPlaceholderType >* siminput_input_digital 
    108          = new BaseTypeConstructor< InputMixer< InputMixer<SimInput,Input> , Digital>::MixedPlaceholderType >; 
    109  
    110    // SimInput Input Analog 
    111    BaseTypeConstructor< InputMixer< InputMixer<SimInput,Input> , Analog>::MixedPlaceholderType >* siminput_input_analog 
    112          = new BaseTypeConstructor< InputMixer< InputMixer<SimInput,Input> , Analog>::MixedPlaceholderType >; 
    113  
    114    // Input KeyboardMouse 
    115    BaseTypeConstructor< InputMixer<Input,KeyboardMouse>::MixedPlaceholderType >* input_keyboard 
    116          = new BaseTypeConstructor< InputMixer<Input,KeyboardMouse>::MixedPlaceholderType >; 
    117  
    118    // Input String 
    119    BaseTypeConstructor< InputMixer<Input, String>::MixedPlaceholderType >* input_string 
    120          = new BaseTypeConstructor< InputMixer<Input, String>::MixedPlaceholderType >; 
    121  
    122    // Input Command 
    123    BaseTypeConstructor< InputMixer<Input, Command>::MixedPlaceholderType >* input_command 
    124          = new BaseTypeConstructor< InputMixer<Input, Command>::MixedPlaceholderType >; 
    125  
    126    // Input Glove 
    127    BaseTypeConstructor< InputMixer<Input,Glove>::MixedPlaceholderType >* input_glove 
    128          = new BaseTypeConstructor< InputMixer<Input,Glove>::MixedPlaceholderType >; 
    129  
    130    // Input Glove Digital 
    131    BaseTypeConstructor< InputMixer< InputMixer<Input, Glove> , Digital>::MixedPlaceholderType >* input_glove_digital 
    132          = new BaseTypeConstructor< InputMixer< InputMixer<Input, Glove> , Digital>::MixedPlaceholderType >; 
    133  
    134    if( (NULL == input_digital) || 
    135        (NULL == input_analog) || 
    136        (NULL == input_position) || 
    137        (NULL == input_digital_analog) || 
    138        (NULL == input_digital_position) || 
    139        (NULL == input_analog_position) || 
    140        (NULL == input_digital_analog_position) || 
    141        (NULL == siminput_input_position) || 
    142        (NULL == siminput_input_digital) || 
    143        (NULL == siminput_input_analog) || 
    144        (NULL == input_keyboard) || 
    145        (NULL == input_string) || 
    146        (NULL == input_command) || 
    147        (NULL == input_glove) || 
    148        (NULL == input_glove_digital) ) 
    149    { 
    150       vprDEBUG(vprDBG_ALL,vprDBG_CRITICAL_LVL) 
    151          << clrOutBOLD(clrRED,"ERROR:") << " Failed to load a known device\n" 
    152          << vprDEBUG_FLUSH; 
    153    } 
     81   REGISTER_CONSTRUCTOR_TYPE(input_digital_t); 
     82   REGISTER_CONSTRUCTOR_TYPE(input_analog_t); 
     83   REGISTER_CONSTRUCTOR_TYPE(input_position_t); 
     84   REGISTER_CONSTRUCTOR_TYPE(input_keyboard_t); 
     85   REGISTER_CONSTRUCTOR_TYPE(input_string_t); 
     86   REGISTER_CONSTRUCTOR_TYPE(input_command_t); 
     87   REGISTER_CONSTRUCTOR_TYPE(input_glove_t); 
     88   REGISTER_CONSTRUCTOR_TYPE(input_digital_analog_t); 
     89   REGISTER_CONSTRUCTOR_TYPE(input_digital_position_t); 
     90   REGISTER_CONSTRUCTOR_TYPE(input_analog_position_t); 
     91   REGISTER_CONSTRUCTOR_TYPE(input_glove_digital_t); 
     92   REGISTER_CONSTRUCTOR_TYPE(siminput_input_position); 
     93   REGISTER_CONSTRUCTOR_TYPE(siminput_input_digital); 
     94   REGISTER_CONSTRUCTOR_TYPE(siminput_input_analog); 
     95   REGISTER_CONSTRUCTOR_TYPE(input_digital_analog_position_t); 
    15496} 
    15597