MCPcopy Create free account
hub / github.com/chronoxor/FastBinaryEncoding / GenerateClient_Header

Method GenerateClient_Header

source/generator_cpp.cpp:9734–9993  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9732}
9733
9734void GeneratorCpp::GenerateClient_Header(const std::shared_ptr<Package>& p, bool final)
9735{
9736 std::string client = (final ? "FinalClient" : "Client");
9737 std::string sender = (final ? "FinalSender" : "Sender");
9738 std::string receiver = (final ? "FinalReceiver" : "Receiver");
9739
9740 // Generate client begin
9741 WriteLine();
9742 if (final)
9743 WriteLineIndent("// Fast Binary Encoding " + *p->name + " final client");
9744 else
9745 WriteLineIndent("// Fast Binary Encoding " + *p->name + " client");
9746 WriteLineIndent("class " + client + " : public virtual " + sender + ", protected virtual " + receiver);
9747 if (p->import)
9748 {
9749 Indent(1);
9750 for (const auto& import : p->import->imports)
9751 WriteLineIndent(", public virtual " + *import + "::" + client);
9752 Indent(-1);
9753 }
9754 WriteLineIndent("{");
9755 WriteLineIndent("public:");
9756 if (p->import)
9757 {
9758 Indent(1);
9759 for (const auto& import : p->import->imports)
9760 WriteLineIndent("typedef " + *import + "::" + client + " " + *import + client + ";");
9761 Indent(-1);
9762 WriteLine();
9763 }
9764 Indent(1);
9765
9766 // Generate client constructors
9767 WriteLineIndent(client + "() = default;");
9768 WriteLineIndent(client + "(const " + client + "&) = delete;");
9769 WriteLineIndent(client + "(" + client + "&&) = delete;");
9770 WriteLineIndent("virtual ~" + client + "() = default;");
9771
9772 // Generate client operators
9773 WriteLine();
9774 WriteLineIndent(client + "& operator=(const " + client + "&) = delete;");
9775 WriteLineIndent(client + "& operator=(" + client + "&&) = delete;");
9776
9777 // Generate imported clients accessors
9778 if (p->import)
9779 {
9780 WriteLine();
9781 WriteLineIndent("// Imported clients");
9782 for (const auto& import : p->import->imports)
9783 WriteLineIndent(*import + "::" + client + "& " + *import + "_client() noexcept { return *this; }");
9784 }
9785
9786 // Generate client reset method
9787 WriteLine();
9788 WriteLineIndent("// Reset client buffers");
9789 WriteLineIndent("void reset() { std::scoped_lock locker(this->_lock); reset_requests(); }");
9790
9791 // Generate watchdog method

Callers

nothing calls this directly

Calls 3

insertMethod · 0.80
endMethod · 0.80
emptyMethod · 0.45

Tested by

no test coverage detected