+
+template<> const wxTypeInfo* wxGetTypeInfo( void * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_VOID ) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( bool * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_BOOL , &wxToStringConverter<bool> , &wxFromStringConverter<bool>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( char * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_CHAR , &wxToStringConverter<char> , &wxFromStringConverter<char>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( unsigned char * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_UCHAR , &wxToStringConverter< unsigned char > , &wxFromStringConverter<unsigned char>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( int * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_CHAR , &wxToStringConverter<int> , &wxFromStringConverter<int>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( unsigned int * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_UCHAR , &wxToStringConverter<unsigned int> , &wxFromStringConverter<unsigned int>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( long * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_LONG , &wxToStringConverter<long> , &wxFromStringConverter<long>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( unsigned long * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_ULONG , &wxToStringConverter<unsigned long> , &wxFromStringConverter<unsigned long>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( float * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_FLOAT , &wxToStringConverter<float> , &wxFromStringConverter<float>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( double * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_DOUBLE , &wxToStringConverter<double> , &wxFromStringConverter<double>) ;
+ return &s_typeInfo ;
+}
+
+template<> const wxTypeInfo* wxGetTypeInfo( wxString * )
+{
+ static wxBuiltInTypeInfo s_typeInfo( wxT_STRING , &wxToStringConverter<wxString> , &wxFromStringConverter<wxString>) ;
+ return &s_typeInfo ;
+}
+
+// this are compiler induced specialization which are never used anywhere
+
+WX_ILLEGAL_TYPE_SPECIALIZATION( char const * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( char * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( unsigned char * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( int * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( bool * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( long * )
+WX_ILLEGAL_TYPE_SPECIALIZATION( wxString * )
+
+//
+
+// make wxWindowList known
+
+template<> const wxTypeInfo* wxGetTypeInfo( wxArrayString * )
+{
+ static wxCollectionTypeInfo s_typeInfo( (wxTypeInfo*) wxGetTypeInfo( (wxString *) NULL) ) ;
+ return &s_typeInfo ;
+}
+
+template<> void wxCollectionToVariantArray( wxArrayString const &theArray, wxxVariantArray &value)
+{
+ wxArrayCollectionToVariantArray( theArray , value ) ;
+}
+
+
+