// This file is part of BULL, a program for phylogenetic simulations // most of the code was written by Mark T. Holder. // It is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // // Some of the code is from publically available source by Paul Lewis, Ziheng Yang, // John Huelsenbeck, David Swofford , and others (as noted in the code). // In fact the main structure of the program was created by modifying Paul Lewis' // basiccmdline.cpp from his NCL // // This code was used in Mark's dissertation, some changes were made in order to // get it to compile on gcc. It is possible that this porting introduced bugs (very // little debugging has been done on UNIX platforms). I would suggest checking // the simulator by generating data on trees with short branches, etc. // This file is part of BULL, a program for phylogenetic simulations // most of the code was written by Mark T. Holder. // It is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // // Some of the code is from publically available source by Paul Lewis, Ziheng Yang, // John Huelsenbeck, David Swofford , and others (as noted in the code). // In fact the main structure of the program was created by modifying Paul Lewis' // basiccmdline.cpp from his NCL // // This code was used in Mark's dissertation, some changes were made in order to // get it to compile on gcc. It is possible that this porting introduced bugs (very // little debugging has been done on UNIX platforms). I would suggest checking // the simulator by generating data on trees with short branches, etc. #ifndef MYNEXUS_H #define MYNEXUS_H #include #include #if defined HAVE_CONFIG_H && HAVE_CONFIG_H # include #endif #include "nexus_defs.hpp" #include "nexus_token.hpp" #include "nexus.hpp" #include "taxa_block.hpp" #include "trees_block.hpp" #include "xbull.hpp" class MyNexus : public Nexus { struct NoDataFile { }; public: std::ofstream outf; Nexus *parentNexus; MyNexus(Nexus *pb) { parentNexus=pb; } bool FileExists( char* fn ); void ExecuteStarting() {parentNexus->ExecuteStarting();} void ExecuteStopping() {parentNexus->ExecuteStarting();} void OutputComment( std::string s ) { parentNexus->OutputComment(s); } void EnteringBlock( std::string blockName ) { parentNexus->EnteringBlock(blockName); } void SkippingBlock(const std::string & blockName ) const { parentNexus->SkippingBlock(blockName); } void DebugReportBlock( NexusBlock& nexusBlock ) { parentNexus->DebugReportBlock(nexusBlock); } void NexusError(const std::string& msg, std::istream::pos_type pos, long line, long col ) { parentNexus->NexusError(msg, pos, line, col); } }; #endif