git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@800 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			137 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| *** python.cxx.old	Fri Jan 02 22:17:40 1998
 | |
| --- python.cxx	Fri Aug 28 14:49:18 1998
 | |
| ***************
 | |
| *** 1679,1684 ****
 | |
| --- 1679,1701 ----
 | |
|   	      }
 | |
|   	    }
 | |
|   	  }
 | |
| +         } else if (strcmp(cmd, "addtomethod") == 0) {
 | |
| +             // parse value, expected to be in the form "methodName:line"
 | |
| +             char* txtptr = strchr(value, ':');
 | |
| +             if (txtptr) {
 | |
| +                 // add name and line to a list in current_class
 | |
| +                 *txtptr = 0;
 | |
| +                 txtptr++;
 | |
| +                 AddPragmaData* apData = new AddPragmaData(value, txtptr);
 | |
| +                 current_class->addPragmas.append(apData);
 | |
| + 
 | |
| +             } else {
 | |
| +                 fprintf(stderr,"%s : Line %d. Malformed addtomethod pragma.  Should be \"methodName:text\"\n",
 | |
| +                         input_file, line_number);
 | |
| +             }
 | |
| +         } else if (strcmp(cmd, "addtoclass") == 0) {
 | |
| +                 AddPragmaData* apData = new AddPragmaData("__class__", value);
 | |
| +                 current_class->addPragmas.append(apData);
 | |
|   	} else {
 | |
|   	  fprintf(stderr,"%s : Line %d. Unrecognized pragma.\n", input_file, line_number);
 | |
|   	}
 | |
| *** python.h.old	Thu Jul 24 22:18:50 1997
 | |
| --- python.h	Fri Aug 28 14:46:08 1998
 | |
| ***************
 | |
| *** 185,191 ****
 | |
| --- 185,203 ----
 | |
|     void cpp_class_decl(char *, char *,char *);
 | |
|     void pragma(char *, char *, char *);
 | |
|     void add_typedef(DataType *t, char *name);
 | |
| + 
 | |
| +   void emitAddPragmas(String& output, char* name, char* spacing);
 | |
|   };
 | |
|   
 | |
|   #define PYSHADOW_MEMBER  0x2
 | |
| + 
 | |
| + struct AddPragmaData {
 | |
| +     String      m_method;
 | |
| +     String      m_text;
 | |
| + 
 | |
| +     AddPragmaData(char* method, char* text)
 | |
| +         : m_method(method),
 | |
| +           m_text(text)
 | |
| +         {}
 | |
| + };
 | |
|   
 | |
| *** pycpp.cxx.old	Fri Jan 02 20:23:22 1998
 | |
| --- pycpp.cxx	Fri Aug 28 16:01:46 1998
 | |
| ***************
 | |
| *** 276,281 ****
 | |
| --- 276,282 ----
 | |
|         }
 | |
|       }
 | |
|       //    if ((t->type != T_VOID) || (t->is_pointer))
 | |
| +     emitAddPragmas(*pyclass, realname, tab8);
 | |
|       *pyclass << tab8 << "return val\n";
 | |
|   
 | |
|       // Change the usage string to reflect our shadow class
 | |
| ***************
 | |
| *** 394,399 ****
 | |
| --- 395,401 ----
 | |
|         }
 | |
|         *construct << ")\n";
 | |
|         *construct << tab8 << "self.thisown = 1\n";
 | |
| +       emitAddPragmas(*construct, "__init__", tab8);
 | |
|         have_constructor = 1;
 | |
|       } else {
 | |
|   
 | |
| ***************
 | |
| *** 494,502 ****
 | |
|       *pyclass << tab4 << "def __del__(self):\n"
 | |
|   	     << tab8 << "if self.thisown == 1 :\n"
 | |
|   	     << tab8 << tab4 << module << "." << name_destroy(realname) << "(self.this)\n";
 | |
| !     
 | |
|       have_destructor = 1;
 | |
| - 
 | |
|       if (doc_entry) {
 | |
|         doc_entry->usage = "";
 | |
|         doc_entry->usage << "del this";
 | |
| --- 496,503 ----
 | |
|       *pyclass << tab4 << "def __del__(self):\n"
 | |
|   	     << tab8 << "if self.thisown == 1 :\n"
 | |
|   	     << tab8 << tab4 << module << "." << name_destroy(realname) << "(self.this)\n";
 | |
| !     emitAddPragmas(*pyclass, "__del__", tab8);
 | |
|       have_destructor = 1;
 | |
|       if (doc_entry) {
 | |
|         doc_entry->usage = "";
 | |
|         doc_entry->usage << "del this";
 | |
| ***************
 | |
| *** 552,557 ****
 | |
| --- 553,560 ----
 | |
|   	   << tab8 << "return \"<C " << class_name <<" instance>\"\n";
 | |
|   
 | |
|         classes << repr;
 | |
| +       emitAddPragmas(classes, "__class__", tab4);
 | |
| + 
 | |
|       }
 | |
|   
 | |
|       // Now build the real class with a normal constructor
 | |
| ***************
 | |
| *** 747,752 ****
 | |
| --- 750,777 ----
 | |
|     }
 | |
|   }
 | |
|   
 | |
| + // --------------------------------------------------------------------------------
 | |
| + // PYTHON::emitAddPragmas(String& output, char* name, char* spacing);
 | |
| + //
 | |
| + // Search the current_class->addPragmas vector for any text belonging to name.
 | |
| + // Append the text properly spcaed to the output string.
 | |
| + //
 | |
| + // --------------------------------------------------------------------------------
 | |
| + 
 | |
| + void PYTHON::emitAddPragmas(String& output, char* name, char* spacing)
 | |
| + {
 | |
| +     AddPragmaData*      apData;
 | |
| +     size_t              count;
 | |
| +     int                 i;
 | |
| + 
 | |
| +     count = current_class->addPragmas.count();
 | |
| +     for (i=0; i<count; i++) {
 | |
| +         apData = (AddPragmaData*)current_class->addPragmas[i];
 | |
| +         if (strcmp(apData->m_method, name) == 0) {
 | |
| +             output << spacing << apData->m_text << "\n";
 | |
| +         }
 | |
| +     }
 | |
| + }
 | |
|   
 | |
|   /*********************************************************************************
 | |
|    *
 |