Example #1
0
        public CoreField(CoreType declaringClass, string fldName)
        {
            Contract.ThrowIfNull(declaringClass);
            Contract.ThrowIfNull(fldName);

            this.DeclaringClass = declaringClass;
            this.FieldName      = fldName;
        }
Example #2
0
        CoreType CreateFromFullName(string fullName)
        {
            var type = new CoreType(fullName);

            _table.Add(fullName, type);

            return(type);
        }
Example #3
0
        public CoreProperty(CoreType declaringClass, string propertyName)
        {
            Contract.ThrowIfNull(declaringClass);
            Contract.ThrowIfNull(propertyName);

            this.DeclaringClass = declaringClass;
            this.PropertyName   = propertyName;
        }
Example #4
0
        public CoreMethod(CoreType declaringClass, string methodName, params CoreType[] ptypes)
        {
            Contract.ThrowIfNull(declaringClass);
            Contract.ThrowIfNull(methodName);

            this.DeclaringClass = declaringClass;
            this.MethodName     = methodName;

            _ptypes = ptypes;
        }
Example #5
0
        public CoreTypes(PhpCompilation compilation)
        {
            Contract.ThrowIfNull(compilation);
            _compilation = compilation;
            _table       = new Dictionary <string, CoreType>();

            Void                = Create(SpecialType.System_Void);
            Object              = Create(SpecialType.System_Object);
            Int32               = Create(SpecialType.System_Int32);
            Long                = Create(SpecialType.System_Int64);
            Double              = Create(SpecialType.System_Double);
            Boolean             = Create(SpecialType.System_Boolean);
            String              = Create(SpecialType.System_String);
            Exception           = CreateFromFullName(WellKnownTypes.GetMetadataName(WellKnownType.System_Exception));
            RuntimeTypeHandle   = Create(SpecialType.System_RuntimeTypeHandle);
            RuntimeMethodHandle = Create(SpecialType.System_RuntimeMethodHandle);

            PhpNumber                  = Create("PhpNumber");
            PhpAlias                   = Create("PhpAlias");
            PhpValue                   = Create("PhpValue");
            PhpString                  = Create("PhpString");
            PhpArray                   = Create("PhpArray");
            PhpResource                = Create("PhpResource");
            IPhpArray                  = Create("IPhpArray");
            IPhpEnumerable             = Create("IPhpEnumerable");
            IPhpCallable               = Create("IPhpCallable");
            IPhpConvertible            = Create("IPhpConvertible");
            IntStringKey               = Create("IntStringKey");
            PhpHashtable               = Create("PhpHashtable");
            ScriptDiedException        = Create("ScriptDiedException");
            Context                    = Create("Context");
            Operators                  = Create("Operators");
            Comparison                 = Create("Comparison");
            StrictComparison           = Create("StrictComparison");
            Convert                    = Create("Convert");
            ScriptAttribute            = Create("ScriptAttribute");
            PhpTraitAttribute          = Create("PhpTraitAttribute");
            PhpHiddenAttribute         = Create("PhpHiddenAttribute");
            PhpFieldsOnlyCtorAttribute = CreateFromFullName(PhpFieldsOnlyCtorAttributeName);
            IStaticInit                = Create("IStaticInit");
            RoutineInfo                = Create("Reflection.RoutineInfo");
            stdClass                   = CreateFromFullName("stdClass");
            ArrayAccess                = CreateFromFullName("ArrayAccess");

            CallBinderFactory   = Create("Dynamic.CallBinderFactory");
            GetClassConstBinder = Create("Dynamic.GetClassConstBinder");
            GetFieldBinder      = Create("Dynamic.GetFieldBinder");
            SetFieldBinder      = Create("Dynamic.SetFieldBinder");
            AccessFlags         = Create("Dynamic.AccessFlags");

            PhpTypeInfoExtension = Create("Reflection.PhpTypeInfoExtension");
            PhpTypeInfo          = Create("Reflection.PhpTypeInfo");
        }
Example #6
0
        public CoreTypes(PhpCompilation compilation)
        {
            Contract.ThrowIfNull(compilation);
            _compilation = compilation;
            _table       = new Dictionary <string, CoreType>();

            Void                = Create(SpecialType.System_Void);
            Object              = Create(SpecialType.System_Object);
            Int32               = Create(SpecialType.System_Int32);
            Long                = Create(SpecialType.System_Int64);
            Double              = Create(SpecialType.System_Double);
            Boolean             = Create(SpecialType.System_Boolean);
            String              = Create(SpecialType.System_String);
            Exception           = CreateFromFullName(WellKnownTypes.GetMetadataName(WellKnownType.System_Exception));
            RuntimeTypeHandle   = Create(SpecialType.System_RuntimeTypeHandle);
            RuntimeMethodHandle = Create(SpecialType.System_RuntimeMethodHandle);

            PhpNumber                    = Create("PhpNumber");
            PhpAlias                     = Create("PhpAlias");
            PhpValue                     = Create("PhpValue");
            PhpString                    = Create("PhpString");
            PhpArray                     = Create("PhpArray");
            PhpResource                  = Create("PhpResource");
            IPhpArray                    = Create("IPhpArray");
            IPhpEnumerable               = Create("IPhpEnumerable");
            IPhpCallable                 = Create("IPhpCallable");
            IPhpConvertible              = Create("IPhpConvertible");
            PhpString_Blob               = Create("PhpString+Blob");
            IntStringKey                 = Create("IntStringKey");
            PhpHashtable                 = Create("PhpHashtable");
            ScriptDiedException          = Create("ScriptDiedException");
            Context                      = Create("Context");
            Operators                    = Create("Operators");
            Comparison                   = Create("Comparison");
            StrictComparison             = Create("StrictComparison");
            Convert                      = Create("Convert");
            PhpException                 = Create("PhpException");
            ScriptAttribute              = Create("ScriptAttribute");
            PhpTraitAttribute            = Create(PhpTraitAttributeName);
            PhpTypeAttribute             = Create("PhpTypeAttribute");
            PhpHiddenAttribute           = Create("PhpHiddenAttribute");
            PhpFieldsOnlyCtorAttribute   = Create(PhpFieldsOnlyCtorAttributeName);
            NotNullAttribute             = Create("NotNullAttribute");
            PhpMemberVisibilityAttribute = Create(PhpMemberVisibilityAttributeName);
            IStaticInit                  = Create("IStaticInit");
            RoutineInfo                  = Create("Reflection.RoutineInfo");
            stdClass                     = CreateFromFullName("stdClass");
            ArrayAccess                  = CreateFromFullName("ArrayAccess");
            Closure                      = CreateFromFullName("Closure");

            BinderFactory       = Create("Dynamic.BinderFactory");
            GetClassConstBinder = Create("Dynamic.GetClassConstBinder");
            GetFieldBinder      = Create("Dynamic.GetFieldBinder");
            SetFieldBinder      = Create("Dynamic.SetFieldBinder");
            AccessMask          = CreateFromFullName("Pchp.CodeAnalysis.Semantics.AccessMask");

            Dynamic_NameParam_T      = Create("Dynamic.NameParam`1");
            Dynamic_TargetTypeParam  = Create("Dynamic.TargetTypeParam");
            Dynamic_CallerTypeParam  = Create("Dynamic.CallerTypeParam");
            Dynamic_UnpackingParam_T = Create("Dynamic.UnpackingParam`1");

            PhpTypeInfoExtension = Create("Reflection.PhpTypeInfoExtension");
            PhpTypeInfo          = Create("Reflection.PhpTypeInfo");
            CommonPhpArrayKeys   = Create("CommonPhpArrayKeys");

            Iterator  = CreateFromFullName("Iterator");
            Generator = CreateFromFullName("Generator");
            GeneratorStateMachineDelegate = CreateFromFullName("GeneratorStateMachineDelegate");

            IntPtr = CreateFromFullName("System.IntPtr");
        }
Example #7
0
 public static CoreConstructor Ctor(this CoreType type, params CoreType[] ptypes) => new CoreConstructor(type, ptypes);
Example #8
0
 public static CoreOperator Operator(this CoreType type, string name, params CoreType[] ptypes) => new CoreOperator(type, name, ptypes);
Example #9
0
 public static CoreField Field(this CoreType type, string name) => new CoreField(type, name);
Example #10
0
 public static CoreProperty Property(this CoreType type, string name) => new CoreProperty(type, name);
Example #11
0
 public static CoreMethod Method(this CoreType type, string name, params CoreType[] ptypes) => new CoreMethod(type, name, ptypes);
Example #12
0
 public static CoreCast CastImplicit(this CoreType type, CoreType target) => new CoreCast(type, target, false);
Example #13
0
 public CoreExplicitCast(CoreType declaringClass, CoreType castTo)
     : base(declaringClass, WellKnownMemberNames.ExplicitConversionName, declaringClass)
 {
     _castTo = castTo;
 }
Example #14
0
 /// <summary>
 /// Creates the descriptor.
 /// </summary>
 /// <param name="declaringClass">Containing class.</param>
 /// <param name="name">Operator name, without <c>op_</c> prefix.</param>
 /// <param name="ptypes">CLR parameters.</param>
 public CoreOperator(CoreType declaringClass, string name, params CoreType[] ptypes)
     : base(declaringClass, name, ptypes)
 {
     Debug.Assert(name.StartsWith("op_"));
 }
Example #15
0
 public CoreConstructor(CoreType declaringClass, params CoreType[] ptypes)
     : base(declaringClass, ".ctor", ptypes)
 {
 }
Example #16
0
        public CoreTypes(PhpCompilation compilation)
        {
            Contract.ThrowIfNull(compilation);
            _compilation = compilation;
            _table       = new Dictionary <string, CoreType>();

            Void                = Create(SpecialType.System_Void);
            Object              = Create(SpecialType.System_Object);
            Byte                = Create(SpecialType.System_Byte);
            Int32               = Create(SpecialType.System_Int32);
            Long                = Create(SpecialType.System_Int64);
            Double              = Create(SpecialType.System_Double);
            Boolean             = Create(SpecialType.System_Boolean);
            String              = Create(SpecialType.System_String);
            Exception           = CreateFromFullName(WellKnownTypes.GetMetadataName(WellKnownType.System_Exception));
            RuntimeTypeHandle   = Create(SpecialType.System_RuntimeTypeHandle);
            RuntimeMethodHandle = Create(SpecialType.System_RuntimeMethodHandle);

            PhpNumber                    = Create("PhpNumber");
            PhpAlias                     = Create("PhpAlias");
            PhpValue                     = Create("PhpValue");
            PhpString                    = Create("PhpString");
            PhpArray                     = Create("PhpArray");
            PhpResource                  = Create("PhpResource");
            IPhpArray                    = Create("IPhpArray");
            IPhpEnumerable               = Create("IPhpEnumerable");
            IPhpCallable                 = Create("IPhpCallable");
            IPhpConvertible              = Create("IPhpConvertible");
            PhpString_Blob               = Create("PhpString+Blob");
            IntStringKey                 = Create("IntStringKey");
            PhpHashtable                 = Create("PhpHashtable");
            ScriptDiedException          = Create("ScriptDiedException");
            Context                      = Create("Context");
            Operators                    = Create("Operators");
            Comparison                   = Create("Comparison");
            StrictComparison             = Create("StrictComparison");
            Convert                      = Create("Convert");
            StrictConvert                = Create("StrictConvert");
            PhpException                 = Create("PhpException");
            PhpCallableToDelegate        = Create("PhpCallableToDelegate`1"); // Arity 1
            ScriptAttribute              = Create("ScriptAttribute");
            PhpTraitAttribute            = Create(PhpTraitAttributeName);
            PharAttribute                = Create("PharAttribute");
            PhpTypeAttribute             = Create("PhpTypeAttribute");
            PhpHiddenAttribute           = Create("PhpHiddenAttribute");
            ImportValueAttribute         = Create("ImportValueAttribute");
            DummyFieldsOnlyCtor          = Create("DummyFieldsOnlyCtor");
            PhpFieldsOnlyCtorAttribute   = Create(PhpFieldsOnlyCtorAttributeName);
            DefaultValueAttribute        = Create("DefaultValueAttribute");
            PhpCustomAtribute            = Create(nameof(PhpCustomAtribute));
            PhpMemberVisibilityAttribute = Create(PhpMemberVisibilityAttributeName);
            NullableAttribute            = CreateFromFullName("System.Runtime.CompilerServices.NullableAttribute");
            NullableContextAttribute     = CreateFromFullName("System.Runtime.CompilerServices.NullableContextAttribute");
            IStaticInit                  = Create("IStaticInit");
            RoutineInfo                  = Create("Reflection.RoutineInfo");
            IndirectLocal                = Create("IndirectLocal");
            stdClass                     = CreateFromFullName("stdClass");
            ArrayAccess                  = CreateFromFullName("ArrayAccess");
            Closure                      = CreateFromFullName("Closure");

            BinderFactory       = Create("Dynamic.BinderFactory");
            GetClassConstBinder = Create("Dynamic.GetClassConstBinder");
            GetFieldBinder      = Create("Dynamic.GetFieldBinder");
            SetFieldBinder      = Create("Dynamic.SetFieldBinder");
            AccessMask          = CreateFromFullName("Pchp.CodeAnalysis.Semantics.AccessMask");

            Dynamic_NameParam_T         = Create("Dynamic.NameParam`1");
            Dynamic_TargetTypeParam     = Create("Dynamic.TargetTypeParam");
            Dynamic_LateStaticTypeParam = Create("Dynamic.LateStaticTypeParam");
            Dynamic_CallerTypeParam     = Create("Dynamic.CallerTypeParam");
            Dynamic_UnpackingParam_T    = Create("Dynamic.UnpackingParam`1");

            RuntimeChain_ChainEnd       = Create("Dynamic.RuntimeChain.ChainEnd");
            RuntimeChain_Value_T        = Create("Dynamic.RuntimeChain.Value`1");
            RuntimeChain_Property_T     = Create("Dynamic.RuntimeChain.Property`1");
            RuntimeChain_ArrayItem_T    = Create("Dynamic.RuntimeChain.ArrayItem`1");
            RuntimeChain_ArrayNewItem_T = Create("Dynamic.RuntimeChain.ArrayNewItem`1");

            PhpTypeInfoExtension = Create("Reflection.PhpTypeInfoExtension");
            PhpTypeInfo          = Create("Reflection.PhpTypeInfo");
            CommonPhpArrayKeys   = Create("CommonPhpArrayKeys");
            Helpers           = Create("Utilities.Helpers");
            PhpValueConverter = Create(nameof(PhpValueConverter));

            Iterator    = CreateFromFullName("Iterator");
            Traversable = CreateFromFullName("Traversable");
            Stringable  = CreateFromFullName("Stringable");
            Generator   = CreateFromFullName("Generator");
            GeneratorStateMachineDelegate = CreateFromFullName("GeneratorStateMachineDelegate");

            MainDelegate = Create("Context+MainDelegate");
            IntPtr       = CreateFromFullName("System.IntPtr");
            IDictionary  = CreateFromFullName("System.Collections.IDictionary");
        }