1 // -*- mode: C++ -*- 2 // 3 // Copyright (c) 2007, 2008, 2009, 2010, 2011 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 SEQUENCE_H 31 #define SEQUENCE_H 32 33 #include <map> 34 #include <string> 35 #include <ostream> 36 #include "Common.h" 37 38 class Sequence { 39 public: 40 Sequence(); 41 42 virtual ~Sequence(); 43 44 static Sequence *make_sequence(); 45 46 virtual void init_sequence() = 0; 47 48 virtual unsigned INT64 sequence_length() = 0; 49 50 virtual void add_number(int v, int bound, int k) = 0; 51 52 virtual int get_number(int bound) = 0; 53 54 virtual int get_number_by_pos(int pos) = 0; 55 56 virtual void clear() = 0; 57 58 virtual void get_sequence(std::ostream &out) = 0; 59 60 virtual char get_sep_char() const = 0; 61 }; 62 63 #endif // SEQUENCE_H 64