special cases and other things in wxPython, and since I plan on making several more, I've decided to put the SWIG sources in wxPython's CVS instead of relying on maintaining patches. This effectivly becomes a fork of an obsolete version of SWIG, :-( but since SWIG 1.3 still doesn't have some things I rely on in 1.1, not to mention that my custom patches would all have to be redone, I felt that this is the easier road to take. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			173 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /* swigptr.cfg
 | |
|  * $Header$
 | |
|  *
 | |
|  * This file contains two functions :
 | |
|  *
 | |
|  *       void  _swig_make_hex(char *_c, void *_ptr, char *type)
 | |
|  *       char *_swig_get_hex(char *_c, void **ptr, char *type)
 | |
|  *
 | |
|  * These are used to convert pointers to and from pointer strings
 | |
|  * and to perform type checking.
 | |
|  *
 | |
|  * You can remap these functions by making a file called "swigptr.cfg" in
 | |
|  * your the same directory as the interface file you are wrapping.
 | |
|  *
 | |
|  * IMPORTANT !!! the function _swig_get_hex returns a non-null char pointer
 | |
|  * in the event of a type error (this is used to generate an error message).
 | |
|  * If a type is successfully parsed, a NULL pointer is returned.
 | |
|  *
 | |
|  * $Log$
 | |
|  * Revision 1.1  2002/04/29 19:56:50  RD
 | |
|  * Since I have made several changes to SWIG over the years to accomodate
 | |
|  * special cases and other things in wxPython, and since I plan on making
 | |
|  * several more, I've decided to put the SWIG sources in wxPython's CVS
 | |
|  * instead of relying on maintaining patches.  This effectivly becomes a
 | |
|  * fork of an obsolete version of SWIG, :-( but since SWIG 1.3 still
 | |
|  * doesn't have some things I rely on in 1.1, not to mention that my
 | |
|  * custom patches would all have to be redone, I felt that this is the
 | |
|  * easier road to take.
 | |
|  *
 | |
|  * Revision 1.1.1.1  1999/02/28 02:00:53  beazley
 | |
|  * Swig1.1
 | |
|  *
 | |
|  * Revision 1.5  1996/08/01 16:28:56  dmb
 | |
|  * Took out unused "dt" variable.
 | |
|  *
 | |
|  * Revision 1.4  1996/07/23 14:38:42  dmb
 | |
|  * Minor change to handling of NULL pointers.
 | |
|  *
 | |
|  * Revision 1.3  1996/07/17 15:26:08  dmb
 | |
|  * Made a minor bug fix so pointers of form _0_Type could be used
 | |
|  * (as described in the manual).   Disable by compiling with -DNO_ZERO.
 | |
|  *
 | |
|  * Revision 1.2  1996/06/10 23:42:10  beazley
 | |
|  * Added const qualifier.
 | |
|  *
 | |
| # Revision 1.1  1996/05/22  17:17:47  beazley
 | |
| # Initial revision
 | |
| #
 | |
|  */
 | |
| 
 | |
| static void 
 | |
| _swig_make_hex (char *_c, const void *_ptr, char *type)
 | |
| {
 | |
|   static char _hex[16] =
 | |
|   {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
 | |
|    'a', 'b', 'c', 'd', 'e', 'f'};
 | |
|   unsigned long _p, _s;
 | |
|   char _result[128], *_r;
 | |
|   _r = _result;
 | |
|   _p = (unsigned long) _ptr;
 | |
|   if (_p > 0)
 | |
|     {
 | |
|       while (_p > 0)
 | |
| 	{
 | |
| 	  _s = _p & 0xf;
 | |
| 	  *(_r++) = _hex[_s];
 | |
| 	  _p = _p >> 4;
 | |
| 	}
 | |
|       *_r = '_';
 | |
|       while (_r >= _result)
 | |
| 	*(_c++) = *(_r--);
 | |
|     }
 | |
|   else
 | |
|     {
 | |
|       strcpy (_c, "NULL");
 | |
|     }
 | |
|   if (_ptr)
 | |
|     strcpy (_c, type);
 | |
| }
 | |
| 
 | |
| /* A forward reference; */
 | |
| 
 | |
| static char ***swig_ptr_derived = 0;
 | |
| 
 | |
| static char *
 | |
| _swig_get_hex (char *_c, void **ptr, char *_t)
 | |
| {
 | |
|   unsigned long _p;
 | |
|   char temp_type[256];
 | |
|   char *_tt;
 | |
|   char **eq;
 | |
|   int i, j, n;
 | |
|   _p = 0;
 | |
|   if (*_c == '_')
 | |
|     {
 | |
|       _c++;
 | |
|       while (*_c)
 | |
| 	{
 | |
| 	  if ((*_c >= '0') && (*_c <= '9'))
 | |
| 	    _p = (_p << 4) + (*_c - '0');
 | |
| 	  else if ((*_c >= 'a') && (*_c <= 'f'))
 | |
| 	    _p = (_p << 4) + ((*_c - 'a') + 10);
 | |
| 	  else
 | |
| 	    break;
 | |
| 	  _c++;
 | |
| 	}
 | |
| #ifdef NO_ZERO
 | |
|       if (_p == 0)
 | |
| 	{
 | |
| 	  return (char *) _c;
 | |
| 	}
 | |
| #endif
 | |
|       _tt = _c;
 | |
|       if (_t)
 | |
| 	{
 | |
| 	  if (strcmp (_c, _t))
 | |
| 	    {
 | |
| 	      /* Have a type mismatch, we're going to have to do some
 | |
| 	         searching here */
 | |
| 	      i = 0;
 | |
| 	      if (swig_ptr_derived)
 | |
| 		{
 | |
| 		  while (swig_ptr_derived[i])
 | |
| 		    {
 | |
| 		      eq = swig_ptr_derived[i];
 | |
| 		      /* Check type */
 | |
| 		      if (strncmp (_t, eq[0], strlen (eq[0])) == 0)
 | |
| 			{
 | |
| 			  /* Found derived type list for this. */
 | |
| 			  n = strlen (eq[0]);
 | |
| 			  j = 1;
 | |
| 			  while (eq[j])
 | |
| 			    {
 | |
| 			      sprintf (temp_type, "%s%s", eq[j], _t + n);
 | |
| 			      if (strcmp (_c, temp_type) == 0)
 | |
| 				{
 | |
| 				  *ptr = (void *) _p;
 | |
| 				  return (char *) 0;
 | |
| 				}
 | |
| 			      j++;
 | |
| 			    }
 | |
| 			}
 | |
| 		      i++;
 | |
| 		    }
 | |
| 		}
 | |
| 	      *ptr = (void *) _p;
 | |
| 	      return _tt;
 | |
| 	    }
 | |
| 	  else
 | |
| 	    {
 | |
| 	      *ptr = (void *) _p;
 | |
| 	      return (char *) 0;
 | |
| 	    }
 | |
| 	}
 | |
|       else
 | |
| 	{
 | |
| 	  *ptr = (void *) _p;
 | |
| 	  return (char *) 0;
 | |
| 	}
 | |
|     }
 | |
|   else {
 | |
| #ifdef ALLOW_NULL
 | |
|       if (strcmp (_c, "NULL") == 0)
 | |
| 	{
 | |
| 	  *ptr = (void *) 0;
 | |
| 	  return (char *) 0;
 | |
| 	}
 | |
| #endif
 | |
|       *ptr = (void *) 0;	
 | |
|       return _c;
 | |
|     }
 | |
| }
 |