Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Function()

void System.Xml.Xsl.IlGen.XmlILVisitor.Function ( QilFunction ndFunc)
inlineprivate

Definition at line 122 of file XmlILVisitor.cs.

123 {
124 foreach (QilIterator argument in ndFunc.Arguments)
125 {
126 IteratorDescriptor iteratorDescriptor = new IteratorDescriptor(_helper);
127 int paramIndex = XmlILAnnotation.Write(argument).ArgumentPosition + 1;
128 iteratorDescriptor.Storage = StorageDescriptor.Parameter(paramIndex, GetItemStorageType(argument), !argument.XmlType.IsSingleton);
129 XmlILAnnotation.Write(argument).CachedIteratorDescriptor = iteratorDescriptor;
130 }
131 MethodInfo functionBinding = XmlILAnnotation.Write(ndFunc).FunctionBinding;
132 bool flag = XmlILConstructInfo.Read(ndFunc).ConstructMethod == XmlILConstructMethod.Writer;
133 _helper.MethodBegin(functionBinding, ndFunc.SourceLine, flag);
134 foreach (QilIterator argument2 in ndFunc.Arguments)
135 {
136 if (_qil.IsDebug && argument2.SourceLine != null)
137 {
139 }
140 if (argument2.Binding != null)
141 {
142 int paramIndex = (argument2.Annotation as XmlILAnnotation).ArgumentPosition + 1;
147 _helper.Call(XmlILMethods.SeqMatchesCode);
154 }
155 }
157 if (flag)
158 {
159 NestedVisit(ndFunc.Definition);
160 }
161 else
162 {
163 NestedVisitEnsureStack(ndFunc.Definition, GetItemStorageType(ndFunc), !ndFunc.XmlType.IsSingleton);
164 }
167 }
static readonly OpCode Brfalse
Definition OpCodes.cs:117
void DebugSequencePoint(ISourceLineInfo sourceInfo)
void MethodBegin(MethodBase methInfo, ISourceLineInfo sourceInfo, bool initWriters)
void NestedVisit(QilNode nd, Type itemStorageType, bool isCached)

References System.Xml.Xsl.IlGen.XmlILVisitor._helper, System.Xml.Xsl.IlGen.XmlILVisitor._qil, System.Reflection.Emit.OpCodes.Brfalse, System.Xml.Xsl.IlGen.GenerateHelper.Call(), System.Xml.Xsl.IlGen.GenerateHelper.DebugSequencePoint(), System.Xml.Xsl.IlGen.GenerateHelper.DefineLabel(), System.Xml.Dictionary, System.Xml.Xsl.IlGen.GenerateHelper.Emit(), System.Xml.Xsl.IlGen.XmlILVisitor.EndNestedIterator(), System.Xml.Xsl.IlGen.XmlILVisitor.GetItemStorageType(), System.Xml.Xsl.Qil.QilExpression.IsDebug, System.Xml.Xsl.IlGen.GenerateHelper.LoadInteger(), System.Xml.Xsl.IlGen.GenerateHelper.LoadParameter(), System.Xml.Xsl.IlGen.GenerateHelper.LoadQueryRuntime(), System.Xml.Xsl.IlGen.GenerateHelper.MarkLabel(), System.Xml.Xsl.IlGen.GenerateHelper.MethodBegin(), System.Xml.Xsl.IlGen.GenerateHelper.MethodEnd(), System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(), System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisitEnsureStack(), System.Xml.Xsl.IlGen.StorageDescriptor.Parameter(), System.Xml.Xsl.IlGen.XmlILConstructInfo.Read(), System.Xml.Xsl.IlGen.XmlILMethods.SeqMatchesCode, System.Xml.Xsl.IlGen.GenerateHelper.SetParameter(), System.Xml.Xsl.IlGen.XmlILVisitor.StartNestedIterator(), and System.Xml.Xsl.IlGen.XmlILAnnotation.Write().