1#ifndef ROSE_BinaryAnalysis_Concolic_Specimen_H
2#define ROSE_BinaryAnalysis_Concolic_Specimen_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_CONCOLIC_TESTING
5#include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
7#include <boost/filesystem.hpp>
8#include <boost/serialization/access.hpp>
9#include <boost/serialization/nvp.hpp>
10#include <Sawyer/SharedObject.h>
11#include <Sawyer/SharedPointer.h>
16namespace BinaryAnalysis {
29 typedef std::vector<uint8_t> BinaryData;
32 mutable SAWYER_THREAD_TRAITS::Mutex mutex_;
34 std::string timestamp_;
36 mutable bool read_only_;
40 friend class boost::serialization::access;
44 s & BOOST_SERIALIZATION_NVP(name_);
45 s & BOOST_SERIALIZATION_NVP(content_);
46 s & BOOST_SERIALIZATION_NVP(empty_);
57 static Ptr instance(
const boost::filesystem::path &executableName);
58 static Ptr instance();
67 void open(
const boost::filesystem::path &executableName);
92 std::string name()
const;
93 void name(
const std::string&);
101 std::string printableName(
const DatabasePtr &db = DatabasePtr());
104 void toYaml(std::ostream&,
const DatabasePtr&, std::string prefix);
116 std::string timestamp()
const;
117 void timestamp(
const std::string&);
126 const std::vector<uint8_t>& content()
const;
132 void content(std::vector<uint8_t> binary_data);
Creates SharedPointer from this.
Base class for reference counted objects.
Reference-counting intrusive smart pointer.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
void serialize(std::ostream &output, Graph &graph)
Serialize a graph into a stream of bytes.