int MinosTestExport::exportAllDetails( HANDLE minosContestFile, bool newfile )
{
   stanzaCount = 0;
   if ( newfile )
   {
      //      std::string lbuff = "<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' version='1.0'>" ;
      std::string lbuff = "<?xml version='1.0'?><stream:stream xmlns:stream='http://minos.goodey.org.uk/streams' xmlns='minos:client' version='1.0'>" ;
      lbuff += "\r\n" + fileHeader;
      DWORD ret = 0;
      bool res = WriteFile( minosContestFile, lbuff.c_str(), lbuff.length(), &ret, 0 );
      if ( !res || ret != lbuff.length() )
      {
         MinosParameters::getMinosParameters() ->mshowMessage( "bad reply from write!" );
      }
   }
   exportMode( minosContestFile );
   exportContest( minosContestFile );
   exportQTH( minosContestFile );
   exportEntry( minosContestFile );
   exportStation( minosContestFile );
   exportCurrent( minosContestFile );
   exportOperators( minosContestFile );
   exportBundles( minosContestFile );

   return stanzaCount;
}
// AND we need an export operator change
int MinosTestExport::exportTest( HANDLE expfd, int mindump, int maxdump )
{
   stanzaCount = 0;
   std::string lbuff = "<?xml version='1.0'?><stream:stream xmlns:stream='http://minos.goodey.org.uk/streams' xmlns='minos:client' version='1.0'>" ;
   lbuff += "\r\n" + fileHeader;
   DWORD ret = 0;
   bool res = WriteFile( expfd, lbuff.c_str(), lbuff.length(), &ret, 0 );
   if ( !res || ret != lbuff.length() )
   {
      MinosParameters::getMinosParameters() ->mshowMessage( "bad reply from write!" );
   }

   // export a sequence of Minos stanzas

   // Don't want to export Minos as read only!
   bool wasRO = ct->readOnly.getValue();

   ct->readOnly.setValue( false );

   exportMode( expfd );

   ct->readOnly.setValue( wasRO );

   exportContest( expfd );
   exportQTH( expfd );
   exportEntry( expfd );
   exportStation( expfd );
   exportCurrent( expfd );
   exportOperators( expfd );     // not right... we need to log op changes
   exportBundles( expfd );

   bool inDump = false;
   for ( unsigned int i = 0; i < ct->ctList.size(); i++ )
   {
      BaseContact *dct = ct->ctList[ i ];
      ContestContact *lct = dynamic_cast<ContestContact *>( dct );

      if ( inDump && lct->contactFlags.getValue() & ( LOCAL_COMMENT | COMMENT_ONLY ) )
      {
         exportComment( expfd, lct );
         continue;
      }

      int serials = atoi( lct->serials.getValue().c_str() );
      // dump the contact, until serial seen

      if ( ( serials >= mindump ) || ( mindump == 0 ) )
         inDump = true;

      if ( inDump && ( serials <= maxdump ) )
      {
         exportQSO( expfd, lct );
      }

      // Cannot assume that all serials are in order, so we need to go through
      // the whole contest
   }

   return stanzaCount;
}
void DatabaseExporter::exportDatabase (FlashcardsDeck* exportTo, VariableStackState exportArguments)
{
	for (shared_ptr <SimpleFlashcard> e: database->entries)
    {
        e->setFallbackVariableStackState (exportArguments);
		exportEntry (exportTo, e.get());
        e->removeFallbackVariableStackState();
    }
}