Description: Improve ability of test suite sources to build
 The test suite relies on a hackish CPP trick to redefine "private" as
 "public". Unfortunately, this fails when including headers from the standard
 library or other external sources. These patches undo the trick before
 including external headers. Again unfortunately, this isn't sufficient to
 allow the test suite to build because the pbbam headers themselves also
 include external headers. It looks like some refactoring is in order.
Author: Afif Elghraoui <afif@ghraoui.name>
Forwarded: no
Last-Update: 2015-09-07
--- pbbam.orig/tests/src/test_Accuracy.cpp
+++ pbbam/tests/src/test_Accuracy.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/Accuracy.h>
+#undef private
+#include <gtest/gtest.h>
+
 using namespace PacBio;
 using namespace PacBio::BAM;
 using namespace std;
--- pbbam.orig/tests/src/test_AlignmentPrinter.cpp
+++ pbbam/tests/src/test_AlignmentPrinter.cpp
@@ -40,7 +40,6 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
 
 #include "pbbam/AlignmentPrinter.h"
 #include "pbbam/BamFile.h"
@@ -48,6 +47,10 @@
 #include "pbbam/EntireFileQuery.h"
 #include "pbbam/IndexedFastaReader.h"
 
+#undef private
+
+#include <gtest/gtest.h>
+
 #include <iostream>
 #include <sstream>
 #include <string>
--- pbbam.orig/tests/src/test_BamFile.cpp
+++ pbbam/tests/src/test_BamFile.cpp
@@ -40,8 +40,11 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
 #include <pbbam/BamFile.h>
+
+#undef private
+
+#include <gtest/gtest.h>
 #include <stdexcept>
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_BamHeader.cpp
+++ pbbam/tests/src/test_BamHeader.cpp
@@ -39,9 +39,11 @@
 #define private public
 #endif
 
+#include <pbbam/BamHeader.h>
+#undef private
+
 #include <gtest/gtest.h>
 #include <htslib/sam.h>
-#include <pbbam/BamHeader.h>
 #include <iostream>
 #include <string>
 #include <utility>
--- pbbam.orig/tests/src/test_BamRecord.cpp
+++ pbbam/tests/src/test_BamRecord.cpp
@@ -39,9 +39,11 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/BamRecord.h>
 #include <pbbam/BamTagCodec.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_BamRecordBuilder.cpp
+++ pbbam/tests/src/test_BamRecordBuilder.cpp
@@ -39,9 +39,11 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/BamRecordBuilder.h>
 #include <pbbam/BamTagCodec.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <chrono>
 #include <string>
 using namespace PacBio;
--- pbbam.orig/tests/src/test_BamRecordClipping.cpp
+++ pbbam/tests/src/test_BamRecordClipping.cpp
@@ -39,9 +39,11 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/BamRecord.h>
 #include <pbbam/BamTagCodec.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <chrono>
 #include <string>
 using namespace PacBio;
--- pbbam.orig/tests/src/test_BamRecordImplCore.cpp
+++ pbbam/tests/src/test_BamRecordImplCore.cpp
@@ -39,11 +39,13 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/BamRecordImpl.h>
 #include <pbbam/BamTagCodec.h>
 #include <pbbam/Tag.h>
 #include <pbbam/TagCollection.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <algorithm>
 #include <iostream>
 #include <iterator>
--- pbbam.orig/tests/src/test_BamRecordImplTags.cpp
+++ pbbam/tests/src/test_BamRecordImplTags.cpp
@@ -39,8 +39,11 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/BamRecordImpl.h>
+#undef private
+
+#include <gtest/gtest.h>
+
 using namespace PacBio;
 using namespace PacBio::BAM;
 using namespace std;
--- pbbam.orig/tests/src/test_BamRecordImplVariableData.cpp
+++ pbbam/tests/src/test_BamRecordImplVariableData.cpp
@@ -39,12 +39,14 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/BamRecordImpl.h>
 #include <pbbam/BamTagCodec.h>
 #include <pbbam/SamTagCodec.h>
 #include <pbbam/Tag.h>
 #include <pbbam/TagCollection.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <algorithm>
 #include <iostream>
 #include <iterator>
--- pbbam.orig/tests/src/test_BamRecordMapping.cpp
+++ pbbam/tests/src/test_BamRecordMapping.cpp
@@ -39,9 +39,11 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/BamRecord.h>
 #include <pbbam/BamTagCodec.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <chrono>
 #include <string>
 using namespace PacBio;
--- pbbam.orig/tests/src/test_BamWriter.cpp
+++ pbbam/tests/src/test_BamWriter.cpp
@@ -40,12 +40,14 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
-#include <htslib/sam.h>
 #include <pbbam/BamHeader.h>
 #include <pbbam/BamRecord.h>
 #include <pbbam/BamWriter.h>
 #include <pbbam/EntireFileQuery.h>
+#undef private
+
+#include <gtest/gtest.h>
+#include <htslib/sam.h>
 #include <chrono>
 #include <iostream>
 #include <string>
--- pbbam.orig/tests/src/test_Cigar.cpp
+++ pbbam/tests/src/test_Cigar.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/Cigar.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_DataSetCore.cpp
+++ pbbam/tests/src/test_DataSetCore.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/DataSet.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_DataSetIO.cpp
+++ pbbam/tests/src/test_DataSetIO.cpp
@@ -40,9 +40,11 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
 #include <pbbam/DataSet.h>
 #include <pbbam/internal/DataSetElement.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <stdexcept>
 #include <sstream>
 #include <string>
--- pbbam.orig/tests/src/test_DataSetMetadata.cpp
+++ pbbam/tests/src/test_DataSetMetadata.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/dataset/DataSet.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_EndToEnd.cpp
+++ pbbam/tests/src/test_EndToEnd.cpp
@@ -41,11 +41,14 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
-#include <htslib/sam.h>
 #include <pbbam/BamFile.h>
 #include <pbbam/BamWriter.h>
 #include <pbbam/EntireFileQuery.h>
+#undef private
+#undef protected
+
+#include <gtest/gtest.h>
+#include <htslib/sam.h>
 #include <iostream>
 #include <memory>
 #include <string>
--- pbbam.orig/tests/src/test_EntireFileQuery.cpp
+++ pbbam/tests/src/test_EntireFileQuery.cpp
@@ -40,8 +40,10 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
 #include <pbbam/EntireFileQuery.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_Frames.cpp
+++ pbbam/tests/src/test_Frames.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/Frames.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 #include <vector>
 using namespace PacBio;
--- pbbam.orig/tests/src/test_GenomicIntervalQuery.cpp
+++ pbbam/tests/src/test_GenomicIntervalQuery.cpp
@@ -40,8 +40,10 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
 #include <pbbam/GenomicIntervalQuery.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <iostream>
 #include <string>
 using namespace PacBio;
--- pbbam.orig/tests/src/test_GroupQuery.cpp
+++ pbbam/tests/src/test_GroupQuery.cpp
@@ -40,9 +40,11 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
 #include <pbbam/ZmwGroupQuery.h>
 #include <pbbam/GroupQuery.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_IndexedFastaReader.cpp
+++ pbbam/tests/src/test_IndexedFastaReader.cpp
@@ -44,6 +44,8 @@
 #include "pbbam/BamRecord.h"
 #include "pbbam/BamFile.h"
 #include "pbbam/EntireFileQuery.h"
+#undef private
+
 #include <gtest/gtest.h>
 #include <iostream>
 #include <sstream>
--- pbbam.orig/tests/src/test_Intervals.cpp
+++ pbbam/tests/src/test_Intervals.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/GenomicInterval.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_PacBioIndex.cpp
+++ pbbam/tests/src/test_PacBioIndex.cpp
@@ -40,7 +40,6 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
 #include <pbbam/BamFile.h>
 #include <pbbam/BamWriter.h>
 #include <pbbam/EntireFileQuery.h>
@@ -48,6 +47,9 @@
 #include <pbbam/PbiIndex.h>
 #include <pbbam/PbiRawData.h>
 #include <pbbam/internal/PbiIndex_p.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 #include <cstdio>
 #include <cstdlib>
--- pbbam.orig/tests/src/test_PolymeraseStitching.cpp
+++ pbbam/tests/src/test_PolymeraseStitching.cpp
@@ -39,18 +39,19 @@
 #define private public
 #endif
 
-#include <iostream>
-#include <map>
-#include <string>
-
-#include <gtest/gtest.h>
-
 #include "pbbam/virtual/VirtualPolymeraseReader.h"
 #include "pbbam/BamFile.h"
 #include "pbbam/BamRecord.h"
 #include "pbbam/EntireFileQuery.h"
 #include "pbbam/Frames.h"
 #include "TestData.h"
+#undef private
+
+#include <iostream>
+#include <map>
+#include <string>
+
+#include <gtest/gtest.h>
 
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_QualityValues.cpp
+++ pbbam/tests/src/test_QualityValues.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/QualityValues.h>
+#undef private
+
+#include <gtest/gtest.h>
 using namespace PacBio;
 using namespace PacBio::BAM;
 using namespace std;
--- pbbam.orig/tests/src/test_ReadGroupInfo.cpp
+++ pbbam/tests/src/test_ReadGroupInfo.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/ReadGroupInfo.h>
+#undef private
+
+#include <gtest/gtest.h>
 using namespace PacBio::BAM;
 
 
--- pbbam.orig/tests/src/test_SequenceUtils.cpp
+++ pbbam/tests/src/test_SequenceUtils.cpp
@@ -39,9 +39,11 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/../../src/SequenceUtils.h>
 #include <pbbam/../../src/StringUtils.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 #include <vector>
 
--- pbbam.orig/tests/src/test_Tags.cpp
+++ pbbam/tests/src/test_Tags.cpp
@@ -39,11 +39,13 @@
 #define private public
 #endif
 
-#include <boost/type_traits/is_convertible.hpp>
-#include <gtest/gtest.h>
 #include <pbbam/BamTagCodec.h>
 #include <pbbam/TagCollection.h>
 #include <pbbam/SamTagCodec.h>
+#undef private
+
+#include <boost/type_traits/is_convertible.hpp>
+#include <gtest/gtest.h>
 #include <algorithm>
 #include <iostream>
 #include <map>
--- pbbam.orig/tests/src/test_TimeUtils.cpp
+++ pbbam/tests/src/test_TimeUtils.cpp
@@ -39,8 +39,10 @@
 #define private public
 #endif
 
-#include <gtest/gtest.h>
 #include <pbbam/../../src/TimeUtils.h>
+#undef private
+
+#include <gtest/gtest.h>
 
 using namespace PacBio;
 using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_UnmappedReadsQuery.cpp
+++ pbbam/tests/src/test_UnmappedReadsQuery.cpp
@@ -40,10 +40,11 @@
 //#endif
 
 //#include "TestData.h"
-//#include <gtest/gtest.h>
 //#include <pbbam/EntireFileQuery.h>
-
 //#include <pbbam/UnmappedReadsQuery.h>
+//#undef private
+
+//#include <gtest/gtest.h>
 //#include <string>
 //using namespace PacBio;
 //using namespace PacBio::BAM;
--- pbbam.orig/tests/src/test_ZmwQuery.cpp
+++ pbbam/tests/src/test_ZmwQuery.cpp
@@ -40,8 +40,10 @@
 #endif
 
 #include "TestData.h"
-#include <gtest/gtest.h>
 #include <pbbam/ZmwQuery.h>
+#undef private
+
+#include <gtest/gtest.h>
 #include <string>
 using namespace PacBio;
 using namespace PacBio::BAM;
