Fix to #360 - Updated the general generator (Java/C#) to emit fully qualified names where the referenced object isn't directly in this namespace. Added test fbs files to verify compilation.

This commit is contained in:
Oli Wilkinson
2015-11-29 15:31:55 -05:00
parent fe2f8d32aa
commit c9ad6d5496
25 changed files with 922 additions and 93 deletions

View File

@@ -0,0 +1,14 @@
// automatically generated, do not modify
namespace NamespaceA.NamespaceB
{
public enum EnumInNestedNS : sbyte
{
A = 0,
B = 1,
C = 2,
};
}

View File

@@ -0,0 +1,9 @@
// automatically generated, do not modify
package NamespaceB
const (
EnumInNestedNSA = 0
EnumInNestedNSB = 1
EnumInNestedNSC = 2
)

View File

@@ -0,0 +1,15 @@
// automatically generated, do not modify
package NamespaceA.NamespaceB;
public final class EnumInNestedNS {
private EnumInNestedNS() { }
public static final byte A = 0;
public static final byte B = 1;
public static final byte C = 2;
private static final String[] names = { "A", "B", "C", };
public static String name(int e) { return names[e]; }
};

View File

@@ -0,0 +1,25 @@
<?php
// automatically generated, do not modify
namespace NamespaceA\NamespaceB;
class EnumInNestedNS
{
const A = 0;
const B = 1;
const C = 2;
private static $names = array(
"A",
"B",
"C",
);
public static function Name($e)
{
if (!isset(self::$names[$e])) {
throw new \Exception();
}
return self::$names[$e];
}
}

View File

@@ -0,0 +1,25 @@
// automatically generated, do not modify
namespace NamespaceA.NamespaceB
{
using FlatBuffers;
public sealed class StructInNestedNS : Struct {
public StructInNestedNS __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
public int A { get { return bb.GetInt(bb_pos + 0); } }
public void MutateA(int a) { bb.PutInt(bb_pos + 0, a); }
public int B { get { return bb.GetInt(bb_pos + 4); } }
public void MutateB(int b) { bb.PutInt(bb_pos + 4, b); }
public static Offset<StructInNestedNS> CreateStructInNestedNS(FlatBufferBuilder builder, int A, int B) {
builder.Prep(4, 8);
builder.PutInt(B);
builder.PutInt(A);
return new Offset<StructInNestedNS>(builder.Offset);
}
};
}

View File

@@ -0,0 +1,25 @@
// automatically generated, do not modify
package NamespaceB
import (
flatbuffers "github.com/google/flatbuffers/go"
)
type StructInNestedNS struct {
_tab flatbuffers.Struct
}
func (rcv *StructInNestedNS) Init(buf []byte, i flatbuffers.UOffsetT) {
rcv._tab.Bytes = buf
rcv._tab.Pos = i
}
func (rcv *StructInNestedNS) A() int32 { return rcv._tab.GetInt32(rcv._tab.Pos + flatbuffers.UOffsetT(0)) }
func (rcv *StructInNestedNS) B() int32 { return rcv._tab.GetInt32(rcv._tab.Pos + flatbuffers.UOffsetT(4)) }
func CreateStructInNestedNS(builder *flatbuffers.Builder, a int32, b int32) flatbuffers.UOffsetT {
builder.Prep(4, 8)
builder.PrependInt32(b)
builder.PrependInt32(a)
return builder.Offset()
}

View File

@@ -0,0 +1,26 @@
// automatically generated, do not modify
package NamespaceA.NamespaceB;
import java.nio.*;
import java.lang.*;
import java.util.*;
import com.google.flatbuffers.*;
@SuppressWarnings("unused")
public final class StructInNestedNS extends Struct {
public StructInNestedNS __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
public int a() { return bb.getInt(bb_pos + 0); }
public void mutateA(int a) { bb.putInt(bb_pos + 0, a); }
public int b() { return bb.getInt(bb_pos + 4); }
public void mutateB(int b) { bb.putInt(bb_pos + 4, b); }
public static int createStructInNestedNS(FlatBufferBuilder builder, int a, int b) {
builder.prep(4, 8);
builder.putInt(b);
builder.putInt(a);
return builder.offset();
}
};

View File

@@ -0,0 +1,52 @@
<?php
// automatically generated, do not modify
namespace NamespaceA\NamespaceB;
use \Google\FlatBuffers\Struct;
use \Google\FlatBuffers\Table;
use \Google\FlatBuffers\ByteBuffer;
use \Google\FlatBuffers\FlatBufferBuilder;
class StructInNestedNS extends Struct
{
/**
* @param int $_i offset
* @param ByteBuffer $_bb
* @return StructInNestedNS
**/
public function init($_i, ByteBuffer $_bb)
{
$this->bb_pos = $_i;
$this->bb = $_bb;
return $this;
}
/**
* @return int
*/
public function GetA()
{
return $this->bb->getInt($this->bb_pos + 0);
}
/**
* @return int
*/
public function GetB()
{
return $this->bb->getInt($this->bb_pos + 4);
}
/**
* @return int offset
*/
public static function createStructInNestedNS(FlatBufferBuilder $builder, $a, $b)
{
$builder->prep(4, 8);
$builder->putInt($b);
$builder->putInt($a);
return $builder->offset();
}
}

View File

@@ -0,0 +1,32 @@
// automatically generated, do not modify
namespace NamespaceA.NamespaceB
{
using FlatBuffers;
public sealed class TableInNestedNS : Table {
public static TableInNestedNS GetRootAsTableInNestedNS(ByteBuffer _bb) { return GetRootAsTableInNestedNS(_bb, new TableInNestedNS()); }
public static TableInNestedNS GetRootAsTableInNestedNS(ByteBuffer _bb, TableInNestedNS obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
public TableInNestedNS __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
public int Foo { get { int o = __offset(4); return o != 0 ? bb.GetInt(o + bb_pos) : (int)0; } }
public bool MutateFoo(int foo) { int o = __offset(4); if (o != 0) { bb.PutInt(o + bb_pos, foo); return true; } else { return false; } }
public static Offset<TableInNestedNS> CreateTableInNestedNS(FlatBufferBuilder builder,
int foo = 0) {
builder.StartObject(1);
TableInNestedNS.AddFoo(builder, foo);
return TableInNestedNS.EndTableInNestedNS(builder);
}
public static void StartTableInNestedNS(FlatBufferBuilder builder) { builder.StartObject(1); }
public static void AddFoo(FlatBufferBuilder builder, int foo) { builder.AddInt(0, foo, 0); }
public static Offset<TableInNestedNS> EndTableInNestedNS(FlatBufferBuilder builder) {
int o = builder.EndObject();
return new Offset<TableInNestedNS>(o);
}
};
}

View File

@@ -0,0 +1,27 @@
// automatically generated, do not modify
package NamespaceB
import (
flatbuffers "github.com/google/flatbuffers/go"
)
type TableInNestedNS struct {
_tab flatbuffers.Table
}
func (rcv *TableInNestedNS) Init(buf []byte, i flatbuffers.UOffsetT) {
rcv._tab.Bytes = buf
rcv._tab.Pos = i
}
func (rcv *TableInNestedNS) Foo() int32 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
return rcv._tab.GetInt32(o + rcv._tab.Pos)
}
return 0
}
func TableInNestedNSStart(builder *flatbuffers.Builder) { builder.StartObject(1) }
func TableInNestedNSAddFoo(builder *flatbuffers.Builder, foo int32) { builder.PrependInt32Slot(0, foo, 0) }
func TableInNestedNSEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() }

View File

@@ -0,0 +1,33 @@
// automatically generated, do not modify
package NamespaceA.NamespaceB;
import java.nio.*;
import java.lang.*;
import java.util.*;
import com.google.flatbuffers.*;
@SuppressWarnings("unused")
public final class TableInNestedNS extends Table {
public static TableInNestedNS getRootAsTableInNestedNS(ByteBuffer _bb) { return getRootAsTableInNestedNS(_bb, new TableInNestedNS()); }
public static TableInNestedNS getRootAsTableInNestedNS(ByteBuffer _bb, TableInNestedNS obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__init(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
public TableInNestedNS __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
public int foo() { int o = __offset(4); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
public boolean mutateFoo(int foo) { int o = __offset(4); if (o != 0) { bb.putInt(o + bb_pos, foo); return true; } else { return false; } }
public static int createTableInNestedNS(FlatBufferBuilder builder,
int foo) {
builder.startObject(1);
TableInNestedNS.addFoo(builder, foo);
return TableInNestedNS.endTableInNestedNS(builder);
}
public static void startTableInNestedNS(FlatBufferBuilder builder) { builder.startObject(1); }
public static void addFoo(FlatBufferBuilder builder, int foo) { builder.addInt(0, foo, 0); }
public static int endTableInNestedNS(FlatBufferBuilder builder) {
int o = builder.endObject();
return o;
}
};

View File

@@ -0,0 +1,84 @@
<?php
// automatically generated, do not modify
namespace NamespaceA\NamespaceB;
use \Google\FlatBuffers\Struct;
use \Google\FlatBuffers\Table;
use \Google\FlatBuffers\ByteBuffer;
use \Google\FlatBuffers\FlatBufferBuilder;
class TableInNestedNS extends Table
{
/**
* @param ByteBuffer $bb
* @return TableInNestedNS
*/
public static function getRootAsTableInNestedNS(ByteBuffer $bb)
{
$obj = new TableInNestedNS();
return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
}
/**
* @param int $_i offset
* @param ByteBuffer $_bb
* @return TableInNestedNS
**/
public function init($_i, ByteBuffer $_bb)
{
$this->bb_pos = $_i;
$this->bb = $_bb;
return $this;
}
/**
* @return int
*/
public function getFoo()
{
$o = $this->__offset(4);
return $o != 0 ? $this->bb->getInt($o + $this->bb_pos) : 0;
}
/**
* @param FlatBufferBuilder $builder
* @return void
*/
public static function startTableInNestedNS(FlatBufferBuilder $builder)
{
$builder->StartObject(1);
}
/**
* @param FlatBufferBuilder $builder
* @return TableInNestedNS
*/
public static function createTableInNestedNS(FlatBufferBuilder $builder, $foo)
{
$builder->startObject(1);
self::addFoo($builder, $foo);
$o = $builder->endObject();
return $o;
}
/**
* @param FlatBufferBuilder $builder
* @param int
* @return void
*/
public static function addFoo(FlatBufferBuilder $builder, $foo)
{
$builder->addIntX(0, $foo, 0);
}
/**
* @param FlatBufferBuilder $builder
* @return int table offset
*/
public static function endTableInNestedNS(FlatBufferBuilder $builder)
{
$o = $builder->endObject();
return $o;
}
}