1 // -*- mode: C++ -*- 2 // 3 // Copyright (c) 2007, 2008, 2009, 2010, 2011, 2015 The University of Utah 4 // All rights reserved. 5 // 6 // This file is part of `csmith', a random generator of C programs. 7 // 8 // Redistribution and use in source and binary forms, with or without 9 // modification, are permitted provided that the following conditions are met: 10 // 11 // * Redistributions of source code must retain the above copyright notice, 12 // this list of conditions and the following disclaimer. 13 // 14 // * Redistributions in binary form must reproduce the above copyright 15 // notice, this list of conditions and the following disclaimer in the 16 // documentation and/or other materials provided with the distribution. 17 // 18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 // POSSIBILITY OF SUCH DAMAGE. 29 30 #ifndef DFS_OUTPUT_MGR_H 31 #define DFS_OUTPUT_MGR_H 32 33 #include "OutputMgr.h" 34 35 #define DEFAULT_STRUCT_OUTPUT "csmith_structs.h" 36 37 class DFSOutputMgr : public OutputMgr { 38 public: 39 static DFSOutputMgr *CreateInstance(); 40 41 virtual ~DFSOutputMgr(); 42 43 virtual void OutputHeader(int argc, char *argv[], unsigned long seed); 44 45 virtual void OutputStructUnions(ostream& /*out*/); 46 47 virtual void Output(); 48 49 virtual void outputln(ostream &out); 50 51 virtual void output_comment_line(ostream &out, const std::string &comment); 52 53 virtual void output_tab(ostream &out, int indent); 54 55 private: 56 DFSOutputMgr(); 57 58 virtual std::ostream &get_main_out(); 59 60 static DFSOutputMgr *instance_; 61 62 std::string struct_output_; 63 }; 64 65 #endif // DFS_OUTPUT_MGR_H 66