private void AddMetadata(ref LuaTableExpression table, LuaIdentifierNameSyntax name, LuaTableItemSyntax item) { if (metadata_ == null) { metadata_ = new LuaTableExpression(); } if (table == null) { table = new LuaTableExpression(); metadata_.Add(name, table); } table.Items.Add(item); }
private void CheckCtorsFunction(LuaBlockSyntax body) { bool hasInit = initStatements_.Count > 0; bool hasCtors = ctors_.Count > 0; if (hasCtors) { if (hasInit) { if (ctors_.Count == 1) { ctors_.First().Body.Statements.InsertRange(0, initStatements_); } else { var initIdentifier = LuaIdentifierNameSyntax.Init; AddInitFunction(body, initIdentifier, GetInitFunction(), false); foreach (var ctor in ctors_) { if (!ctor.IsInvokeThisCtor) { LuaInvocationExpressionSyntax invocationInit = new LuaInvocationExpressionSyntax(initIdentifier, LuaIdentifierNameSyntax.This); ctor.Body.Statements.Insert(0, new LuaExpressionStatementSyntax(invocationInit)); } } } } if (ctors_.Count == 1) { var ctor = ctors_.First(); if (ctor.Body.Statements.Count > 0) { AddInitFunction(body, LuaIdentifierNameSyntax.Ctor, ctor); } } else { LuaTableExpression ctrosTable = new LuaTableExpression(); int index = 1; foreach (var ctor in ctors_) { string name = SpecailWord(Tokens.Ctor + index); LuaIdentifierNameSyntax nameIdentifier = name; AddInitFunction(body, nameIdentifier, ctor, false); ctrosTable.Add(nameIdentifier); ++index; } AddResultTable(LuaIdentifierNameSyntax.Ctor, ctrosTable); } } else { if (hasInit) { AddInitFunction(body, LuaIdentifierNameSyntax.Ctor, GetInitFunction()); } } }
private void AddInterfaceDefaultMethod(LuaIdentifierNameSyntax name, LuaExpressionSyntax value) { if (interfaceDefaultMethods_ == null) { interfaceDefaultMethods_ = new LuaTableExpression(); AddResultTable(LuaIdentifierNameSyntax.InterfaceDefaultMethodVar, interfaceDefaultMethods_); } interfaceDefaultMethods_.Add(name, value); }
private void CheckCtorsFunction(LuaBlockSyntax body) { bool hasInit = initStatements_.Count > 0; bool hasCtors = ctors_.Count > 0; if (hasCtors) { if (hasInit) { if (ctors_.Count == 1) { ctors_.First().Function.Body.Statements.InsertRange(0, initStatements_); } else { var init = LuaIdentifierNameSyntax.Init; AddInitFunction(body, init, GetInitFunction(), false); foreach (var ctor in ctors_) { if (!ctor.Function.IsInvokeThisCtor) { var invocationInit = new LuaInvocationExpressionSyntax(init, LuaIdentifierNameSyntax.This); ctor.Function.Body.Statements.Insert(0, invocationInit); } } } } if (ctors_.Count == 1) { var ctor = ctors_.First(); if (ctor.Function.Body.Statements.Count > 0) { if (ctor.Document != null) { body.AddStatement(ctor.Document); } AddInitFunction(body, LuaIdentifierNameSyntax.Ctor, ctor.Function); } } else { LuaTableExpression ctrosTable = new LuaTableExpression(); int index = 1; foreach (var ctor in ctors_) { if (ctor.Document != null) { body.AddStatement(ctor.Document); } LuaIdentifierNameSyntax nameIdentifier = GetCtorNameString(index); AddInitFunction(body, nameIdentifier, ctor.Function, false); ctrosTable.Add(nameIdentifier); ++index; } AddResultTable(LuaIdentifierNameSyntax.Ctor, ctrosTable); } } else { if (hasInit) { AddInitFunction(body, LuaIdentifierNameSyntax.Ctor, GetInitFunction()); } } }