Pchp.CodeAnalysis.FlowAnalysis.TypeRefContext.GetWritableStringTypeMask C# (CSharp) Method

GetWritableStringTypeMask() public method

Gets writable string type (a string builder) for this context.
public GetWritableStringTypeMask ( ) : TypeRefMask
return TypeRefMask
        public TypeRefMask GetWritableStringTypeMask()
        {
            if (_isWritableStringMask != 0)
            {
                return new TypeRefMask(_isWritableStringMask);
            }
            else
            {
                return GetPrimitiveTypeRefMaskNoCheck(TypeRefFactory.WritableStringRef);
            }
        }

Usage Example

コード例 #1
0
ファイル: TypeRefFactory.cs プロジェクト: iolevel/peachpie
        public static TypeRefMask CreateMask(TypeRefContext ctx, TypeSymbol t)
        {
            Contract.ThrowIfNull(t);

            switch (t.SpecialType)
            {
                case SpecialType.System_Void: return 0;
                case SpecialType.System_Int64: return ctx.GetLongTypeMask();
                case SpecialType.System_String: return ctx.GetStringTypeMask();
                case SpecialType.System_Double: return ctx.GetDoubleTypeMask();
                case SpecialType.System_Boolean: return ctx.GetBooleanTypeMask();
                case SpecialType.None:
                    var containing = t.ContainingAssembly;
                    if (containing != null && containing.IsPchpCorLibrary)
                    {
                        if (t.Name == "PhpValue") return TypeRefMask.AnyType;
                        if (t.Name == "PhpAlias") return TypeRefMask.AnyType.WithRefFlag;
                        if (t.Name == "PhpNumber") return ctx.GetNumberTypeMask();
                        if (t.Name == "PhpString") return ctx.GetWritableStringTypeMask();
                        if (t.Name == "PhpArray") return ctx.GetArrayTypeMask();
                        if (t.Name == "IPhpCallable") return ctx.GetCallableTypeMask();
                    }

                    break;
            }

            return CreateMask(ctx, CreateTypeRef(ctx, t));
        }