1 // -*- mode: C++ -*- 2 // 3 // Copyright (c) 2007, 2008, 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 UTIL_H 31 #define UTIL_H 32 33 /////////////////////////////////////////////////////////////////////////////// 34 35 #include <string> 36 #include <vector> 37 #include <ostream> 38 39 typedef std::vector<int> intvec; 40 41 std::string gensym(const char *basename); 42 std::string gensym(const std::string &basename); 43 void reset_gensym(); 44 std::vector<intvec> permute(intvec in); 45 int expand_within_ranges(std::vector<unsigned int>, std::vector<intvec>& out); 46 void outputln(std::ostream &out); 47 void really_outputln(std::ostream &out); 48 void output_comment_line(std::ostream &out, const std::string &comment); 49 void output_tab(std::ostream &out, int indent); 50 void output_print_str(std::ostream& out, std::string str, std::string str_value, int indent); 51 void output_open_encloser(const char* symbol, std::ostream &out, int& indent); 52 void output_close_encloser(const char* symbol, std::ostream &out, int& indent, bool no_newline = false); 53 54 /////////////////////////////////////////////////////////////////////////////// 55 56 #endif // UTIL_H 57 58 // Local Variables: 59 // c-basic-offset: 4 60 // tab-width: 4 61 // End: 62 63 // End of file. 64