[Open Office] scsolver build failsure on windows (was: Fwd:
Your interesting stuffs :o) )
Tor Lillqvist
tml at novell.com
Tue Feb 14 09:00:40 EST 2006
ti 2006-02-14 klockan 14:46 +0200 skrev Tor Lillqvist:
> Ain't C++ lovely?
Attached you will find two diffs, to the scsolver code and to the ublas
header files in boost. With these patches, scsolver builds for me with
MSVC7.1. Whether it works on Win32 I have no idea...
Need to confirm that it still builds on Linux as before after these
patches, after that I guess the scsolver diff can be applied and
committed to the ooo-build CVS. (Or does scsolver have a real upstream
location elsewhere?)
As to the boost patch, some hack is needed so it is applied before boost
gets built and its headers copied to the solver directory.
--tml
-------------- next part --------------
diff -pru ../../../scratch/scsolver/source/inc/baselistener.hxx ./source/inc/baselistener.hxx
--- ../../../scratch/scsolver/source/inc/baselistener.hxx 2006-01-09 13:38:25.000000000 +0200
+++ ./source/inc/baselistener.hxx 2006-02-14 15:37:54.979125000 +0200
@@ -28,6 +28,10 @@
#ifndef _BASELISTENER_HXX_
#define _BASELISTENER_HXX_
+#ifndef _CPPU_MACROS_HXX_
+#include "cppu/macros.hxx"
+#endif
+
#include <unoglobal.hxx>
#include <cppuhelper/implbase1.hxx>
@@ -68,8 +72,8 @@ public:
ActionListener( BaseDialog* pDlg ) : Listener( pDlg ) {}
virtual ~ActionListener() throw() = 0;
- virtual void disposing( const lang::EventObject& ) throw ( RuntimeException ) {}
- virtual void actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL disposing( const lang::EventObject& ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException ) {}
};
@@ -79,8 +83,8 @@ public:
ItemListener( BaseDialog* pDlg ) : Listener( pDlg ) {}
virtual ~ItemListener() throw() = 0;
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
- virtual void itemStateChanged( const awt::ItemEvent& oEvt ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL itemStateChanged( const awt::ItemEvent& oEvt ) throw ( RuntimeException ) {}
};
@@ -90,9 +94,9 @@ public:
FocusListener( BaseDialog* pDlg ) : Listener( pDlg ) {}
virtual ~FocusListener() throw() = 0;
- virtual void focusGained( const awt::FocusEvent& ) throw( RuntimeException ) {}
- virtual void focusLost( const awt::FocusEvent& ) throw( RuntimeException ) {}
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL focusGained( const awt::FocusEvent& ) throw( RuntimeException ) {}
+ virtual void SAL_CALL focusLost( const awt::FocusEvent& ) throw( RuntimeException ) {}
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
};
class MouseListener : public ::cppu::WeakImplHelper1< awt::XMouseListener >, public Listener
@@ -101,12 +105,12 @@ public:
MouseListener( BaseDialog* pDlg ) : Listener( pDlg ) {}
virtual ~MouseListener() throw() = 0;
- virtual void mousePressed( const awt::MouseEvent& ) throw( RuntimeException ) {}
- virtual void mouseReleased( const awt::MouseEvent& o) throw( RuntimeException ) {}
- virtual void mouseEntered( const awt::MouseEvent& o) throw( RuntimeException ) {}
- virtual void mouseExited( const awt::MouseEvent& o) throw( RuntimeException ) {}
+ virtual void SAL_CALL mousePressed( const awt::MouseEvent& ) throw( RuntimeException ) {}
+ virtual void SAL_CALL mouseReleased( const awt::MouseEvent& o) throw( RuntimeException ) {}
+ virtual void SAL_CALL mouseEntered( const awt::MouseEvent& o) throw( RuntimeException ) {}
+ virtual void SAL_CALL mouseExited( const awt::MouseEvent& o) throw( RuntimeException ) {}
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
};
diff -pru ../../../scratch/scsolver/source/inc/listener.hxx ./source/inc/listener.hxx
--- ../../../scratch/scsolver/source/inc/listener.hxx 2006-01-09 13:38:25.000000000 +0200
+++ ./source/inc/listener.hxx 2006-02-14 15:41:29.010375000 +0200
@@ -87,9 +87,9 @@ public:
RngSelListener( BaseDialog*, RngBtnListener*, const rtl::OUString& );
~RngSelListener() throw();
- virtual void disposing( const lang::EventObject& ) throw ( RuntimeException );
- virtual void done( const sheet::RangeSelectionEvent& ) throw ( RuntimeException );
- virtual void aborted( const sheet::RangeSelectionEvent& ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& ) throw ( RuntimeException );
+ virtual void SAL_CALL done( const sheet::RangeSelectionEvent& ) throw ( RuntimeException );
+ virtual void SAL_CALL aborted( const sheet::RangeSelectionEvent& ) throw ( RuntimeException );
private:
BaseDialog* m_pDlg;
@@ -110,10 +110,10 @@ public:
virtual ~RngBtnListener() throw();
// XEventListener
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
// XActionListener
- virtual void actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException );
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException );
void registerRngSelListener();
void setEventOwner( bool b ) { m_bEventOwner = b; }
@@ -140,10 +140,10 @@ public:
virtual ~SolveBtnListener() throw();
// XEventListener
- virtual void disposing( const lang::EventObject& ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& ) throw ( RuntimeException );
// XActionListener
- virtual void actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException );
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException );
};
@@ -157,10 +157,10 @@ public:
virtual ~CloseBtnListener() throw();
// XEventListener
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
// XActionListener
- virtual void actionPerformed( const awt::ActionEvent& )
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& )
throw ( RuntimeException );
};
@@ -174,10 +174,10 @@ public:
virtual ~SaveBtnListener() throw();
// XEventListener
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
// XActionListener
- virtual void actionPerformed( const awt::ActionEvent& )
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& )
throw ( RuntimeException );
};
@@ -191,10 +191,10 @@ public:
virtual ~LoadBtnListener() throw();
// XEventListener
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
// XActionListener
- virtual void actionPerformed( const awt::ActionEvent& )
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& )
throw ( RuntimeException );
};
@@ -208,10 +208,10 @@ public:
virtual ~ResetBtnListener() throw();
// XEventListener
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
// XActionListener
- virtual void actionPerformed( const awt::ActionEvent& )
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& )
throw ( RuntimeException );
private:
@@ -228,10 +228,10 @@ public:
virtual ~ConstEditBtnListener() throw();
// XEventListener
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException );
// XActionListener
- virtual void actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException );
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException );
private:
@@ -247,9 +247,9 @@ public:
ConstListBoxListener( SolverDialog* );
virtual ~ConstListBoxListener() throw() { Debug( "ConstListBoxListener d'tor" ); }
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
- virtual void itemStateChanged( const awt::ItemEvent& ) throw ( RuntimeException );
+ virtual void SAL_CALL itemStateChanged( const awt::ItemEvent& ) throw ( RuntimeException );
private:
@@ -265,8 +265,8 @@ public:
MaxRadioBtnListener( SolverDialog* pDlg );
virtual ~MaxRadioBtnListener() throw();
- virtual void disposing( const lang::EventObject& ) throw ( RuntimeException );
- virtual void itemStateChanged( const awt::ItemEvent& ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& ) throw ( RuntimeException );
+ virtual void SAL_CALL itemStateChanged( const awt::ItemEvent& ) throw ( RuntimeException );
};
@@ -279,9 +279,9 @@ public:
virtual rtl::OUString getListenerType() const { return ascii( "FocusListener" ); }
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
- virtual void focusGained( const awt::FocusEvent& ) throw( RuntimeException );
- virtual void focusLost( const awt::FocusEvent& ) throw( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL focusGained( const awt::FocusEvent& ) throw( RuntimeException );
+ virtual void SAL_CALL focusLost( const awt::FocusEvent& ) throw( RuntimeException );
};
@@ -293,12 +293,12 @@ public:
WindowMouseListener( BaseDialog* );
virtual ~WindowMouseListener() throw();
- virtual void mousePressed( const awt::MouseEvent& ) throw( RuntimeException );
- virtual void mouseReleased( const awt::MouseEvent& o) throw( RuntimeException ) {}
- virtual void mouseEntered( const awt::MouseEvent& o) throw( RuntimeException ) {}
- virtual void mouseExited( const awt::MouseEvent& o) throw( RuntimeException ) {}
+ virtual void SAL_CALL mousePressed( const awt::MouseEvent& ) throw( RuntimeException );
+ virtual void SAL_CALL mouseReleased( const awt::MouseEvent& o) throw( RuntimeException ) {}
+ virtual void SAL_CALL mouseEntered( const awt::MouseEvent& o) throw( RuntimeException ) {}
+ virtual void SAL_CALL mouseExited( const awt::MouseEvent& o) throw( RuntimeException ) {}
- virtual void disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
+ virtual void SAL_CALL disposing( const lang::EventObject& oEvt ) throw ( RuntimeException ) {}
};
//--------------------------------------------------------------------------
@@ -311,10 +311,10 @@ public:
virtual ~OKCancelBtnListener() throw();
// XEventListener
- virtual void disposing( const lang::EventObject& ) throw ( RuntimeException );
+ virtual void SAL_CALL disposing( const lang::EventObject& ) throw ( RuntimeException );
// XActionListener
- virtual void actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException );
+ virtual void SAL_CALL actionPerformed( const awt::ActionEvent& ) throw ( RuntimeException );
private:
diff -pru ../../../scratch/scsolver/source/numeric/matrix.cxx ./source/numeric/matrix.cxx
--- ../../../scratch/scsolver/source/numeric/matrix.cxx 2006-02-10 16:11:57.717750000 +0200
+++ ./source/numeric/matrix.cxx 2006-02-14 15:06:23.432250000 +0200
@@ -35,7 +35,9 @@
#include <exception>
#include <iterator>
+#ifdef __GNUC__
#warning "noalias not present in boost 1.30.2"
+#endif
#undef noalias
#define noalias(a) (a)
diff -pru ../../../scratch/scsolver/source/numeric/nlpqnewton.cxx ./source/numeric/nlpqnewton.cxx
--- ../../../scratch/scsolver/source/numeric/nlpqnewton.cxx 2006-01-09 14:13:36.000000000 +0200
+++ ./source/numeric/nlpqnewton.cxx 2006-02-14 15:11:14.447875000 +0200
@@ -99,7 +99,11 @@ double QuasiNewtonImpl::norm( const Matr
double f = mxX( i, 0 );
fNorm += f*f;
}
+#ifdef _MSC_VER
+ return ::sqrt( fNorm );
+#else
return std::sqrt( fNorm );
+#endif
}
double QuasiNewtonImpl::evalF( const BaseFuncObj& oF, const Matrix& mxVars, vector<double>& fVars )
-------------- next part --------------
diff -pru ./matrix.hpp ../../../../../../../../solver/680/wntmsci10.pro/inc/boost/numeric/ublas/matrix.hpp
--- ./matrix.hpp 2003-03-01 15:23:52.000000000 +0200
+++ ../../../../../../../../solver/680/wntmsci10.pro/inc/boost/numeric/ublas/matrix.hpp 2006-02-14 15:01:57.369750000 +0200
@@ -402,11 +402,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
@@ -528,11 +530,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 begin () const {
self_type &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 end () const {
self_type &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
@@ -1291,11 +1295,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
@@ -1434,11 +1440,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 begin () const {
self_type &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 end () const {
self_type &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
@@ -2057,11 +2065,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
@@ -2500,11 +2510,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
@@ -2928,11 +2940,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
const scalar_matrix &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
const scalar_matrix &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
@@ -3542,11 +3556,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
const self_type &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
@@ -3668,11 +3684,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 begin () const {
self_type &m = (*this) ();
return m.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 end () const {
self_type &m = (*this) ();
return m.find_first2 (1, index1 (), m.size2 ());
diff -pru ./matrix_expression.hpp ../../../../../../../../solver/680/wntmsci10.pro/inc/boost/numeric/ublas/matrix_expression.hpp
--- ./matrix_expression.hpp 2003-02-18 09:32:46.000000000 +0200
+++ ../../../../../../../../solver/680/wntmsci10.pro/inc/boost/numeric/ublas/matrix_expression.hpp 2006-02-14 14:55:04.119750000 +0200
@@ -778,10 +778,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return (*this) ().find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return (*this) ().find_first2 (1, index1 (), (*this) ().size2 ());
}
@@ -1232,10 +1234,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return (*this) ().find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return (*this) ().find_first2 (1, index1 (), (*this) ().size2 ());
}
@@ -1666,10 +1670,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return (*this) ().find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return (*this) ().find_first2 (1, index1 (), (*this) ().size2 ());
}
@@ -2234,10 +2240,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return (*this) ().find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return (*this) ().find_first2 (1, index1 (), (*this) ().size2 ());
}
@@ -2808,10 +2816,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return (*this) ().find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return (*this) ().find_first2 (1, index1 (), (*this) ().size2 ());
}
@@ -3240,10 +3250,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return (*this) ().find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return (*this) ().find_first2 (1, index1 (), (*this) ().size2 ());
}
@@ -4530,10 +4542,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return (*this) ().find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return (*this) ().find_first2 (1, index1 (), (*this) ().size2 ());
}
Only in ../../../../../../../../solver/680/wntmsci10.pro/inc/boost/numeric/ublas: matrix_expression.hpp~
diff -pru ./matrix_proxy.hpp ../../../../../../../../solver/680/wntmsci10.pro/inc/boost/numeric/ublas/matrix_proxy.hpp
--- ./matrix_proxy.hpp 2003-03-01 15:23:52.000000000 +0200
+++ ../../../../../../../../solver/680/wntmsci10.pro/inc/boost/numeric/ublas/matrix_proxy.hpp 2006-02-14 14:57:56.885375000 +0200
@@ -2998,11 +2998,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
const self_type &mr = (*this) ();
return mr.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
const self_type &mr = (*this) ();
return mr.find_first2 (1, index1 (), mr.size2 ());
@@ -3126,11 +3128,13 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 begin () const {
self_type &mr = (*this) ();
return mr.find_first2 (1, index1 (), 0);
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 end () const {
self_type &mr = (*this) ();
return mr.find_first2 (1, index1 (), mr.size2 ());
@@ -3906,10 +3910,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return const_iterator2 ((*this) (), it1_, it2_ ().begin ());
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return const_iterator2 ((*this) (), it1_, it2_ ().end ());
}
@@ -4032,10 +4038,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 begin () const {
return iterator2 ((*this) (), it1_, it2_ ().begin ());
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 end () const {
return iterator2 ((*this) (), it1_, it2_ ().end ());
}
@@ -4816,10 +4824,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 begin () const {
return const_iterator2 ((*this) (), it1_, it2_ ().begin ());
}
BOOST_UBLAS_INLINE
+ typename self_type::
const_iterator2 end () const {
return const_iterator2 ((*this) (), it1_, it2_ ().end ());
}
@@ -4942,10 +4952,12 @@ namespace boost { namespace numeric { na
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 begin () const {
return iterator2 ((*this) (), it1_, it2_ ().begin ());
}
BOOST_UBLAS_INLINE
+ typename self_type::
iterator2 end () const {
return iterator2 ((*this) (), it1_, it2_ ().end ());
}
More information about the Openoffice
mailing list