summaryrefslogtreecommitdiffstats
path: root/kstars/kstars/kstarsdata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kstars/kstars/kstarsdata.cpp')
-rw-r--r--kstars/kstars/kstarsdata.cpp156
1 files changed, 78 insertions, 78 deletions
diff --git a/kstars/kstars/kstarsdata.cpp b/kstars/kstars/kstarsdata.cpp
index 4d5ff70a..d12ddca1 100644
--- a/kstars/kstars/kstarsdata.cpp
+++ b/kstars/kstars/kstarsdata.cpp
@@ -88,7 +88,7 @@ KStarsData::KStarsData() : stdDirs(0), locale(0),
//initialize FOV symbol
fovSymbol = FOV();
- //set AutoDelete property for QPtrLists. Most are set TRUE,
+ //set AutoDelete property for TQPtrLists. Most are set TRUE,
//but some 'meta-lists' need to be FALSE.
starList.setAutoDelete( TRUE );
ADVtreeList.setAutoDelete( TRUE );
@@ -226,17 +226,17 @@ bool KStarsData::readADVTreeData(void)
else
{
- Name = Line.mid(0, Line.find(":"));
- Link = Line.mid(Line.find(":") + 1);
+ Name = Line.mid(0, Line.tqfind(":"));
+ Link = Line.mid(Line.tqfind(":") + 1);
// Link is empty, using Interface instead
if (Link.isEmpty())
{
Link = Interface;
subName = Name;
- interfaceIndex = Link.find("KSINTERFACE");
+ interfaceIndex = Link.tqfind("KSINTERFACE");
Link.remove(interfaceIndex, 11);
- Link = Link.insert(interfaceIndex, subName.replace( TQRegExp(" "), "+"));
+ Link = Link.insert(interfaceIndex, subName.tqreplace( TQRegExp(" "), "+"));
}
@@ -433,7 +433,7 @@ bool KStarsData::readCLineData( void ) {
}
if ( ! starFound )
- kdWarning() << i18n( "No star named %1 found." ).arg(name) << endl;
+ kdWarning() << i18n( "No star named %1 found." ).tqarg(name) << endl;
}
}
file.close();
@@ -584,7 +584,7 @@ bool KStarsData::readStarData( void ) {
if (Options::magLimitDrawStar() > loadUntilMag) loadUntilMag = Options::magLimitDrawStar();
for (unsigned int i=1; i<NHIPFILES+1; ++i) {
- emit progressText( i18n( "Loading Star Data (%1%)" ).arg( int(100.*float(i)/float(NHIPFILES)) ) );
+ emit progressText( i18n( "Loading Star Data (%1%)" ).tqarg( int(100.*float(i)/float(NHIPFILES)) ) );
if (openStarFile(i) == true) {
while (starFileReader->hasMoreLines()) {
@@ -664,9 +664,9 @@ void KStarsData::processStar( TQString *line, bool reloadMode ) {
//parse name(s)
name = line->mid( 72 ).stripWhiteSpace(); //the rest of the line
- if (name.contains( ':' )) { //genetive form exists
- gname = name.mid( name.find(':')+1 ).stripWhiteSpace();
- name = name.mid( 0, name.find(':') ).stripWhiteSpace();
+ if (name.tqcontains( ':' )) { //genetive form exists
+ gname = name.mid( name.tqfind(':')+1 ).stripWhiteSpace();
+ name = name.mid( 0, name.tqfind(':') ).stripWhiteSpace();
}
// HEV: look up star name in internationalization filesource
@@ -788,7 +788,7 @@ bool KStarsData::readDeepSkyData( void ) {
snum = TQString().sprintf( "%02d", i+1 );
fname = "ngcic" + snum + ".dat";
- emit progressText( i18n( "Loading NGC/IC Data (%1%)" ).arg( int(100.*float(i)/float(NNGCFILES)) ) );
+ emit progressText( i18n( "Loading NGC/IC Data (%1%)" ).tqarg( int(100.*float(i)/float(NNGCFILES)) ) );
if ( KSUtils::openDataFile( file, fname ) ) {
KSFileReader fileReader( file ); // close file is included
@@ -939,7 +939,7 @@ bool KStarsData::openURLFile(TQString urlfile, TQFile & file) {
file.setName( locateLocal( "appdata", urlfile ) );
if ( file.open( IO_ReadOnly ) ) {
//local file found. Now, if global file has newer timestamp, then merge the two files.
- //First load local file into QStringList
+ //First load local file into TQStringList
bool newDataFound( false );
TQStringList urlData;
TQTextStream lStream( &file );
@@ -964,14 +964,14 @@ bool KStarsData::openURLFile(TQString urlfile, TQFile & file) {
TQString line = gStream.readLine();
//If global-file line begins with "XXX:" then this line should be removed from the local file.
- if ( line.left( 4 ) == "XXX:" && urlData.contains( line.mid( 4 ) ) ) {
- urlData.remove( urlData.find( line.mid( 4 ) ) );
+ if ( line.left( 4 ) == "XXX:" && urlData.tqcontains( line.mid( 4 ) ) ) {
+ urlData.remove( urlData.tqfind( line.mid( 4 ) ) );
} else {
//does local file contain the current global file line, up to second ':' ?
bool linefound( false );
for ( unsigned int j=0; j< urlData.count(); ++j ) {
- if ( urlData[j].contains( line.left( line.find( ':', line.find( ':' ) + 1 ) ) ) ) {
+ if ( urlData[j].tqcontains( line.left( line.tqfind( ':', line.tqfind( ':' ) + 1 ) ) ) ) {
//replace line in urlData with its equivalent in the newer global file.
urlData.remove( urlData.at(j) );
urlData.insert( urlData.at(j), line );
@@ -1047,21 +1047,21 @@ bool KStarsData::readUserLog(void)
while (!buffer.isEmpty()) {
int startIndex, endIndex;
- startIndex = buffer.find("[KSLABEL:");
+ startIndex = buffer.tqfind("[KSLABEL:");
sub = buffer.mid(startIndex);
- endIndex = sub.find("[KSLogEnd]");
+ endIndex = sub.tqfind("[KSLogEnd]");
// Read name after KSLABEL identifer
- uint uiFirstNewline = sub.find("\n", startIndex + 9);
- name = sub.mid(startIndex + 9, sub.findRev( "]", uiFirstNewline ) - (startIndex + 9) );
+ uint uiFirstNewline = sub.tqfind("\n", startIndex + 9);
+ name = sub.mid(startIndex + 9, sub.tqfindRev( "]", uiFirstNewline ) - (startIndex + 9) );
// Read data and skip new line
data = sub.mid( uiFirstNewline + 1, endIndex - (uiFirstNewline + 1));
buffer = buffer.mid(endIndex + 11);
//Find the sky object named 'name'.
- //Note that ObjectNameList::find() looks for the ascii representation
+ //Note that ObjectNameList::tqfind() looks for the ascii representation
//of star genetive names, so stars are identified that way in the user log.
- SkyObjectName *sonm = ObjNames.find(name);
+ SkyObjectName *sonm = ObjNames.tqfind(name);
if (sonm == 0) {
kdWarning() << k_funcinfo << name << " not found" << endl;
} else {
@@ -1084,12 +1084,12 @@ bool KStarsData::readURLData( TQString urlfile, int type, bool deepOnly ) {
//ignore comment lines
if ( line.left(1) != "#" ) {
- TQString name = line.mid( 0, line.find(':') );
- TQString sub = line.mid( line.find(':')+1 );
- TQString title = sub.mid( 0, sub.find(':') );
- TQString url = sub.mid( sub.find(':')+1 );
+ TQString name = line.mid( 0, line.tqfind(':') );
+ TQString sub = line.mid( line.tqfind(':')+1 );
+ TQString title = sub.mid( 0, sub.tqfind(':') );
+ TQString url = sub.mid( sub.tqfind(':')+1 );
- SkyObjectName *sonm = ObjNames.find(name);
+ SkyObjectName *sonm = ObjNames.tqfind(name);
if (sonm == 0) {
kdWarning() << k_funcinfo << name << " not found" << endl;
@@ -1142,7 +1142,7 @@ bool KStarsData::addCatalog( TQString filename ) {
return true;
} else
- kdWarning() << k_funcinfo << i18n("Error adding catalog: %1").arg( filename ) << endl;
+ kdWarning() << k_funcinfo << i18n("Error adding catalog: %1").tqarg( filename ) << endl;
return false;
}
@@ -1196,7 +1196,7 @@ CustomCatalog* KStarsData::createCustomCatalog( TQString filename, bool showerrs
//Now, if one of the columns is the "Name" field, the name may contain spaces.
//In this case, the name field will need to be surrounded by quotes.
//Check for this, and adjust the d list accordingly
- int iname = Columns.findIndex( "Nm" );
+ int iname = Columns.tqfindIndex( "Nm" );
if ( iname >= 0 && d[iname].left(1) == "\"" ) { //multi-word name in quotes
d[iname] = d[iname].mid(1); //remove leading quote
//It's possible that the name is one word, but still in quotes
@@ -1220,7 +1220,7 @@ CustomCatalog* KStarsData::createCustomCatalog( TQString filename, bool showerrs
if ( d.count() == Columns.count() ) {
processCustomDataLine( i, d, Columns, CatalogPrefix, objList, showerrs, errs );
} else {
- if ( showerrs ) errs.append( i18n( "Line %1 does not contain %2 fields. Skipping it." ).arg( i ).arg( Columns.count() ) );
+ if ( showerrs ) errs.append( i18n( "Line %1 does not contain %2 fields. Skipping it." ).tqarg( i ).tqarg( Columns.count() ) );
}
}
}
@@ -1246,10 +1246,10 @@ CustomCatalog* KStarsData::createCustomCatalog( TQString filename, bool showerrs
} else { //Error opening catalog file
if ( showerrs )
- KMessageBox::sorry( 0, i18n( "Could not open custom data file: %1" ).arg( filename ),
+ KMessageBox::sorry( 0, i18n( "Could not open custom data file: %1" ).tqarg( filename ),
i18n( "Error opening file" ) );
else
- kdDebug() << i18n( "Could not open custom data file: %1" ).arg( filename ) << endl;
+ kdDebug() << i18n( "Could not open custom data file: %1" ).tqarg( filename ) << endl;
}
//Return the catalog
@@ -1280,7 +1280,7 @@ bool KStarsData::processCustomDataLine( int lnum, TQStringList d, TQStringList C
if ( ! RA.setFromString( d[i], false ) ) {
if ( showerrs )
errs.append( i18n( "Line %1, field %2: Unable to parse RA value: %3" )
- .arg(lnum).arg(i).arg(d[i]) );
+ .tqarg(lnum).tqarg(i).tqarg(d[i]) );
return false;
}
}
@@ -1289,7 +1289,7 @@ bool KStarsData::processCustomDataLine( int lnum, TQStringList d, TQStringList C
if ( ! Dec.setFromString( d[i], true ) ) {
if ( showerrs )
errs.append( i18n( "Line %1, field %2: Unable to parse Dec value: %3" )
- .arg(lnum).arg(i).arg(d[i]) );
+ .tqarg(lnum).tqarg(i).tqarg(d[i]) );
return false;
}
}
@@ -1301,14 +1301,14 @@ bool KStarsData::processCustomDataLine( int lnum, TQStringList d, TQStringList C
if ( iType == 2 || iType > 8 ) {
if ( showerrs )
errs.append( i18n( "Line %1, field %2: Invalid object type: %3" )
- .arg(lnum).arg(i).arg(d[i]) +
+ .tqarg(lnum).tqarg(i).tqarg(d[i]) +
i18n( "Must be one of 0, 1, 3, 4, 5, 6, 7, 8." ) );
return false;
}
} else {
if ( showerrs )
errs.append( i18n( "Line %1, field %2: Unable to parse Object type: %3" )
- .arg(lnum).arg(i).arg(d[i]) );
+ .tqarg(lnum).tqarg(i).tqarg(d[i]) );
return false;
}
}
@@ -1319,7 +1319,7 @@ bool KStarsData::processCustomDataLine( int lnum, TQStringList d, TQStringList C
if ( ! ok ) {
if ( showerrs )
errs.append( i18n( "Line %1, field %2: Unable to parse Magnitude: %3" )
- .arg(lnum).arg(i).arg(d[i]) );
+ .tqarg(lnum).tqarg(i).tqarg(d[i]) );
return false;
}
}
@@ -1330,7 +1330,7 @@ bool KStarsData::processCustomDataLine( int lnum, TQStringList d, TQStringList C
if ( ! ok ) {
if ( showerrs )
errs.append( i18n( "Line %1, field %2: Unable to parse Major Axis: %3" )
- .arg(lnum).arg(i).arg(d[i]) );
+ .tqarg(lnum).tqarg(i).tqarg(d[i]) );
return false;
}
}
@@ -1341,7 +1341,7 @@ bool KStarsData::processCustomDataLine( int lnum, TQStringList d, TQStringList C
if ( ! ok ) {
if ( showerrs )
errs.append( i18n( "Line %1, field %2: Unable to parse Minor Axis: %3" )
- .arg(lnum).arg(i).arg(d[i]) );
+ .tqarg(lnum).tqarg(i).tqarg(d[i]) );
return false;
}
}
@@ -1352,7 +1352,7 @@ bool KStarsData::processCustomDataLine( int lnum, TQStringList d, TQStringList C
if ( ! ok ) {
if ( showerrs )
errs.append( i18n( "Line %1, field %2: Unable to parse Position Angle: %3" )
- .arg(lnum).arg(i).arg(d[i]) );
+ .tqarg(lnum).tqarg(i).tqarg(d[i]) );
return false;
}
}
@@ -1388,57 +1388,57 @@ bool KStarsData::parseCustomDataHeader( TQStringList lines, TQStringList &Column
TQString d( *it ); //current data line
if ( d.left(1) != "#" ) break; //no longer in header!
- int iname = d.find( "# Name: " );
- int iprefix = d.find( "# Prefix: " );
- int icolor = d.find( "# Color: " );
- int iepoch = d.find( "# Epoch: " );
+ int iname = d.tqfind( "# Name: " );
+ int iprefix = d.tqfind( "# Prefix: " );
+ int icolor = d.tqfind( "# Color: " );
+ int iepoch = d.tqfind( "# Epoch: " );
if ( iname == 0 ) { //line contains catalog name
- iname = d.find(":")+2;
+ iname = d.tqfind(":")+2;
if ( CatalogName.isEmpty() ) {
CatalogName = d.mid( iname );
} else { //duplicate name in header
if ( showerrs )
errs.append( i18n( "Parsing header: " ) +
- i18n( "Extra Name field in header: %1. Will be ignored" ).arg( d.mid(iname) ) );
+ i18n( "Extra Name field in header: %1. Will be ignored" ).tqarg( d.mid(iname) ) );
}
} else if ( iprefix == 0 ) { //line contains catalog prefix
- iprefix = d.find(":")+2;
+ iprefix = d.tqfind(":")+2;
if ( CatalogPrefix.isEmpty() ) {
CatalogPrefix = d.mid( iprefix );
} else { //duplicate prefix in header
if ( showerrs )
errs.append( i18n( "Parsing header: " ) +
- i18n( "Extra Prefix field in header: %1. Will be ignored" ).arg( d.mid(iprefix) ) );
+ i18n( "Extra Prefix field in header: %1. Will be ignored" ).tqarg( d.mid(iprefix) ) );
}
} else if ( icolor == 0 ) { //line contains catalog prefix
- icolor = d.find(":")+2;
+ icolor = d.tqfind(":")+2;
if ( CatalogColor.isEmpty() ) {
CatalogColor = d.mid( icolor );
} else { //duplicate prefix in header
if ( showerrs )
errs.append( i18n( "Parsing header: " ) +
- i18n( "Extra Color field in header: %1. Will be ignored" ).arg( d.mid(icolor) ) );
+ i18n( "Extra Color field in header: %1. Will be ignored" ).tqarg( d.mid(icolor) ) );
}
} else if ( iepoch == 0 ) { //line contains catalog epoch
- iepoch = d.find(":")+2;
+ iepoch = d.tqfind(":")+2;
if ( CatalogEpoch == 0. ) {
bool ok( false );
CatalogEpoch = d.mid( iepoch ).toFloat( &ok );
if ( !ok ) {
if ( showerrs )
errs.append( i18n( "Parsing header: " ) +
- i18n( "Could not convert Epoch to float: %1. Using 2000. instead" ).arg( d.mid(iepoch) ) );
+ i18n( "Could not convert Epoch to float: %1. Using 2000. instead" ).tqarg( d.mid(iepoch) ) );
CatalogEpoch = 2000.; //adopt default value
}
} else { //duplicate epoch in header
if ( showerrs )
errs.append( i18n( "Parsing header: " ) +
- i18n( "Extra Epoch field in header: %1. Will be ignored" ).arg( d.mid(iepoch) ) );
+ i18n( "Extra Epoch field in header: %1. Will be ignored" ).tqarg( d.mid(iepoch) ) );
}
} else if ( ! foundDataColumns ) { //don't try to parse data column descriptors if we already found them
//Chomp off leading "#" character
- d = d.replace( TQRegExp( "#" ), "" );
+ d = d.tqreplace( TQRegExp( "#" ), "" );
TQStringList fields = TQStringList::split( " ", d ); //split on whitespace
@@ -1452,26 +1452,26 @@ bool KStarsData::parseCustomDataHeader( TQStringList lines, TQStringList &Column
for ( ; itf != itfEnd; itf++ ) {
TQString s( *itf );
- if ( master.contains( s ) ) {
+ if ( master.tqcontains( s ) ) {
//add the data field
Columns.append( s );
// remove the field from the master list and inc the
// count of "good" columns (unless field is "Ignore")
if ( s != "Ig" ) {
- master.remove( master.find( s ) );
+ master.remove( master.tqfind( s ) );
ncol++;
}
- } else if ( fields.contains( s ) ) { //duplicate field
+ } else if ( fields.tqcontains( s ) ) { //duplicate field
fields.append( "Ig" ); //skip this column
if ( showerrs )
errs.append( i18n( "Parsing header: " ) +
- i18n( "Duplicate data field descriptor \"%1\" will be ignored" ).arg( s ) );
+ i18n( "Duplicate data field descriptor \"%1\" will be ignored" ).tqarg( s ) );
} else { //Invalid field
fields.append( "Ig" ); //skip this column
if ( showerrs )
errs.append( i18n( "Parsing header: " ) +
- i18n( "Invalid data field descriptor \"%1\" will be ignored" ).arg( s ) );
+ i18n( "Invalid data field descriptor \"%1\" will be ignored" ).tqarg( s ) );
}
}
@@ -1514,7 +1514,7 @@ bool KStarsData::parseCustomDataHeader( TQStringList lines, TQStringList &Column
}
//the it iterator now points to the first line past the header
- iStart = lines.findIndex( TQString( *it ) );
+ iStart = lines.tqfindIndex( TQString( *it ) );
return true;
}
}
@@ -1646,10 +1646,10 @@ bool KStarsData::readTimeZoneRulebook( void ) {
if ( line.left(1) != "#" && line.length() ) { //ignore commented and blank lines
TQStringList fields = TQStringList::split( " ", line );
id = fields[0];
- TQTime stime = TQTime( fields[3].left( fields[3].find(':')).toInt() ,
- fields[3].mid( fields[3].find(':')+1, fields[3].length()).toInt() );
- TQTime rtime = TQTime( fields[6].left( fields[6].find(':')).toInt(),
- fields[6].mid( fields[6].find(':')+1, fields[6].length()).toInt() );
+ TQTime stime = TQTime( fields[3].left( fields[3].tqfind(':')).toInt() ,
+ fields[3].mid( fields[3].tqfind(':')+1, fields[3].length()).toInt() );
+ TQTime rtime = TQTime( fields[6].left( fields[6].tqfind(':')).toInt(),
+ fields[6].mid( fields[6].tqfind(':')+1, fields[6].length()).toInt() );
Rulebook[ id ] = TimeZoneRule( fields[1], fields[2], stime, fields[4], fields[5], rtime );
}
@@ -1774,20 +1774,20 @@ void KStarsData::initError(TQString s, bool required = false) {
message = i18n( "The file %1 could not be found. "
"KStars cannot run properly without this file. "
"To continue loading, place the file in one of the "
- "following locations, then press Retry:\n\n" ).arg( s )
- + TQString( "\t$(KDEDIR)/share/apps/kstars/%1\n" ).arg( s )
- + TQString( "\t~/.kde/share/apps/kstars/%1\n\n" ).arg( s )
+ "following locations, then press Retry:\n\n" ).tqarg( s )
+ + TQString( "\t$(KDEDIR)/share/apps/kstars/%1\n" ).tqarg( s )
+ + TQString( "\t~/.kde/share/apps/kstars/%1\n\n" ).tqarg( s )
+ i18n( "Otherwise, press Cancel to shutdown." );
- caption = i18n( "Critical File Not Found: %1" ).arg( s );
+ caption = i18n( "Critical File Not Found: %1" ).tqarg( s );
} else {
message = i18n( "The file %1 could not be found. "
"KStars can still run without this file. "
"However, to avoid seeing this message in the future, you can "
- "place the file in one of the following locations, then press Retry:\n\n" ).arg( s )
- + TQString( "\t$(KDEDIR)/share/apps/kstars/%1\n" ).arg( s )
- + TQString( "\t~/.kde/share/apps/kstars/%1\n\n" ).arg( s )
- + i18n( "Otherwise, press Cancel to continue loading without this file." ).arg( s );
- caption = i18n( "Non-Critical File Not Found: %1" ).arg( s );
+ "place the file in one of the following locations, then press Retry:\n\n" ).tqarg( s )
+ + TQString( "\t$(KDEDIR)/share/apps/kstars/%1\n" ).tqarg( s )
+ + TQString( "\t~/.kde/share/apps/kstars/%1\n\n" ).tqarg( s )
+ + i18n( "Otherwise, press Cancel to continue loading without this file." ).tqarg( s );
+ caption = i18n( "Non-Critical File Not Found: %1" ).tqarg( s );
}
if ( KMessageBox::warningContinueCancel( 0, message, caption, i18n( "Retry" ) ) == KMessageBox::Continue ) {
@@ -1839,7 +1839,7 @@ void KStarsData::slotInitialize() {
case 2: //Load stellar database//
- emit progressText(i18n("Loading Star Data (%1%)" ).arg(0) );
+ emit progressText(i18n("Loading Star Data (%1%)" ).tqarg(0) );
if ( !readStarData( ) )
initError( "hipNNN.dat", true );
if (!readVARData())
@@ -1850,7 +1850,7 @@ void KStarsData::slotInitialize() {
case 3: //Load NGC/IC database and custom catalogs//
- emit progressText( i18n("Loading NGC/IC Data (%1%)" ).arg(0) );
+ emit progressText( i18n("Loading NGC/IC Data (%1%)" ).tqarg(0) );
if ( !readDeepSkyData( ) )
initError( "ngcicN.dat", true );
@@ -2236,7 +2236,7 @@ void KStarsData::setFullTimeUpdate() {
}
void KStarsData::setLocationFromOptions() {
- TQMap<TQString, TimeZoneRule>::Iterator it = Rulebook.find( Options::dST() );
+ TQMap<TQString, TimeZoneRule>::Iterator it = Rulebook.tqfind( Options::dST() );
setLocation( GeoLocation ( Options::longitude(), Options::latitude(),
Options::cityName(), Options::provinceName(), Options::countryName(),
Options::timeZone(), &(it.data()), 4, Options::elevation() ) );
@@ -2345,7 +2345,7 @@ bool KStarsData::executeScript( const TQString &scriptname, SkyMap *map ) {
TQFile f( scriptname );
if ( !f.open( IO_ReadOnly) ) {
- kdDebug() << i18n( "Could not open file %1" ).arg( f.name() ) << endl;
+ kdDebug() << i18n( "Could not open file %1" ).tqarg( f.name() ) << endl;
return false;
}
@@ -2445,7 +2445,7 @@ bool KStarsData::executeScript( const TQString &scriptname, SkyMap *map ) {
cmdCount++;
} else {
kdWarning() << i18n( "Could not set time: %1 / %2 / %3 ; %4:%5:%6" )
- .arg(day).arg(mth).arg(yr).arg(hr).arg(min).arg(sec) << endl;
+ .tqarg(day).tqarg(mth).tqarg(yr).tqarg(hr).tqarg(min).tqarg(sec) << endl;
}
} else if ( fn[0] == "changeViewOption" && fn.count() == 3 ) {
bool bOk(false), nOk(false), dOk(false);
@@ -2559,7 +2559,7 @@ bool KStarsData::executeScript( const TQString &scriptname, SkyMap *map ) {
}
if ( !cityFound )
- kdWarning() << i18n( "Could not set location named %1, %2, %3" ).arg(city).arg(province).arg(country) << endl;
+ kdWarning() << i18n( "Could not set location named %1, %2, %3" ).tqarg(city).tqarg(province).tqarg(country) << endl;
}
}
} //end while