MCPcopy Create free account
hub / github.com/OpenSteam001/OpenSteamTool / emitFixedFrameView

Method emitFixedFrameView

tools/ipc_codegen/ipc_codegen.cpp:794–818  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

792 }
793
794 void emitFixedFrameView(const std::string& className, const FrameDecl& frame, bool noneFrame) {
795 out_ << "class " << className << " {\n"
796 "public:\n"
797 << " explicit " << className << "(std::span<uint8> bytes) : bytes_(bytes) {}\n"
798 << " bool ok() const { return ";
799 if (noneFrame)
800 out_ << "bytes_.empty()";
801 else
802 out_ << "bytes_.size() >= " << frameFixedSizeExpr(frame);
803 out_ << "; }\n";
804 if (!noneFrame) {
805 for (size_t i = 0; i < frame.fields.size(); ++i) {
806 const FrameField& field = frame.fields[i];
807 const std::string offset = frameOffsetExpr(frame, i);
808 out_ << " " << field.type << " " << field.name
809 << "() const { return detail::Read<" << field.type << ">(bytes_, " << offset << "); }\n"
810 << " void set_" << field.name << "(" << field.type
811 << " value) { detail::Write(bytes_, " << offset << ", value); }\n";
812 }
813 }
814 emitFrameDebugString(className, noneFrame ? FrameDecl{} : frame);
815 out_ << "private:\n"
816 " std::span<uint8> bytes_;\n"
817 "};\n\n";
818 }
819
820 static bool canEmitFixedFrame(const FrameDecl& frame) {
821 for (const auto& field : frame.fields) {

Callers

nothing calls this directly

Calls 1

sizeMethod · 0.80

Tested by

no test coverage detected