1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 04:37:44 +00:00

Userland: Use snake case names in .ipc files

This updates all .ipc files to have snake case names for IPC methods.
This commit is contained in:
Gunnar Beutner 2021-05-03 15:52:56 +02:00 committed by Andreas Kling
parent eb21aa65d1
commit 9e22e9ce88
36 changed files with 296 additions and 287 deletions

View file

@ -24,6 +24,24 @@ struct Parameter {
String name;
};
static String pascal_case(String const& identifier)
{
StringBuilder builder;
bool was_new_word = true;
for (auto ch : identifier) {
if (ch == '_') {
was_new_word = true;
continue;
}
if (was_new_word) {
builder.append(toupper(ch));
was_new_word = false;
} else
builder.append(ch);
}
return builder.to_string();
}
struct Message {
String name;
bool is_synchronous { false };
@ -33,7 +51,7 @@ struct Message {
String response_name() const
{
StringBuilder builder;
builder.append(name);
builder.append(pascal_case(name));
builder.append("Response");
return builder.to_string();
}
@ -45,21 +63,6 @@ struct Endpoint {
Vector<Message> messages;
};
static String snake_case(String const& identifier)
{
StringBuilder builder;
bool was_new_word = true;
for (auto ch : identifier) {
if (!builder.is_empty() && isupper(ch) && !was_new_word) {
builder.append('_');
was_new_word = true;
} else if (!isupper(ch))
was_new_word = false;
builder.append(tolower(ch));
}
return builder.to_string();
}
bool is_primitive_type(String const& type)
{
return (type == "u8" || type == "i8" || type == "u16" || type == "i16"
@ -73,7 +76,7 @@ String message_name(String const& endpoint, String& message, bool is_response)
builder.append("Messages::");
builder.append(endpoint);
builder.append("::");
builder.append(message);
builder.append(pascal_case(message));
if (is_response)
builder.append("Response");
return builder.to_string();
@ -279,18 +282,20 @@ enum class MessageID : i32 {
message_ids.set(message.name, message_ids.size() + 1);
message_generator.set("message.name", message.name);
message_generator.set("message.pascal_name", pascal_case(message.name));
message_generator.set("message.id", String::number(message_ids.size()));
message_generator.append(R"~~~(
@message.name@ = @message.id@,
@message.pascal_name@ = @message.id@,
)~~~");
if (message.is_synchronous) {
message_ids.set(message.response_name(), message_ids.size() + 1);
message_generator.set("message.name", message.response_name());
message_generator.set("message.pascal_name", pascal_case(message.response_name()));
message_generator.set("message.id", String::number(message_ids.size()));
message_generator.append(R"~~~(
@message.name@ = @message.id@,
@message.pascal_name@ = @message.id@,
)~~~");
}
}
@ -333,12 +338,14 @@ enum class MessageID : i32 {
auto do_message = [&](const String& name, const Vector<Parameter>& parameters, const String& response_type = {}) {
auto message_generator = endpoint_generator.fork();
auto pascal_name = pascal_case(name);
message_generator.set("message.name", name);
message_generator.set("message.pascal_name", pascal_name);
message_generator.set("message.response_type", response_type);
message_generator.set("message.constructor", constructor_for_message(name, parameters));
message_generator.set("message.constructor", constructor_for_message(pascal_name, parameters));
message_generator.append(R"~~~(
class @message.name@ final : public IPC::Message {
class @message.pascal_name@ final : public IPC::Message {
public:
)~~~");
@ -348,19 +355,19 @@ public:
)~~~");
message_generator.append(R"~~~(
@message.name@(decltype(nullptr)) : m_ipc_message_valid(false) { }
@message.name@(@message.name@ const&) = default;
@message.name@(@message.name@&&) = default;
@message.name@& operator=(@message.name@ const&) = default;
@message.pascal_name@(decltype(nullptr)) : m_ipc_message_valid(false) { }
@message.pascal_name@(@message.pascal_name@ const&) = default;
@message.pascal_name@(@message.pascal_name@&&) = default;
@message.pascal_name@& operator=(@message.pascal_name@ const&) = default;
@message.constructor@
virtual ~@message.name@() override {}
virtual ~@message.pascal_name@() override {}
virtual u32 endpoint_magic() const override { return @endpoint.magic@; }
virtual i32 message_id() const override { return (int)MessageID::@message.name@; }
static i32 static_message_id() { return (int)MessageID::@message.name@; }
virtual const char* message_name() const override { return "@endpoint.name@::@message.name@"; }
virtual i32 message_id() const override { return (int)MessageID::@message.pascal_name@; }
static i32 static_message_id() { return (int)MessageID::@message.pascal_name@; }
virtual const char* message_name() const override { return "@endpoint.name@::@message.pascal_name@"; }
static OwnPtr<@message.name@> decode(InputMemoryStream& stream, int sockfd)
static OwnPtr<@message.pascal_name@> decode(InputMemoryStream& stream, int sockfd)
{
IPC::Decoder decoder { stream, sockfd };
)~~~");
@ -403,7 +410,7 @@ public:
message_generator.set("message.constructor_call_parameters", builder.build());
message_generator.append(R"~~~(
return make<@message.name@>(@message.constructor_call_parameters@);
return make<@message.pascal_name@>(@message.constructor_call_parameters@);
}
)~~~");
@ -417,7 +424,7 @@ public:
IPC::MessageBuffer buffer;
IPC::Encoder stream(buffer);
stream << endpoint_magic();
stream << (int)MessageID::@message.name@;
stream << (int)MessageID::@message.pascal_name@;
)~~~");
for (auto& parameter : parameters) {
@ -498,10 +505,11 @@ public:
return_type = message_name(endpoint.name, message.name, true);
}
message_generator.set("message.name", message.name);
message_generator.set("message.pascal_name", pascal_case(message.name));
message_generator.set("message.complex_return_type", return_type);
message_generator.set("async_prefix_maybe", is_synchronous ? "" : "async_");
message_generator.set("handler_name", snake_case(name));
message_generator.set("handler_name", name);
message_generator.append(R"~~~(
@message.complex_return_type@ @async_prefix_maybe@@handler_name@()~~~");
@ -528,10 +536,10 @@ public:
)~~~");
}
message_generator.append("m_connection.template send_sync<Messages::@endpoint.name@::@message.name@>(");
message_generator.append("m_connection.template send_sync<Messages::@endpoint.name@::@message.pascal_name@>(");
} else {
message_generator.append(R"~~~(
m_connection.post_message(Messages::@endpoint.name@::@message.name@ { )~~~");
m_connection.post_message(Messages::@endpoint.name@::@message.pascal_name@ { )~~~");
}
for (size_t i = 0; i < parameters.size(); ++i) {
@ -642,10 +650,11 @@ public:
auto message_generator = endpoint_generator.fork();
message_generator.set("message.name", name);
message_generator.set("message.pascal_name", pascal_case(name));
message_generator.append(R"~~~(
case (int)Messages::@endpoint.name@::MessageID::@message.name@:
message = Messages::@endpoint.name@::@message.name@::decode(stream, sockfd);
case (int)Messages::@endpoint.name@::MessageID::@message.pascal_name@:
message = Messages::@endpoint.name@::@message.pascal_name@::decode(stream, sockfd);
break;
)~~~");
};
@ -709,24 +718,24 @@ public:
argument_generator.append(", ");
}
message_generator.set("message.name", name);
message_generator.set("message.response_type", message.response_name());
message_generator.set("handler_name", snake_case(name));
message_generator.set("message.pascal_name", pascal_case(name));
message_generator.set("message.response_type", pascal_case(message.response_name()));
message_generator.set("handler_name", name);
message_generator.set("arguments", argument_generator.to_string());
message_generator.append(R"~~~(
case (int)Messages::@endpoint.name@::MessageID::@message.name@: {
case (int)Messages::@endpoint.name@::MessageID::@message.pascal_name@: {
)~~~");
if (returns_something) {
if (message.outputs.is_empty()) {
message_generator.append(R"~~~(
[[maybe_unused]] auto& request = static_cast<const Messages::@endpoint.name@::@message.name@&>(message);
[[maybe_unused]] auto& request = static_cast<const Messages::@endpoint.name@::@message.pascal_name@&>(message);
@handler_name@(@arguments@);
auto response = Messages::@endpoint.name@::@message.response_type@ { };
return make<IPC::MessageBuffer>(response.encode());
)~~~");
} else {
message_generator.append(R"~~~(
[[maybe_unused]] auto& request = static_cast<const Messages::@endpoint.name@::@message.name@&>(message);
[[maybe_unused]] auto& request = static_cast<const Messages::@endpoint.name@::@message.pascal_name@&>(message);
auto response = @handler_name@(@arguments@);
if (!response.valid())
return {};
@ -735,7 +744,7 @@ public:
}
} else {
message_generator.append(R"~~~(
[[maybe_unused]] auto& request = static_cast<const Messages::@endpoint.name@::@message.name@&>(message);
[[maybe_unused]] auto& request = static_cast<const Messages::@endpoint.name@::@message.pascal_name@&>(message);
@handler_name@(@arguments@);
return {};
)~~~");
@ -764,7 +773,7 @@ public:
return_type = message_name(endpoint.name, message.name, true);
message_generator.set("message.complex_return_type", return_type);
message_generator.set("handler_name", snake_case(name));
message_generator.set("handler_name", name);
message_generator.append(R"~~~(
virtual @message.complex_return_type@ @handler_name@()~~~");