本文整理匯總了C#中Pchp.CodeAnalysis.CodeGen.CodeGenerator.EmitConvertToString方法的典型用法代碼示例。如果您正苦於以下問題:C# CodeGenerator.EmitConvertToString方法的具體用法?C# CodeGenerator.EmitConvertToString怎麽用?C# CodeGenerator.EmitConvertToString使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Pchp.CodeAnalysis.CodeGen.CodeGenerator
的用法示例。
在下文中一共展示了CodeGenerator.EmitConvertToString方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: EmitAdd
//.........這裏部分代碼省略.........
{
// r8 + value : r8
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_double_value)
.Expect(SpecialType.System_Double);
}
//
throw new NotImplementedException($"Add(double, {ytype.Name})");
}
else if (xtype.SpecialType == SpecialType.System_Int64)
{
var ytype = cg.EmitConvertIntToLong(cg.Emit(Right)); // int|bool -> long
if (ytype.SpecialType == SpecialType.System_Int64)
{
if (resultTypeOpt != null)
{
if (resultTypeOpt.SpecialType == SpecialType.System_Int64)
{
// (long)(i8 + i8 : number)
il.EmitOpCode(ILOpCode.Add);
return cg.CoreTypes.Long;
}
}
// i8 + i8 : number
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_long_long)
.Expect(cg.CoreTypes.PhpNumber);
}
else if (ytype.SpecialType == SpecialType.System_Double)
{
// i8 + r8 : r8
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_long_double)
.Expect(SpecialType.System_Double);
}
else if (ytype == cg.CoreTypes.PhpNumber)
{
// i8 + number : number
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_long_number)
.Expect(cg.CoreTypes.PhpNumber);
}
else if (ytype == cg.CoreTypes.PhpValue)
{
// i8 + value : number
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_long_value)
.Expect(cg.CoreTypes.PhpNumber);
}
//
throw new NotImplementedException($"Add(int64, {ytype.Name})");
}
else if (xtype == cg.CoreTypes.PhpValue)
{
var ytype = cg.EmitConvertIntToLong(cg.Emit(Right)); // int|bool -> long
// PhpString -> String
if (ytype == cg.CoreTypes.PhpString)
{
cg.EmitConvertToString(ytype, 0);
// continue ...
}
if (ytype.SpecialType == SpecialType.System_Int64)
{
// value + i8 : number
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_value_long)
.Expect(cg.CoreTypes.PhpNumber);
}
else if (ytype.SpecialType == SpecialType.System_Double)
{
// value + r8 : r8
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_value_double)
.Expect(SpecialType.System_Double);
}
else if (ytype == cg.CoreTypes.String)
{
// value + string : number
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_value_string)
.Expect(cg.CoreTypes.PhpNumber);
}
else if (ytype == cg.CoreTypes.PhpNumber)
{
// value + number : number
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_value_number)
.Expect(cg.CoreTypes.PhpNumber);
}
else if (ytype == cg.CoreTypes.PhpValue)
{
// value + value : value
return cg.EmitCall(ILOpCode.Call, cg.CoreMethods.PhpNumber.Add_value_value)
.Expect(cg.CoreTypes.PhpValue);
}
//
throw new NotImplementedException($"Add(PhpValue, {ytype.Name})");
}
//
throw new NotImplementedException($"Add({xtype.Name}, ...)");
}