C# Класс System.Xml.Xsl.IlGen.IteratorDescriptor

Iterators are joined together, are nested within each other, and reference each other. This internal class contains detailed information about iteration next labels, caching, iterator item location, etc.
Показать файл Открыть проект Примеры использования класса

Открытые методы

Метод Описание
CacheCount ( ) : void

Push the count of items in the cache onto the stack.

DiscardStack ( ) : void

Discard the current item if it is pushed onto the stack.

EnsureItemStorageType ( XmlQueryType xmlType, Type storageTypeDest ) : void

Each XmlQueryType has multiple legal CLR representations. Ensure that all items returned by this iterator are in the Clr representation specified by "storageTypeDest".

EnsureLocal ( LocalBuilder bldr ) : void

Ensure that current item is saved to the specified local variable.

EnsureLocal ( string locName ) : void

If current item is not already in a local variable, then move it to a local variable of the specified name.

EnsureLocalNoCache ( LocalBuilder bldr ) : void

Ensure that the iterator's items are not cached and that the current item is saved to the specified local variable.

EnsureLocalNoCache ( string locName ) : void

Ensure that the iterator's items are not cached, and that if the current item is not already in a local, variable, that it is moved to a local variable of the specified name.

EnsureNoCache ( ) : void

If the iterator has been fully cached, then iterate the values one-by-one.

EnsureNoStack ( string locName ) : void

If the current item is on the stack, move it to a local variable.

EnsureNoStackNoCache ( string locName ) : void

Ensure that the iterator's items are not cached, and that if the current item is pushed onto the stack, that it is moved to a local variable.

EnsureStack ( ) : void

Ensure that the current item is pushed onto the stack.

EnsureStackNoCache ( ) : void

Ensure that the iterator's items are not cached, and that the current item is pushed onto the stack.

GetLabelNext ( ) : Label

Return the label that is anchored to this code iterator's MoveNext code.

IteratorDescriptor ( GenerateHelper helper ) : System

Create a "root" IteratorDescriptor which has no parent iterator.

IteratorDescriptor ( IteratorDescriptor iterParent ) : System

Create an IteratorDescriptor that is nested in a parent iterator.

LoopToEnd ( Label lblOnEnd ) : void

Continue iteration until it is complete. Branch to "lblOnEnd" when iteration is complete.

goto LabelNextCtxt; LabelOnEnd:

PushValue ( ) : void

Push current item onto the stack without affecting Location.

SetBranching ( BranchingContext brctxt, Label lblBranch ) : void

Setup a branching context. All nested iterators compiled in this context must evaluate to a single boolean value. However, these expressions must not push the result as a boolean onto the stack. Instead, if brctxt is BranchType.True, then the expression should jump to lblBranch if it evaluates to true. If brctxt is BranchType.False, then the branch should happen if the evaluation result is false.

SetIterator ( IteratorDescriptor iterInfo ) : void

Set this iterator to be the same as the specified iterator.

SetIterator ( Label lblNext, StorageDescriptor storage ) : void

Set this iterator's next label and storage. This iterator will range over a set of values located in "storage". To get the next value, jump to "lblNext".

Приватные методы

Метод Описание
Init ( IteratorDescriptor iterParent, GenerateHelper helper ) : void

Internal helper initializor.

Описание методов

CacheCount() публичный Метод

Push the count of items in the cache onto the stack.
public CacheCount ( ) : void
Результат void

DiscardStack() публичный Метод

Discard the current item if it is pushed onto the stack.
public DiscardStack ( ) : void
Результат void

EnsureItemStorageType() публичный Метод

Each XmlQueryType has multiple legal CLR representations. Ensure that all items returned by this iterator are in the Clr representation specified by "storageTypeDest".
public EnsureItemStorageType ( XmlQueryType xmlType, Type storageTypeDest ) : void
xmlType XmlQueryType
storageTypeDest System.Type
Результат void

EnsureLocal() публичный Метод

Ensure that current item is saved to the specified local variable.
public EnsureLocal ( LocalBuilder bldr ) : void
bldr System.Reflection.Emit.LocalBuilder
Результат void

EnsureLocal() публичный Метод

If current item is not already in a local variable, then move it to a local variable of the specified name.
public EnsureLocal ( string locName ) : void
locName string
Результат void

EnsureLocalNoCache() публичный Метод

Ensure that the iterator's items are not cached and that the current item is saved to the specified local variable.
public EnsureLocalNoCache ( LocalBuilder bldr ) : void
bldr System.Reflection.Emit.LocalBuilder
Результат void

EnsureLocalNoCache() публичный Метод

Ensure that the iterator's items are not cached, and that if the current item is not already in a local, variable, that it is moved to a local variable of the specified name.
public EnsureLocalNoCache ( string locName ) : void
locName string
Результат void

EnsureNoCache() публичный Метод

If the iterator has been fully cached, then iterate the values one-by-one.
public EnsureNoCache ( ) : void
Результат void

EnsureNoStack() публичный Метод

If the current item is on the stack, move it to a local variable.
public EnsureNoStack ( string locName ) : void
locName string
Результат void

EnsureNoStackNoCache() публичный Метод

Ensure that the iterator's items are not cached, and that if the current item is pushed onto the stack, that it is moved to a local variable.
public EnsureNoStackNoCache ( string locName ) : void
locName string
Результат void

EnsureStack() публичный Метод

Ensure that the current item is pushed onto the stack.
public EnsureStack ( ) : void
Результат void

EnsureStackNoCache() публичный Метод

Ensure that the iterator's items are not cached, and that the current item is pushed onto the stack.
public EnsureStackNoCache ( ) : void
Результат void

GetLabelNext() публичный Метод

Return the label that is anchored to this code iterator's MoveNext code.
public GetLabelNext ( ) : Label
Результат System.Reflection.Emit.Label

IteratorDescriptor() публичный Метод

Create a "root" IteratorDescriptor which has no parent iterator.
public IteratorDescriptor ( GenerateHelper helper ) : System
helper GenerateHelper
Результат System

IteratorDescriptor() публичный Метод

Create an IteratorDescriptor that is nested in a parent iterator.
public IteratorDescriptor ( IteratorDescriptor iterParent ) : System
iterParent IteratorDescriptor
Результат System

LoopToEnd() публичный Метод

Continue iteration until it is complete. Branch to "lblOnEnd" when iteration is complete.
goto LabelNextCtxt; LabelOnEnd:
public LoopToEnd ( Label lblOnEnd ) : void
lblOnEnd System.Reflection.Emit.Label
Результат void

PushValue() публичный Метод

Push current item onto the stack without affecting Location.
public PushValue ( ) : void
Результат void

SetBranching() публичный Метод

Setup a branching context. All nested iterators compiled in this context must evaluate to a single boolean value. However, these expressions must not push the result as a boolean onto the stack. Instead, if brctxt is BranchType.True, then the expression should jump to lblBranch if it evaluates to true. If brctxt is BranchType.False, then the branch should happen if the evaluation result is false.
public SetBranching ( BranchingContext brctxt, Label lblBranch ) : void
brctxt BranchingContext
lblBranch System.Reflection.Emit.Label
Результат void

SetIterator() публичный Метод

Set this iterator to be the same as the specified iterator.
public SetIterator ( IteratorDescriptor iterInfo ) : void
iterInfo IteratorDescriptor
Результат void

SetIterator() публичный Метод

Set this iterator's next label and storage. This iterator will range over a set of values located in "storage". To get the next value, jump to "lblNext".
public SetIterator ( Label lblNext, StorageDescriptor storage ) : void
lblNext System.Reflection.Emit.Label
storage StorageDescriptor
Результат void