Loading change_log.txt +16 −0 Original line number Original line Diff line number Diff line Loading @@ -5,6 +5,22 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with email address. email address. 2008-Apr-22 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ +eeschema * Spent a 1/2 day tracking down two linked list bugs in deleting a DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE. I cannot believe in the year 2008 we should have to debug a linked list function. This is stuff I expected to do 20 years ago, not today. The function void WinEDA_SchematicFrame::DeleteSheetLabel( wxDC* DC, Hierarchical_PIN_Sheet_Struct* SheetLabelToDel ) never worked as far as I can tell. Should switch to boost::ptr_vector ASAP everywhere, and leave linked lists in the 1980's. * Hierarchical_PIN_Sheet_Struct::Hierarchical_PIN_Sheet_Struct() was not setting the m_Parent. 2008-Apr-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2008-Apr-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ ================================================================================ +eeschema +eeschema Loading common/base_struct.cpp +4 −15 Original line number Original line Diff line number Diff line Loading @@ -161,22 +161,12 @@ std::ostream& operator<<( std::ostream& out, const wxPoint& pt ) */ */ void EDA_BaseStruct::Show( int nestLevel, std::ostream& os ) void EDA_BaseStruct::Show( int nestLevel, std::ostream& os ) { { // for now, make it look like XML: // XML output: wxString s = GetClass(); wxString s = GetClass(); s = s + wxT( " " ); NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">" NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">\n"; << " Need ::Show() override for this class " << "</" << s.Lower().mb_str() << ">\n"; /* * EDA_BaseStruct* kid = m_Son; * for( ; kid; kid = kid->Pnext ) * { * kid->Show( nestLevel+1, os ); * } */ NestedSpace( nestLevel + 1, os ) << "Need ::Show() override\n"; NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n"; } } Loading @@ -195,7 +185,6 @@ std::ostream& EDA_BaseStruct::NestedSpace( int nestLevel, std::ostream& os ) return os; return os; } } #endif #endif Loading eeschema/class_drawsheet.cpp +23 −0 Original line number Original line Diff line number Diff line Loading @@ -631,6 +631,28 @@ bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame* aFrame, const wxStr } } #if defined(DEBUG) void DrawSheetStruct::Show( int nestLevel, std::ostream& os ) { // XML output: wxString s = GetClass(); NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">" << " sheet_name=\"" << CONV_TO_UTF8( m_SheetName) << '"' << ">\n"; // show all the pins, and check the linked list integrity Hierarchical_PIN_Sheet_Struct* label; for( label = m_Label; label; label=label->Next() ) { label->Show( nestLevel+1, os ); } NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n" << std::flush; } #endif /**********************************************/ /**********************************************/ /* class to handle a series of sheets *********/ /* class to handle a series of sheets *********/ Loading Loading @@ -815,3 +837,4 @@ bool DrawSheetPath::operator!=( const DrawSheetPath& d1 ) return false; return false; } } eeschema/class_drawsheet.h +15 −5 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ public: const wxString& text = wxEmptyString ); const wxString& text = wxEmptyString ); ~Hierarchical_PIN_Sheet_Struct() { } ~Hierarchical_PIN_Sheet_Struct() { } virtual wxString GetClass() const virtual wxString GetClass() const { { return wxT( "Hierarchical_PIN_Sheet_Struct" ); return wxT( "Hierarchical_PIN_Sheet_Struct" ); Loading @@ -37,8 +38,7 @@ public: Hierarchical_PIN_Sheet_Struct* GenCopy(); Hierarchical_PIN_Sheet_Struct* GenCopy(); Hierarchical_PIN_Sheet_Struct* Next() Hierarchical_PIN_Sheet_Struct* Next() { return (Hierarchical_PIN_Sheet_Struct*) Pnext; } { return (Hierarchical_PIN_Sheet_Struct*) Pnext; } void Place( WinEDA_SchematicFrame* frame, wxDC* DC ); void Place( WinEDA_SchematicFrame* frame, wxDC* DC ); void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, Loading @@ -51,6 +51,11 @@ public: * @return bool - true if success writing else false. * @return bool - true if success writing else false. */ */ bool Save( FILE* aFile ) const; bool Save( FILE* aFile ) const; #if defined(DEBUG) // comment inherited by Doxygen from Base_Struct void Show( int nestLevel, std::ostream& os ); #endif }; }; Loading Loading @@ -120,6 +125,11 @@ public: //void RemoveSheet(DrawSheetStruct* sheet); //void RemoveSheet(DrawSheetStruct* sheet); //to remove a sheet, just delete it //to remove a sheet, just delete it //-- the destructor should take care of everything else. //-- the destructor should take care of everything else. #if defined(DEBUG) // comment inherited by Doxygen from Base_Struct void Show( int nestLevel, std::ostream& os ); #endif }; }; Loading eeschema/class_hierarchical_PIN_sheet.cpp +19 −1 Original line number Original line Diff line number Diff line Loading @@ -36,10 +36,12 @@ /*******************************************************************/ /*******************************************************************/ Hierarchical_PIN_Sheet_Struct::Hierarchical_PIN_Sheet_Struct( DrawSheetStruct* parent, Hierarchical_PIN_Sheet_Struct::Hierarchical_PIN_Sheet_Struct( DrawSheetStruct* parent, const wxPoint& pos, const wxString& text ) : const wxPoint& pos, const wxString& text ) : SCH_ITEM( NULL, DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ), SCH_ITEM( parent, DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ), EDA_TextStruct( text ) EDA_TextStruct( text ) /*******************************************************************/ /*******************************************************************/ { { wxASSERT( parent ); wxASSERT( Pnext == NULL ); m_Layer = LAYER_SHEETLABEL; m_Layer = LAYER_SHEETLABEL; m_Pos = pos; m_Pos = pos; m_Edge = 0; m_Edge = 0; Loading Loading @@ -199,3 +201,19 @@ bool Hierarchical_PIN_Sheet_Struct::Save( FILE* aFile ) const return true; return true; } } #if defined(DEBUG) void Hierarchical_PIN_Sheet_Struct::Show( int nestLevel, std::ostream& os ) { // XML output: wxString s = GetClass(); NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">" << " pin_name=\"" << CONV_TO_UTF8( m_Text ) << '"' << "/>\n" << std::flush; // NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n"; } #endif Loading
change_log.txt +16 −0 Original line number Original line Diff line number Diff line Loading @@ -5,6 +5,22 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with email address. email address. 2008-Apr-22 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ +eeschema * Spent a 1/2 day tracking down two linked list bugs in deleting a DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE. I cannot believe in the year 2008 we should have to debug a linked list function. This is stuff I expected to do 20 years ago, not today. The function void WinEDA_SchematicFrame::DeleteSheetLabel( wxDC* DC, Hierarchical_PIN_Sheet_Struct* SheetLabelToDel ) never worked as far as I can tell. Should switch to boost::ptr_vector ASAP everywhere, and leave linked lists in the 1980's. * Hierarchical_PIN_Sheet_Struct::Hierarchical_PIN_Sheet_Struct() was not setting the m_Parent. 2008-Apr-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2008-Apr-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ ================================================================================ +eeschema +eeschema Loading
common/base_struct.cpp +4 −15 Original line number Original line Diff line number Diff line Loading @@ -161,22 +161,12 @@ std::ostream& operator<<( std::ostream& out, const wxPoint& pt ) */ */ void EDA_BaseStruct::Show( int nestLevel, std::ostream& os ) void EDA_BaseStruct::Show( int nestLevel, std::ostream& os ) { { // for now, make it look like XML: // XML output: wxString s = GetClass(); wxString s = GetClass(); s = s + wxT( " " ); NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">" NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">\n"; << " Need ::Show() override for this class " << "</" << s.Lower().mb_str() << ">\n"; /* * EDA_BaseStruct* kid = m_Son; * for( ; kid; kid = kid->Pnext ) * { * kid->Show( nestLevel+1, os ); * } */ NestedSpace( nestLevel + 1, os ) << "Need ::Show() override\n"; NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n"; } } Loading @@ -195,7 +185,6 @@ std::ostream& EDA_BaseStruct::NestedSpace( int nestLevel, std::ostream& os ) return os; return os; } } #endif #endif Loading
eeschema/class_drawsheet.cpp +23 −0 Original line number Original line Diff line number Diff line Loading @@ -631,6 +631,28 @@ bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame* aFrame, const wxStr } } #if defined(DEBUG) void DrawSheetStruct::Show( int nestLevel, std::ostream& os ) { // XML output: wxString s = GetClass(); NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">" << " sheet_name=\"" << CONV_TO_UTF8( m_SheetName) << '"' << ">\n"; // show all the pins, and check the linked list integrity Hierarchical_PIN_Sheet_Struct* label; for( label = m_Label; label; label=label->Next() ) { label->Show( nestLevel+1, os ); } NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n" << std::flush; } #endif /**********************************************/ /**********************************************/ /* class to handle a series of sheets *********/ /* class to handle a series of sheets *********/ Loading Loading @@ -815,3 +837,4 @@ bool DrawSheetPath::operator!=( const DrawSheetPath& d1 ) return false; return false; } }
eeschema/class_drawsheet.h +15 −5 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ public: const wxString& text = wxEmptyString ); const wxString& text = wxEmptyString ); ~Hierarchical_PIN_Sheet_Struct() { } ~Hierarchical_PIN_Sheet_Struct() { } virtual wxString GetClass() const virtual wxString GetClass() const { { return wxT( "Hierarchical_PIN_Sheet_Struct" ); return wxT( "Hierarchical_PIN_Sheet_Struct" ); Loading @@ -37,8 +38,7 @@ public: Hierarchical_PIN_Sheet_Struct* GenCopy(); Hierarchical_PIN_Sheet_Struct* GenCopy(); Hierarchical_PIN_Sheet_Struct* Next() Hierarchical_PIN_Sheet_Struct* Next() { return (Hierarchical_PIN_Sheet_Struct*) Pnext; } { return (Hierarchical_PIN_Sheet_Struct*) Pnext; } void Place( WinEDA_SchematicFrame* frame, wxDC* DC ); void Place( WinEDA_SchematicFrame* frame, wxDC* DC ); void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, Loading @@ -51,6 +51,11 @@ public: * @return bool - true if success writing else false. * @return bool - true if success writing else false. */ */ bool Save( FILE* aFile ) const; bool Save( FILE* aFile ) const; #if defined(DEBUG) // comment inherited by Doxygen from Base_Struct void Show( int nestLevel, std::ostream& os ); #endif }; }; Loading Loading @@ -120,6 +125,11 @@ public: //void RemoveSheet(DrawSheetStruct* sheet); //void RemoveSheet(DrawSheetStruct* sheet); //to remove a sheet, just delete it //to remove a sheet, just delete it //-- the destructor should take care of everything else. //-- the destructor should take care of everything else. #if defined(DEBUG) // comment inherited by Doxygen from Base_Struct void Show( int nestLevel, std::ostream& os ); #endif }; }; Loading
eeschema/class_hierarchical_PIN_sheet.cpp +19 −1 Original line number Original line Diff line number Diff line Loading @@ -36,10 +36,12 @@ /*******************************************************************/ /*******************************************************************/ Hierarchical_PIN_Sheet_Struct::Hierarchical_PIN_Sheet_Struct( DrawSheetStruct* parent, Hierarchical_PIN_Sheet_Struct::Hierarchical_PIN_Sheet_Struct( DrawSheetStruct* parent, const wxPoint& pos, const wxString& text ) : const wxPoint& pos, const wxString& text ) : SCH_ITEM( NULL, DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ), SCH_ITEM( parent, DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ), EDA_TextStruct( text ) EDA_TextStruct( text ) /*******************************************************************/ /*******************************************************************/ { { wxASSERT( parent ); wxASSERT( Pnext == NULL ); m_Layer = LAYER_SHEETLABEL; m_Layer = LAYER_SHEETLABEL; m_Pos = pos; m_Pos = pos; m_Edge = 0; m_Edge = 0; Loading Loading @@ -199,3 +201,19 @@ bool Hierarchical_PIN_Sheet_Struct::Save( FILE* aFile ) const return true; return true; } } #if defined(DEBUG) void Hierarchical_PIN_Sheet_Struct::Show( int nestLevel, std::ostream& os ) { // XML output: wxString s = GetClass(); NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">" << " pin_name=\"" << CONV_TO_UTF8( m_Text ) << '"' << "/>\n" << std::flush; // NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n"; } #endif