Commit 2d112ed9 authored by Serge Martin's avatar Serge Martin Committed by Tom Stellard
Browse files

clover: make module::symbol::name a string


Acked-by: Francisco Jerez's avatarFrancisco Jerez <currojerez@riseup.net>
Reviewed-by: default avatarTom Stellard <thomas.stellard@amd.com>
parent 5ca9b233
......@@ -293,8 +293,7 @@ clGetProgramInfo(cl_program d_prog, cl_program_info param,
case CL_PROGRAM_KERNEL_NAMES:
buf.as_string() = fold([](const std::string &a, const module::symbol &s) {
return ((a.empty() ? "" : a + ";") +
std::string(s.name.begin(), s.name.size()));
return ((a.empty() ? "" : a + ";") + s.name);
}, std::string(), prog.symbols());
break;
......
......@@ -133,6 +133,27 @@ namespace {
}
};
/// (De)serialize a string.
template<>
struct _serializer<std::string> {
static void
proc(compat::ostream &os, const std::string &s) {
_proc<uint32_t>(os, s.size());
os.write(&s[0], s.size() * sizeof(std::string::value_type));
}
static void
proc(compat::istream &is, std::string &s) {
s.resize(_proc<uint32_t>(is));
is.read(&s[0], s.size() * sizeof(std::string::value_type));
}
static void
proc(module::size_t &sz, const std::string &s) {
sz += sizeof(uint32_t) + sizeof(std::string::value_type) * s.size();
}
};
/// (De)serialize a module::section.
template<>
struct _serializer<module::section> {
......
......@@ -100,12 +100,12 @@ namespace clover {
};
struct symbol {
symbol(const compat::vector<char> &name, resource_id section,
symbol(const std::string &name, resource_id section,
size_t offset, const compat::vector<argument> &args) :
name(name), section(section), offset(offset), args(args) { }
symbol() : name(), section(0), offset(0), args() { }
compat::vector<char> name;
std::string name;
resource_id section;
size_t offset;
compat::vector<argument> args;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment