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";
 | 
						|
+         }
 | 
						|
+     }
 | 
						|
+ }
 | 
						|
  
 | 
						|
  /*********************************************************************************
 | 
						|
   *
 |