Commit 9b8a814c authored by Wouter van Oortmerssen's avatar Wouter van Oortmerssen

Merge pull request #3742 from evolutional/cs-partial

Added support for C# partial class generation using attribute
parents 491e9709 dbf67023
......@@ -403,6 +403,7 @@ class Parser {
known_attributes_.insert("bit_flags");
known_attributes_.insert("original_order");
known_attributes_.insert("nested_flatbuffer");
known_attributes_.insert("csharp_partial");
}
~Parser() {
......
......@@ -659,7 +659,15 @@ static void GenStruct(const LanguageParameters &lang, const Parser &parser,
// int o = __offset(offset); return o != 0 ? bb.getType(o + i) : default;
// }
GenComment(struct_def.doc_comment, code_ptr, &lang.comment_config);
code += std::string("public ") + lang.unsubclassable_decl;
code += "public ";
if (lang.language == IDLOptions::kCSharp &&
struct_def.attributes.Lookup("csharp_partial")) {
// generate a partial class for this C# struct/table
code += "partial ";
}
else {
code += lang.unsubclassable_decl;
}
code += "class " + struct_def.name + lang.inheritance_marker;
code += struct_def.fixed ? "Struct" : "Table";
code += " {\n";
......
......@@ -6,7 +6,7 @@ namespace MyGame.Example
using System;
using FlatBuffers;
public sealed class TestSimpleTableWithEnum : Table {
public partial class TestSimpleTableWithEnum : Table {
public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb) { return GetRootAsTestSimpleTableWithEnum(_bb, new TestSimpleTableWithEnum()); }
public static TestSimpleTableWithEnum GetRootAsTestSimpleTableWithEnum(ByteBuffer _bb, TestSimpleTableWithEnum obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
public TestSimpleTableWithEnum __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
......
......@@ -12,7 +12,7 @@ union Any { Monster, TestSimpleTableWithEnum } // TODO: add more elements
struct Test { a:short; b:byte; }
table TestSimpleTableWithEnum {
table TestSimpleTableWithEnum (csharp_partial) {
color: Color = Green;
}
......
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