本文整理汇总了C#中Galaxy_Editor_2.Compiler.Generated.node.AMethodDecl.GetNative方法的典型用法代码示例。如果您正苦于以下问题:C# AMethodDecl.GetNative方法的具体用法?C# AMethodDecl.GetNative怎么用?C# AMethodDecl.GetNative使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Galaxy_Editor_2.Compiler.Generated.node.AMethodDecl
的用法示例。
在下文中一共展示了AMethodDecl.GetNative方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CaseAMethodDecl
public override void CaseAMethodDecl(AMethodDecl node)
{
if (node.GetNative() == null && node.GetBlock() == null)
return;
if (node.GetStatic() != null)
return;
string inputStr = "native " + TypeToString(node.GetReturnType()) + " " + node.GetName().Text +
"(";
bool first = true;
foreach (AALocalDecl formal in node.GetFormals())
{
if (!first)
inputStr += ", ";
inputStr += TypeToString(formal.GetType()) + " " + formal.GetName().Text;
first = false;
}
inputStr += ");";
writer.WriteLine(inputStr);
AStructDecl str = Util.GetAncestor<AStructDecl>(node);
List<AMethodDecl> methodList;
if (str != null)
methodList = StructMethods[str];
else
methodList = Methods;
string sig = Util.GetMethodSignature(node);
if (methodList.Any(otherMethod => Util.GetMethodSignature(otherMethod) == sig))
{
return;
}
methodList.Add(node);
node.SetBlock(null);
node.Parent().RemoveChild(node);
}
示例2: CaseAMethodDecl
public override void CaseAMethodDecl(AMethodDecl node)
{
InAMethodDecl(node);
if (node.GetBlock() != null)
{
node.GetBlock().Apply(this);
}
{
Object[] temp = new Object[node.GetFormals().Count];
node.GetFormals().CopyTo(temp, 0);
for (int i = temp.Length - 1; i >= 0; i--)
{
((PLocalDecl)temp[i]).Apply(this);
}
}
if (node.GetName() != null)
{
node.GetName().Apply(this);
}
if (node.GetReturnType() != null)
{
node.GetReturnType().Apply(this);
}
if (node.GetDelegate() != null)
{
node.GetDelegate().Apply(this);
}
if (node.GetInline() != null)
{
node.GetInline().Apply(this);
}
if (node.GetNative() != null)
{
node.GetNative().Apply(this);
}
if (node.GetStatic() != null)
{
node.GetStatic().Apply(this);
}
if (node.GetTrigger() != null)
{
node.GetTrigger().Apply(this);
}
if (node.GetVisibilityModifier() != null)
{
node.GetVisibilityModifier().Apply(this);
}
OutAMethodDecl(node);
}
示例3: OutAMethodDecl
public override void OutAMethodDecl(AMethodDecl node)
{
//If void return is missing, insert it.
if (node.GetReturnType() is AVoidType && node.GetBlock() != null)
{
AABlock block = (AABlock)node.GetBlock();
bool insertReturn = false;
while (true)
{
if (block.GetStatements().Count == 0)
{
insertReturn = true;
break;
}
PStm lastStm = (PStm)block.GetStatements()[block.GetStatements().Count - 1];
if (lastStm is AVoidReturnStm)
break;
if (lastStm is ABlockStm)
{
block = (AABlock)((ABlockStm)block.GetStatements()[block.GetStatements().Count - 1]).GetBlock();
continue;
}
insertReturn = true;
break;
}
if (insertReturn)
{
block.GetStatements().Add(new AVoidReturnStm(new TReturn("return", block.GetToken().Line, block.GetToken().Pos)));
}
}
//Check if delegate is valid
if (node.GetDelegate() != null)
{
if (node.GetBlock() != null)
errors.Add(new ErrorCollection.Error(node.GetDelegate(), currentSourceFile, LocRM.GetString("ErrorText195")));
if (node.GetInline() != null)
errors.Add(new ErrorCollection.Error(node.GetDelegate(), currentSourceFile, LocRM.GetString("ErrorText196")));
if (node.GetTrigger() != null)
errors.Add(new ErrorCollection.Error(node.GetDelegate(), currentSourceFile, LocRM.GetString("ErrorText197")));
if (node.GetStatic() != null)
errors.Add(new ErrorCollection.Error(node.GetDelegate(), currentSourceFile, LocRM.GetString("ErrorText198")));
if (node.GetNative() != null)
errors.Add(new ErrorCollection.Error(node.GetDelegate(), currentSourceFile, LocRM.GetString("ErrorText199")));
}
//If it's protected, it must be in a struct
if (!Util.HasAncestor<AStructDecl>(node))
{
if (node.GetVisibilityModifier() is AProtectedVisibilityModifier)
errors.Add(new ErrorCollection.Error(node.GetName(),
LocRM.GetString("ErrorText200")));
}
base.OutAMethodDecl(node);
}
示例4: foreach
/*public override void InAMethodDecl(AMethodDecl node)
{
AABlock block = (AABlock) node.GetBlock();
if (block != null)
{
if (!data.Locals.ContainsKey(block))
data.Locals.Add(block, new List<AALocalDecl>());
foreach (AALocalDecl formal in node.GetFormals())
{
data.Locals[block].Add(formal);
}
}
}
public override void InAConstructorDecl(AConstructorDecl node)
{
AABlock block = (AABlock)node.GetBlock();
if (block != null)
{
if (!data.Locals.ContainsKey(block))
data.Locals.Add(block, new List<AALocalDecl>());
foreach (AALocalDecl formal in node.GetFormals())
{
data.Locals[block].Add(formal);
}
}
}*/
public override void OutAMethodDecl(AMethodDecl node)
{
AStructDecl parentStruct = Util.GetAncestor<AStructDecl>(node);
AEnrichmentDecl parentEnrichment = Util.GetAncestor<AEnrichmentDecl>(node);
if (parentStruct != null)
{
//Struct method
data.StructMethods[parentStruct].Add(node);
}
else if (parentEnrichment == null)
{//Global method
//Dont care about abstract methods - will add them later
if (node.GetBlock() != null || node.GetNative() != null)
{
data.Methods.Add(new SharedData.DeclItem<AMethodDecl>(currentSourceFile, node));
data.UserMethods.Add(node);
}
else if (node.GetDelegate() != null)
data.Delegates.Add(new SharedData.DeclItem<AMethodDecl>(currentSourceFile, node));
else
{
node.Parent().RemoveChild(node);
return;
}
}
base.OutAMethodDecl(node);
}
示例5: CaseAMethodDecl
public override void CaseAMethodDecl(AMethodDecl node)
{
Write("\n");
if (node.GetStatic() != null) Write("static ");
if (node.GetNative() != null) Write("native ");
node.GetReturnType().Apply(this);
Write(" " + node.GetName().Text + "(");
bool first = true;
foreach (AALocalDecl formal in node.GetFormals())
{
if (!first) Write(", ");
formal.Apply(this);
first = false;
}
if (node.GetBlock() != null)
{
Write(")\n");
node.GetBlock().Apply(this);
}
else
Write(");\n\n");
}