コード例 #1
0
        public IType FindType(BVEPrimitiveTypeCode typeCode)
        {
            IType type = LazyInit.VolatileRead(ref primitive_types[(int)typeCode]);
            if(type != null)
                return type;

            return LazyInit.GetOrSet(ref primitive_types[(int)typeCode], SearchType(typeCode));
        }
コード例 #2
0
        IType SearchType(BVEPrimitiveTypeCode typeCode)
        {
            var type_ref = PrimitiveTypeReference.Get(typeCode);
            if(type_ref == null)
                return SpecialType.UnknownType;

            var type_name = new TopLevelTypeName(type_ref.Namespace, type_ref.Name, 0);
            foreach(var asm in compilation.Assemblies){
                var type_def = asm.GetTypeDefinition(type_name);
                if(type_def != null)
                    return type_def;
            }
            return new UnknownType(type_name);
        }
コード例 #3
0
 public IType FindType(BVEPrimitiveTypeCode typeCode)
 {
     return type_cache.FindType(typeCode);
 }
コード例 #4
0
        public static PrimitiveTypeReference Get(BVEPrimitiveTypeCode typeCode)
        {
            switch(typeCode){
            case BVEPrimitiveTypeCode.None:
                return Void;

            case BVEPrimitiveTypeCode.Integer:
                return Integer;

            case BVEPrimitiveTypeCode.Float:
                return Float;

            case BVEPrimitiveTypeCode.Name:
                return NameType;

            case BVEPrimitiveTypeCode.FilePath:
                return Path;

            case BVEPrimitiveTypeCode.Time:
                return Time;

            case BVEPrimitiveTypeCode.EnumTilt:
                return EnumTilt;

            case BVEPrimitiveTypeCode.EnumDirection:
                return EnumDirection;

            case BVEPrimitiveTypeCode.EnumForwardDirection:
                return EnumForward;

            default:
                throw new InvalidOperationException();
            }
        }
コード例 #5
0
 public PrimitiveTypeReference(BVEPrimitiveTypeCode typeCode, string typeName)
 {
     type_code = typeCode;
     name = typeName;
     @namespace = "global";
 }