mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 19:03:59 +08:00
gccrs: libproc_macro: Add named constructor
Add named constructor directly in Ident struct. libgrust/ChangeLog: * libproc_macro/ident.cc (Ident__new): Use named constructor. (Ident__new_raw): Use named constructor. (Ident__clone): Use clone member function. (Ident::clone): Make clone const. (Ident::make_ident): Add named construcot. * libproc_macro/ident.h (struct Ident): Add named constructor prototypes. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
This commit is contained in:
parent
d2c9c8cf39
commit
f4b2b28f32
@ -27,17 +27,13 @@ extern "C" {
|
||||
Ident
|
||||
Ident__new (unsigned char *str, std::uint64_t len)
|
||||
{
|
||||
unsigned char *val = new unsigned char[len];
|
||||
std::memcpy (val, str, len);
|
||||
return {false, val, len};
|
||||
return Ident::make_ident (str, len);
|
||||
}
|
||||
|
||||
Ident
|
||||
Ident__new_raw (unsigned char *str, std::uint64_t len)
|
||||
{
|
||||
unsigned char *val = new unsigned char[len];
|
||||
std::memcpy (val, str, len);
|
||||
return {true, val, len};
|
||||
return Ident::make_ident (str, len, true);
|
||||
}
|
||||
|
||||
void
|
||||
@ -49,8 +45,30 @@ Ident__drop (Ident *ident)
|
||||
Ident
|
||||
Ident__clone (const Ident *ident)
|
||||
{
|
||||
unsigned char *val = new unsigned char[ident->len];
|
||||
std::memcpy (val, ident->val, ident->len);
|
||||
return {ident->is_raw, val, ident->len};
|
||||
return ident->clone ();
|
||||
}
|
||||
}
|
||||
|
||||
Ident
|
||||
Ident::clone () const
|
||||
{
|
||||
unsigned char *val = new unsigned char[this->len];
|
||||
std::memcpy (val, this->val, this->len);
|
||||
return {this->is_raw, val, this->len};
|
||||
}
|
||||
|
||||
Ident
|
||||
Ident::make_ident (std::string str, bool raw)
|
||||
{
|
||||
return Ident::make_ident (reinterpret_cast<const unsigned char *> (
|
||||
str.c_str ()),
|
||||
str.length (), raw);
|
||||
}
|
||||
|
||||
Ident
|
||||
Ident::make_ident (const unsigned char *str, std::uint64_t len, bool raw)
|
||||
{
|
||||
unsigned char *val = new unsigned char[len];
|
||||
std::memcpy (val, str, len);
|
||||
return {raw, val, len};
|
||||
}
|
||||
|
@ -33,6 +33,12 @@ struct Ident
|
||||
unsigned char *val;
|
||||
// Length in bytes
|
||||
std::uint64_t len;
|
||||
|
||||
public:
|
||||
Ident clone () const;
|
||||
static Ident make_ident (std::string str, bool raw = false);
|
||||
static Ident make_ident (const unsigned char *str, std::uint64_t len,
|
||||
bool raw = false);
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
|
Loading…
Reference in New Issue
Block a user