Пример #1
0
        public string get_type_string(grammar.MemberType memberType, SymbolTable symbolTable, bool isExpert)
        {
            const string StorageListFormat = "{0}*";

            var typeName = GetStorageType(memberType, symbolTable);

            var isList = (memberType.Kind() & grammar.MemberKind.List) != 0;
            var format = StorageListFormat;

            return(GetTypeString(format, typeName, isList));
        }
Пример #2
0
        private string GetStorageType(grammar.MemberType memberType, SymbolTable symbolTable)
        {
            var type = memberType.Kind() & ~grammar.MemberKind.List;

            switch (type)
            {
            case grammar.MemberKind.blobType:
                return("char *");

            case grammar.MemberKind.enumType:
                goto case grammar.MemberKind.structType;

            case grammar.MemberKind.f32Type:
                return("float ");

            case grammar.MemberKind.f64Type:
                return("double ");

            case grammar.MemberKind.i32Type:
                return("signed long ");

            case grammar.MemberKind.i64Type:
                return("signed long long ");

            case grammar.MemberKind.stringType:
                return("char *");

            case grammar.MemberKind.structType:
            {
                var fullName  = memberType.TypeName();
                var real_type = symbolTable.Get(fullName);

                var type_name = real_type.FullName();
                type_name += " *";

                return(type_name);
            }

            case grammar.MemberKind.timespanType:
            case grammar.MemberKind.timestampType:
                goto case grammar.MemberKind.u64Type;

            case grammar.MemberKind.u32Type:
                return("unsigned long ");

            case grammar.MemberKind.u64Type:
                return("unsigned long long ");
            }

            throw new Exception("NEED TYPED EXCEPTION HERE");
        }
Пример #3
0
        private string GetExportType(grammar.MemberType memberType, SymbolTable symbolTable)
        {
            var type = memberType.Kind() & ~grammar.MemberKind.List;

            switch (type)
            {
            case grammar.MemberKind.blobType:
                return("byte[]");

            case grammar.MemberKind.enumType:
                goto case grammar.MemberKind.structType;

            case grammar.MemberKind.f32Type:
                return("float");

            case grammar.MemberKind.f64Type:
                return("double");

            case grammar.MemberKind.i32Type:
                return("int");

            case grammar.MemberKind.i64Type:
                return("long");

            case grammar.MemberKind.stringType:
                return("string");

            case grammar.MemberKind.structType:
            {
                var full_name = memberType.TypeName();
                var real_type = symbolTable.Get(full_name);

                return(real_type.FullName());
            }

            case grammar.MemberKind.timespanType:
                return("System.TimeSpan");

            case grammar.MemberKind.timestampType:
                return("System.DateTime");

            case grammar.MemberKind.u32Type:
                return("uint");

            case grammar.MemberKind.u64Type:
                return("ulong");
            }

            throw new Exception("NEED TYPED EXCEPTION HERE");
        }
Пример #4
0
        public string GetTypeString(grammar.MemberType memberType, SymbolTable symbolTable, bool isExported)
        {
            const string export_list_format  = "System.Collections.Generic.IReadOnlyList<{0}>";
            const string storage_list_format = "{0}[]";

            var type_name = (isExported)
                ? GetExportType(memberType, symbolTable)
                : GetStorageTypeName(memberType, symbolTable);

            var is_list = (memberType.Kind() & grammar.MemberKind.List) != 0;
            var format  = (isExported)
                ? export_list_format
                : storage_list_format;

            return(GetTypeString(format, type_name, is_list));
        }