2010-09-17 18:22 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

* contrib/hbqt/qtgui/doc/en/class_qpainter.txt
  * contrib/hbqt/qtgui/g/QPainter.cpp
  * contrib/hbqt/qtgui/g/TQPainter.prg
    * Re-generated.

  * contrib/hbqt/qtgui/qth/QPainter.qth
    + Implemented: single call :drawLine() method.

  * contrib/hbqt/utils/hbqtgen.prg
    + Implemented: "..." parameter as method argument.
      Needed to streamline in single call of Qt's 
      overloaded by argument type methods.

  * contrib/hbide/hbqreportsmanager.prg
    ! Demonstrated the use of QPainter():drawLine( ... )
      with variable type of argument types.

    NOTE: this mechanism holds good if arguments are 
          constructed via Q*Class( ... ) call only.
          Also this mechanism seems to be working best 
          for only those classes of Qt which are neither
          inherited nor inheriting other class. The 
          classes in this bracket are like - QBrush, 
          QColor, QPixmap, QRect, QPoint, etc.
This commit is contained in:
Pritpal Bedi
2010-09-18 01:27:21 +00:00
parent 4ddb512005
commit cfa613a3e9
7 changed files with 274 additions and 86 deletions

View File

@@ -16,6 +16,32 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-09-17 18:22 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbqt/qtgui/doc/en/class_qpainter.txt
* contrib/hbqt/qtgui/g/QPainter.cpp
* contrib/hbqt/qtgui/g/TQPainter.prg
* Re-generated.
* contrib/hbqt/qtgui/qth/QPainter.qth
+ Implemented: single call :drawLine() method.
* contrib/hbqt/utils/hbqtgen.prg
+ Implemented: "..." parameter as method argument.
Needed to streamline in single call of Qt's
overloaded by argument type methods.
* contrib/hbide/hbqreportsmanager.prg
! Demonstrated the use of QPainter():drawLine( ... )
with variable type of argument types.
NOTE: this mechanism holds good if arguments are
constructed via Q*Class( ... ) call only.
Also this mechanism seems to be working best
for only those classes of Qt which are neither
inherited nor inheriting other class. The
classes in this bracket are like - QBrush,
QColor, QPixmap, QRect, QPoint, etc.
2010-09-17 15:49 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* src/rtl/ttopbar.prg
! Changed: Instance variable <cargo> to SETGET METHOD cargo( xCargo ).

View File

@@ -2331,16 +2331,17 @@ METHOD HqrGraphicsItem:drawLine( qPainter, qRect )
SWITCH ::lineType()
CASE HBQT_GRAPHICSITEM_LINE_VERTICAL
qPainter:drawLine_4( qRect:x() + qRect:width() / 2, qRect:y(), qRect:x() + qRect:width() / 2, qRect:y() + qRect:height() )
qPainter:drawLine( qRect:x() + qRect:width() / 2, qRect:y(), qRect:x() + qRect:width() / 2, qRect:y() + qRect:height() )
EXIT
case HBQT_GRAPHICSITEM_LINE_HORIZONTAL
qPainter:drawLine_4( qRect:x(), qRect:y() + qRect:height() / 2, qRect:x() + qRect:width(), qRect:y() + qRect:height() / 2 )
qPainter:drawLine( qRect:x(), qRect:y() + qRect:height() / 2, qRect:x() + qRect:width(), qRect:y() + qRect:height() / 2 )
EXIT
case HBQT_GRAPHICSITEM_LINE_BACKWARDDIAGONAL
qPainter:drawLine_4( qRect:right(), qRect:y(), qRect:x(), qRect:bottom() )
qPainter:drawLine( qRect:right(), qRect:y(), qRect:x(), qRect:bottom() )
EXIT
case HBQT_GRAPHICSITEM_LINE_FORWARDDIAGONAL
qPainter:drawLine_4( qRect:x(), qRect:y(), qRect:right(), qRect:bottom() )
//qPainter:drawLine_4( qRect:x(), qRect:y(), qRect:right(), qRect:bottom() )
qPainter:drawLine( QPointF( qRect:x(), qRect:y() ), QPointF( qRect:right(), qRect:bottom() ) )
EXIT
ENDSWITCH
RETURN Self

View File

@@ -67,11 +67,7 @@
* :drawImage_6( pRectangle, pImage ) -> NIL
* :drawImage_7( pRectangle, pImage ) -> NIL
* :drawImage_8( nX, nY, pImage, nSx, nSy, nSw, nSh, nFlags ) -> NIL
* :drawLine( pLine ) -> NIL
* :drawLine_1( pLine ) -> NIL
* :drawLine_2( pP1, pP2 ) -> NIL
* :drawLine_3( pP1, pP2 ) -> NIL
* :drawLine_4( nX1, nY1, nX2, nY2 ) -> NIL
* :drawLine( ... ) -> NIL
* :drawLines( pLines, nLineCount ) -> NIL
* :drawLines_1( pLines, nLineCount ) -> NIL
* :drawLines_2( pPointPairs, nLineCount ) -> NIL
@@ -83,6 +79,7 @@
* :drawPie( pRectangle, nStartAngle, nSpanAngle ) -> NIL
* :drawPie_1( pRectangle, nStartAngle, nSpanAngle ) -> NIL
* :drawPie_2( nX, nY, nWidth, nHeight, nStartAngle, nSpanAngle ) -> NIL
* :hbDrawPixmap( ... ) -> NIL
* :drawPixmap( pTarget, pPixmap, pSource ) -> NIL
* :drawPixmap_1( pTarget, pPixmap, pSource ) -> NIL
* :drawPixmap_2( pPoint, pPixmap, pSource ) -> NIL

View File

@@ -73,17 +73,27 @@
*/
/*
* Constructed[ 182/188 [ 96.81% ] ]
* Constructed[ 179/192 [ 93.23% ] ]
*
* *** Unconvered Prototypes ***
* -----------------------------
*
* }
* void drawLines ( const QVector<QPointF> & pointPairs )
* void drawLines ( const QVector<QPoint> & pointPairs )
* void drawLines ( const QVector<QLineF> & lines )
* void drawLines ( const QVector<QLine> & lines )
* }
* void drawRects ( const QVector<QRectF> & rectangles )
* void drawRects ( const QVector<QRect> & rectangles )
*
* *** Commented out protos which construct fine but do not compile ***
*
* //void drawLine ( const QLineF & line )
* //void drawLine ( const QLine & line )
* //void drawLine ( const QPoint & p1, const QPoint & p2 )
* //void drawLine ( const QPointF & p1, const QPointF & p2 )
* //void drawLine ( int x1, int y1, int x2, int y2 )
*/
#include <QtCore/QPointer>
@@ -667,62 +677,47 @@ HB_FUNC( QT_QPAINTER_DRAWIMAGE_8 )
}
/*
* void drawLine ( const QLineF & line )
* void drawLine ( ... )
*/
HB_FUNC( QT_QPAINTER_DRAWLINE )
{
QPainter * p = hbqt_par_QPainter( 1 );
if( p )
{
( p )->drawLine( *hbqt_par_QLineF( 2 ) );
}
}
switch( hb_pcount() )
{
case 5:
( p )->drawLine( hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ), hb_parni( 5 ) );
break;
case 3:
{
HBQT_GC_T * q = ( HBQT_GC_T * ) hb_parptrGC( hbqt_gcFuncs(), 2 );
/*
* void drawLine ( const QLine & line )
*/
HB_FUNC( QT_QPAINTER_DRAWLINE_1 )
{
QPainter * p = hbqt_par_QPainter( 1 );
if( p )
{
( p )->drawLine( *hbqt_par_QLine( 2 ) );
}
}
if( q->type == HBQT_TYPE_QPoint )
{
( p )->drawLine( *hbqt_par_QPoint( 2 ), *hbqt_par_QPoint( 3 ) );
}
else if( q->type == HBQT_TYPE_QPointF )
{
( p )->drawLine( *hbqt_par_QPointF( 2 ), *hbqt_par_QPointF( 3 ) );
}
}
break;
case 2:
{
HBQT_GC_T * q = ( HBQT_GC_T * ) hb_parptrGC( hbqt_gcFuncs(), 2 );
/*
* void drawLine ( const QPoint & p1, const QPoint & p2 )
*/
HB_FUNC( QT_QPAINTER_DRAWLINE_2 )
{
QPainter * p = hbqt_par_QPainter( 1 );
if( p )
{
( p )->drawLine( *hbqt_par_QPoint( 2 ), *hbqt_par_QPoint( 3 ) );
}
}
/*
* void drawLine ( const QPointF & p1, const QPointF & p2 )
*/
HB_FUNC( QT_QPAINTER_DRAWLINE_3 )
{
QPainter * p = hbqt_par_QPainter( 1 );
if( p )
{
( p )->drawLine( *hbqt_par_QPointF( 2 ), *hbqt_par_QPointF( 3 ) );
}
}
/*
* void drawLine ( int x1, int y1, int x2, int y2 )
*/
HB_FUNC( QT_QPAINTER_DRAWLINE_4 )
{
QPainter * p = hbqt_par_QPainter( 1 );
if( p )
{
( p )->drawLine( hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ), hb_parni( 5 ) );
if( q->type == HBQT_TYPE_QLineF )
{
( p )->drawLine( *hbqt_par_QLineF( 2 ) );
}
else if( q->type == HBQT_TYPE_QLine )
{
( p )->drawLine( *hbqt_par_QLine( 2 ) );
}
}
break;
}
}
}
@@ -858,6 +853,68 @@ HB_FUNC( QT_QPAINTER_DRAWPIE_2 )
}
}
/*
* void hbDrawPixmap ( ... )
*/
HB_FUNC( QT_QPAINTER_HBDRAWPIXMAP )
{
HBQT_GC_T * p = ( HBQT_GC_T * ) hb_parptrGC( hbqt_gcFuncs(), 1 );
if( p && p->ph )
{
switch( hb_pcount() )
{
case 10:
hbqt_par_QPainter( 1 )->drawPixmap( hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ), hb_parni( 5 ), *hbqt_par_QPixmap( 6 ), hb_parni( 7 ), hb_parni( 8 ), hb_parni( 9 ), hb_parni( 10 ) );
break;
case 8:
hbqt_par_QPainter( 1 )->drawPixmap( hb_parni( 2 ), hb_parni( 3 ), *hbqt_par_QPixmap( 4 ), hb_parni( 5 ), hb_parni( 6 ), hb_parni( 7 ), hb_parni( 8 ) );
break;
case 6:
hbqt_par_QPainter( 1 )->drawPixmap( hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ), hb_parni( 5 ), *hbqt_par_QPixmap( 6 ) );
break;
case 4:
if( HB_ISNUM( 2 ) )
{
hbqt_par_QPainter( 1 )->drawPixmap( hb_parni( 2 ), hb_parni( 3 ), *hbqt_par_QPixmap( 4 ) );
}
else
{
if( p->type == HBQT_TYPE_QRectF )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QRectF( 2 ), *hbqt_par_QPixmap( 3 ), *hbqt_par_QRectF( 4 ) );
}
else if( p->type == HBQT_TYPE_QRect )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QRect( 2 ), *hbqt_par_QPixmap( 3 ), *hbqt_par_QRect( 4 ) );
}
else if( p->type == HBQT_TYPE_QPointF )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QPointF( 2 ), *hbqt_par_QPixmap( 3 ), *hbqt_par_QRectF( 4 ) );
}
else if( p->type == HBQT_TYPE_QPoint )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QPoint( 2 ), *hbqt_par_QPixmap( 3 ), *hbqt_par_QRect( 4 ) );
}
}
break;
case 3:
if( p->type == HBQT_TYPE_QRect )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QRect( 2 ), *hbqt_par_QPixmap( 3 ) );
}
else if( p->type == HBQT_TYPE_QPointF )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QPointF( 2 ), *hbqt_par_QPixmap( 3 ) );
}
else if( p->type == HBQT_TYPE_QPoint )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QPoint( 2 ), *hbqt_par_QPixmap( 3 ) );
}
break;
}
}
}
/*
* void drawPixmap ( const QRectF & target, const QPixmap & pixmap, const QRectF & source )
*/

View File

@@ -112,11 +112,7 @@ CREATE CLASS QPainter INHERIT HbQtObjectHandler FUNCTION HB_QPainter
METHOD drawImage_6( pRectangle, pImage )
METHOD drawImage_7( pRectangle, pImage )
METHOD drawImage_8( nX, nY, pImage, nSx, nSy, nSw, nSh, nFlags )
METHOD drawLine( pLine )
METHOD drawLine_1( pLine )
METHOD drawLine_2( pP1, pP2 )
METHOD drawLine_3( pP1, pP2 )
METHOD drawLine_4( nX1, nY1, nX2, nY2 )
METHOD drawLine( ... )
METHOD drawLines( pLines, nLineCount )
METHOD drawLines_1( pLines, nLineCount )
METHOD drawLines_2( pPointPairs, nLineCount )
@@ -128,6 +124,7 @@ CREATE CLASS QPainter INHERIT HbQtObjectHandler FUNCTION HB_QPainter
METHOD drawPie( pRectangle, nStartAngle, nSpanAngle )
METHOD drawPie_1( pRectangle, nStartAngle, nSpanAngle )
METHOD drawPie_2( nX, nY, nWidth, nHeight, nStartAngle, nSpanAngle )
METHOD hbDrawPixmap( ... )
METHOD drawPixmap( pTarget, pPixmap, pSource )
METHOD drawPixmap_1( pTarget, pPixmap, pSource )
METHOD drawPixmap_2( pPoint, pPixmap, pSource )
@@ -430,24 +427,12 @@ METHOD QPainter:drawImage_8( nX, nY, pImage, nSx, nSy, nSw, nSh, nFlags )
RETURN Qt_QPainter_drawImage_8( ::pPtr, nX, nY, hbqt_ptr( pImage ), nSx, nSy, nSw, nSh, nFlags )
METHOD QPainter:drawLine( pLine )
RETURN Qt_QPainter_drawLine( ::pPtr, hbqt_ptr( pLine ) )
METHOD QPainter:drawLine_1( pLine )
RETURN Qt_QPainter_drawLine_1( ::pPtr, hbqt_ptr( pLine ) )
METHOD QPainter:drawLine_2( pP1, pP2 )
RETURN Qt_QPainter_drawLine_2( ::pPtr, hbqt_ptr( pP1 ), hbqt_ptr( pP2 ) )
METHOD QPainter:drawLine_3( pP1, pP2 )
RETURN Qt_QPainter_drawLine_3( ::pPtr, hbqt_ptr( pP1 ), hbqt_ptr( pP2 ) )
METHOD QPainter:drawLine_4( nX1, nY1, nX2, nY2 )
RETURN Qt_QPainter_drawLine_4( ::pPtr, nX1, nY1, nX2, nY2 )
METHOD QPainter:drawLine( ... )
LOCAL p
FOR EACH p IN { ... }
hb_pvalue( p:__enumIndex(), hbqt_ptr( p ) )
NEXT
RETURN Qt_QPainter_drawLine( ::pPtr, ... )
METHOD QPainter:drawLines( pLines, nLineCount )
@@ -494,6 +479,14 @@ METHOD QPainter:drawPie_2( nX, nY, nWidth, nHeight, nStartAngle, nSpanAngle )
RETURN Qt_QPainter_drawPie_2( ::pPtr, nX, nY, nWidth, nHeight, nStartAngle, nSpanAngle )
METHOD QPainter:hbDrawPixmap( ... )
LOCAL p
FOR EACH p IN { ... }
hb_pvalue( p:__enumIndex(), hbqt_ptr( p ) )
NEXT
RETURN Qt_QPainter_hbDrawPixmap( ::pPtr, ... )
METHOD QPainter:drawPixmap( pTarget, pPixmap, pSource )
RETURN Qt_QPainter_drawPixmap( ::pPtr, hbqt_ptr( pTarget ), hbqt_ptr( pPixmap ), hbqt_ptr( pSource ) )

View File

@@ -128,11 +128,53 @@ void drawImage ( const QPoint & point, const QImage & image, const QRect & sourc
void drawImage ( const QRectF & rectangle, const QImage & image )
void drawImage ( const QRect & rectangle, const QImage & image )
void drawImage ( int x, int y, const QImage & image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor )
void drawLine ( const QLineF & line )
void drawLine ( const QLine & line )
void drawLine ( const QPoint & p1, const QPoint & p2 )
void drawLine ( const QPointF & p1, const QPointF & p2 )
void drawLine ( int x1, int y1, int x2, int y2 )
void drawLine ( ... ){
QPainter * p = hbqt_par_QPainter( 1 );
if( p )
{
switch( hb_pcount() )
{
case 5:
( p )->drawLine( hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ), hb_parni( 5 ) );
break;
case 3:
{
HBQT_GC_T * q = ( HBQT_GC_T * ) hb_parptrGC( hbqt_gcFuncs(), 2 );
if( q->type == HBQT_TYPE_QPoint )
{
( p )->drawLine( *hbqt_par_QPoint( 2 ), *hbqt_par_QPoint( 3 ) );
}
else if( q->type == HBQT_TYPE_QPointF )
{
( p )->drawLine( *hbqt_par_QPointF( 2 ), *hbqt_par_QPointF( 3 ) );
}
}
break;
case 2:
{
HBQT_GC_T * q = ( HBQT_GC_T * ) hb_parptrGC( hbqt_gcFuncs(), 2 );
if( q->type == HBQT_TYPE_QLineF )
{
( p )->drawLine( *hbqt_par_QLineF( 2 ) );
}
else if( q->type == HBQT_TYPE_QLine )
{
( p )->drawLine( *hbqt_par_QLine( 2 ) );
}
}
break;
}
}
}
//void drawLine ( const QLineF & line )
//void drawLine ( const QLine & line )
//void drawLine ( const QPoint & p1, const QPoint & p2 )
//void drawLine ( const QPointF & p1, const QPointF & p2 )
//void drawLine ( int x1, int y1, int x2, int y2 )
void drawLines ( const QLineF * lines, int lineCount )
void drawLines ( const QLine * lines, int lineCount )
void drawLines ( const QPointF * pointPairs, int lineCount )
@@ -148,6 +190,66 @@ void drawPicture ( int x, int y, const QPicture & picture )
void drawPie ( const QRectF & rectangle, int startAngle, int spanAngle )
void drawPie ( const QRect & rectangle, int startAngle, int spanAngle )
void drawPie ( int x, int y, int width, int height, int startAngle, int spanAngle )
void hbDrawPixmap ( ... ){
HBQT_GC_T * p = ( HBQT_GC_T * ) hb_parptrGC( hbqt_gcFuncs(), 1 );
if( p && p->ph )
{
switch( hb_pcount() )
{
case 10:
hbqt_par_QPainter( 1 )->drawPixmap( hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ), hb_parni( 5 ), *hbqt_par_QPixmap( 6 ), hb_parni( 7 ), hb_parni( 8 ), hb_parni( 9 ), hb_parni( 10 ) );
break;
case 8:
hbqt_par_QPainter( 1 )->drawPixmap( hb_parni( 2 ), hb_parni( 3 ), *hbqt_par_QPixmap( 4 ), hb_parni( 5 ), hb_parni( 6 ), hb_parni( 7 ), hb_parni( 8 ) );
break;
case 6:
hbqt_par_QPainter( 1 )->drawPixmap( hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ), hb_parni( 5 ), *hbqt_par_QPixmap( 6 ) );
break;
case 4:
if( HB_ISNUM( 2 ) )
{
hbqt_par_QPainter( 1 )->drawPixmap( hb_parni( 2 ), hb_parni( 3 ), *hbqt_par_QPixmap( 4 ) );
}
else
{
if( p->type == HBQT_TYPE_QRectF )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QRectF( 2 ), *hbqt_par_QPixmap( 3 ), *hbqt_par_QRectF( 4 ) );
}
else if( p->type == HBQT_TYPE_QRect )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QRect( 2 ), *hbqt_par_QPixmap( 3 ), *hbqt_par_QRect( 4 ) );
}
else if( p->type == HBQT_TYPE_QPointF )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QPointF( 2 ), *hbqt_par_QPixmap( 3 ), *hbqt_par_QRectF( 4 ) );
}
else if( p->type == HBQT_TYPE_QPoint )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QPoint( 2 ), *hbqt_par_QPixmap( 3 ), *hbqt_par_QRect( 4 ) );
}
}
break;
case 3:
if( p->type == HBQT_TYPE_QRect )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QRect( 2 ), *hbqt_par_QPixmap( 3 ) );
}
else if( p->type == HBQT_TYPE_QPointF )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QPointF( 2 ), *hbqt_par_QPixmap( 3 ) );
}
else if( p->type == HBQT_TYPE_QPoint )
{
hbqt_par_QPainter( 1 )->drawPixmap( *hbqt_par_QPoint( 2 ), *hbqt_par_QPixmap( 3 ) );
}
break;
}
}
}
void drawPixmap ( const QRectF & target, const QPixmap & pixmap, const QRectF & source )
void drawPixmap ( const QRect & target, const QPixmap & pixmap, const QRect & source )
void drawPixmap ( const QPointF & point, const QPixmap & pixmap, const QRectF & source )
@@ -159,6 +261,8 @@ void drawPixmap ( const QRect & rectangle, const QPixmap & pixmap )
void drawPixmap ( int x, int y, int width, int height, const QPixmap & pixmap )
void drawPixmap ( int x, int y, int w, int h, const QPixmap & pixmap, int sx, int sy, int sw, int sh )
void drawPixmap ( int x, int y, const QPixmap & pixmap, int sx, int sy, int sw, int sh )
void drawPoint ( const QPointF & position )
void drawPoint ( const QPoint & position )
void drawPoint ( int x, int y )

View File

@@ -898,6 +898,10 @@ STATIC FUNCTION ParseProto( cProto, cWidget, txt_, doc_, aEnum, func_, lList, fB
ENDIF
DO CASE
CASE aA[ PRT_CAST ] == "..."
aA[ PRT_BODY ] := "..."
aA[ PRT_DOC ] := "..."
CASE aA[ PRT_CAST ] == "PHB_ITEM"
aA[ PRT_BODY ] := "hb_param( " + cHBIdx + ", HB_IT_ANY )"
aA[ PRT_DOC ] := "x" + cDocNM
@@ -1688,6 +1692,12 @@ STATIC FUNCTION Build_Class( cWidget, cls_, doc_, cPathOut, subCls_ )
FOR i := 1 TO len( mth_ )
aadd( txt_, "" )
aadd( txt_, "METHOD " + cWidget + ":" + mth_[ i, 1 ] )
IF "..." $ mth_[ i, 1 ]
aadd( txt_, " LOCAL p" )
aadd( txt_, " FOR EACH p IN { ... }" )
aadd( txt_, " hb_pvalue( p:__enumIndex(), hbqt_ptr( p ) )" )
aadd( txt_, " NEXT" )
ENDIF
aadd( txt_, " RETURN " + ParsePtr( mth_[ i, 2 ] ) )
aadd( txt_, "" )
NEXT