本文整理汇总了C#中CodeGen.EmitSymbolIdId方法的典型用法代码示例。如果您正苦于以下问题:C# CodeGen.EmitSymbolIdId方法的具体用法?C# CodeGen.EmitSymbolIdId怎么用?C# CodeGen.EmitSymbolIdId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CodeGen
的用法示例。
在下文中一共展示了CodeGen.EmitSymbolIdId方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: EmitOuterLocalIDs
private void EmitOuterLocalIDs(CodeGen cg)
{
if (EmitLocalDictionary) {
int size = 0;
foreach (KeyValuePair<SymbolId, Binding> kv in names) {
if (kv.Value.IsFree) size++;
}
// Emit null if no outer symbol IDs
if (size == 0) {
cg.EmitExprOrNone(null);
} else {
cg.EmitInt(size);
cg.Emit(OpCodes.Newarr, typeof(SymbolId));
int index = 0;
foreach (KeyValuePair<SymbolId, Binding> kv in names) {
if (kv.Value.IsFree) {
cg.Emit(OpCodes.Dup);
cg.EmitInt(index++);
cg.Emit(OpCodes.Ldelema, typeof(SymbolId));
cg.EmitSymbolIdId(kv.Key);
cg.Emit(OpCodes.Call, typeof(SymbolId).GetConstructor(new Type[] { typeof(int) }));
}
}
}
} else {
cg.EmitExprOrNone(null);
}
}
示例2: EmitEnvironmentIDs
private void EmitEnvironmentIDs(CodeGen cg)
{
int size = 0;
foreach (KeyValuePair<SymbolId, Binding> kv in names) {
if (kv.Value.IsEnvironment) size++;
}
// Create the array for the names
cg.EmitInt(size);
cg.Emit(OpCodes.Newarr, typeof(SymbolId));
int index = 0;
foreach (KeyValuePair<SymbolId, Binding> kv in names) {
if (kv.Value.IsEnvironment) {
cg.Emit(OpCodes.Dup);
cg.EmitInt(index++);
cg.Emit(OpCodes.Ldelema, typeof(SymbolId));
cg.EmitSymbolIdId(kv.Key);
cg.Emit(OpCodes.Call, typeof(SymbolId).GetConstructor(new Type[] { typeof(int) }));
}
}
}