Esempio n. 1
0
        private double internalReadDouble(int code)
        {
            switch (code)
            {
            case Codes.DOUBLE:
                return(rawInput.readRawDouble());

            case Codes.DOUBLE_0:
                return(0.0D);

            case Codes.DOUBLE_1:
                return(1.0D);

            default:
            {
                Object o = read(code);
                if (o is Double)
                {
                    return((Double)o);
                }
                else
                {
                    throw Fns.expected("double", code, o);
                }
            }
            }
        }
Esempio n. 2
0
        private byte[] internalReadChunkedBytes()
        {
            IList <byte[]> chunks = new List <byte[]>();
            int            code   = Codes.BYTES_CHUNK;

            while (code == Codes.BYTES_CHUNK)
            {
                chunks.Add(internalReadBytes(readCount()));
                code = readNextCode();
            }
            if (code != Codes.BYTES)
            {
                throw Fns.expected("conclusion of chunked bytes", code);
            }
            chunks.Add(internalReadBytes(readCount()));
            int length = 0;

            for (int n = 0; n < chunks.Count; n++)
            {
                length = length + chunks[n].Length;
            }
            byte[] result = new byte[length];
            int    pos    = 0;

            for (int n = 0; n < chunks.Count; n++)
            {
                Array.Copy(chunks[n], 0, result, pos, chunks[n].Length);
                pos += chunks[n].Length;
            }
            return(result);
        }
Esempio n. 3
0
        public bool readBoolean()
        {
            int code = readNextCode();

            switch (code)
            {
            case Codes.TRUE:
                return(true);

            case Codes.FALSE:
                return(false);

            default:
            {
                Object result = read(code);
                if (result is Boolean)
                {
                    return((Boolean)result);
                }
                else
                {
                    throw Fns.expected("boolean", code, result);
                }
            }
            }
        }
Esempio n. 4
0
        public float readFloat()
        {
            int   code = readNextCode();
            float result;

            switch (code)
            {
            case Codes.FLOAT:
                result = rawInput.readRawFloat();
                break;

            default:
            {
                Object o = read(code);
                if (o is Single)
                {
                    return((Single)o);
                }
                else
                {
                    throw Fns.expected("float", code, o);
                }
            }
            }
            return(result);
        }
Esempio n. 5
0
            public void Solve()
            {
                var figNodes = new List <Node> [Fns.Count()];

                for (var ifig = 0; ifig < Fns.Count(); ifig++)
                {
                    figNodes[ifig] = GetFigs(Fns[ifig]).Select(i => new Node(i, ifig + 3)).ToList();
                }

                for (var ifig = 0; ifig < Fns.Count(); ifig++)
                {
                    for (var jfig = 0; jfig < Fns.Count(); jfig++)
                    {
                        if (jfig == ifig)
                        {
                            continue;
                        }

                        foreach (var inode in figNodes[ifig])
                        {
                            inode.Incorporate(figNodes[jfig]);
                        }
                    }
                }

                foreach (var node in figNodes[5])
                {
                    List <Node> path;
                    if ((path = node.FindCycle()) != null)
                    {
                        WriteLine(path.Select(n => n.Figurate).Sum());
                    }
                }
            }
Esempio n. 6
0
 // returns (bits not needed to represent this number) + 1
 private int bitSwitch(long l)
 {
     if (l < 0)
     {
         l = ~l;
     }
     return(Fns.numberOfLeadingZeros(l));
 }
Esempio n. 7
0
 private StringBuilder internalReadStringBuffer(StringBuilder buf, int length)
 {
     if ((byteBuffer == null) || (byteBuffer.Length < length))
     {
         byteBuffer = new byte[length];
     }
     rawInput.readFully(byteBuffer, 0, length);
     Fns.readUTF8Chars(buf, byteBuffer, 0, length);
     return(buf);
 }
Esempio n. 8
0
        private void ResolveFnName(Lexeme nameToken, IList <FnDecl> list)
        {
            if (Fns.ContainsKey(nameToken.Value))
            {
                foreach (var fn in Fns[nameToken.Value])
                {
                    list.Add(fn);
                }
            }

            Parent?.ResolveFnName(nameToken, list);
        }
Esempio n. 9
0
        public void AddFn(Lexeme nameToken, FnDecl node, ErrorHandler errorHandler)
        {
            string fnName = nameToken.Value;

            if (!Fns.ContainsKey(fnName))
            {
                Fns.Add(fnName, new List <FnDecl>());
            }

            if (Fns[fnName].Any(fn => fn.Signature == node.Signature))
            {
                errorHandler.AddMessage(Severity.Error, $"A function overload with the same signature already exists",
                                        nameToken);
            }
            Fns[fnName].Add(node);
        }
Esempio n. 10
0
        public WriteHandler getWriteHandler(String tag, Object o)
        {
            IDictionary <String, WriteHandler> h = Fns.lookup <Type, IDictionary <string, WriteHandler> >(chainedLookup, Fns.getClassOrNull(o));

            if (h == null)
            {
                return(null);
            }
            KeyValuePair <String, WriteHandler> taggedWriter = Fns.soloEntry(h);

            if (tag != null && !tag.Equals(taggedWriter.Key) && !taggedWriter.Key.Equals("any"))
            {
                return(null);
            }
            else
            {
                return(taggedWriter.Value);
            }
        }
Esempio n. 11
0
        private Object handleStruct(Object tag, int fields)
        {
            ReadHandler h = Fns.lookup <object, ReadHandler>(handlerLookup, tag);

            if (h == null)
            {
                if (standardExtensionHandlers.ContainsKey(tag))
                {
                    h = standardExtensionHandlers[tag];
                }
            }
            if (h == null)
            {
                return(new TaggedObject(tag, readObjects(fields)));
            }
            else
            {
                return(h.read(this, tag, fields));
            }
        }
Esempio n. 12
0
        public Writer writeString(Object o)
        {
            if (o == null)
            {
                writeNull();
                return(this);
            }
            string s            = (string)o;
            int    stringPos    = 0;
            int    bufPos       = 0;
            int    maxBufNeeded = Math.Min(s.Length * 3, 65536);

            if ((stringBuffer == null) || (stringBuffer.Length < maxBufNeeded))
            {
                stringBuffer = new byte[maxBufNeeded];
            }
            do
            {
                int[] temp = Fns.bufferStringChunkUTF8(s, stringPos, stringBuffer);
                stringPos = temp[0];
                bufPos    = temp[1];
                if (bufPos < Ranges.STRING_PACKED_LENGTH_END)
                {
                    rawOut.writeRawByte((int)(Codes.STRING_PACKED_LENGTH_START + bufPos));
                }
                else if (stringPos == s.Length)
                {
                    writeCode(Codes.STRING);
                    writeCount(bufPos);
                }
                else
                {
                    writeCode(Codes.STRING_CHUNK);
                    writeCount(bufPos);
                }
                rawOut.writeRawBytes(stringBuffer, 0, bufPos);
            } while (stringPos < s.Length);

            return(this);
        }
Esempio n. 13
0
        private String internalReadChunkedString(int length)
        {
            StringBuilder buf  = internalReadString(length);
            bool          done = false;

            while (!done)
            {
                int code = readNextCode();
                switch (code)
                {
                case Codes.STRING_PACKED_LENGTH_START + 0:
                case Codes.STRING_PACKED_LENGTH_START + 1:
                case Codes.STRING_PACKED_LENGTH_START + 2:
                case Codes.STRING_PACKED_LENGTH_START + 3:
                case Codes.STRING_PACKED_LENGTH_START + 4:
                case Codes.STRING_PACKED_LENGTH_START + 5:
                case Codes.STRING_PACKED_LENGTH_START + 6:
                case Codes.STRING_PACKED_LENGTH_START + 7:
                    internalReadStringBuffer(buf, code - Codes.STRING_PACKED_LENGTH_START).ToString();
                    done = true;
                    break;

                case Codes.STRING:
                    internalReadStringBuffer(buf, readCount());
                    done = true;
                    break;

                case Codes.STRING_CHUNK:
                    internalReadStringBuffer(buf, readCount());
                    break;

                default:
                    throw Fns.expected("chunked string", code);
                }
            }
            return(buf.ToString());
        }
 /// <summary>
 /// 初始化Github项目中readthedocs的配置
 /// </summary>
 /// <param name="value"></param>
 /// <param name="log"></param>
 /// <returns></returns>
 public static async Task ApiresourcePublishGithubReadthedocs([QueueTrigger("apiresource-publish-github-readthedocs")] GithubQueueModel value, TextWriter log)
 {
     await Fns.ApiresourcePublishGithubReadthedocs(value, log);
 }
 /// <summary>
 /// 发送邮件通知给订阅者
 /// </summary>
 /// <param name="apiId"></param>
 /// <param name="log"></param>
 /// <returns></returns>
 public static async Task ApiresourcePublishNotify([QueueTrigger("apiresource-publish")] string apiId, TextWriter log)
 {
     await Fns.ApiresourcePublishNotify(apiId, log);
 }
 /// <summary>
 /// 发布NPM包
 /// </summary>
 /// <param name="packageUrl"></param>
 /// <param name="log"></param>
 /// <returns></returns>
 public static async Task ReleasePackage_NPM([QueueTrigger("publish-package-npm")] string packageUrl, TextWriter log)
 {
     await Fns.ReleasePackage_NPM(packageUrl, log);
 }
Esempio n. 17
0
        private Object read(int code)
        {
            Object result;

            switch (code)
            {
            //INT_PACKED_1_FIRST
            case 0xFF:
                result = -1L;
                break;

            case 0x00:
            case 0x01:
            case 0x02:
            case 0x03:
            case 0x04:
            case 0x05:
            case 0x06:
            case 0x07:
            case 0x08:
            case 0x09:
            case 0x0A:
            case 0x0B:
            case 0x0C:
            case 0x0D:
            case 0x0E:
            case 0x0F:
            case 0x10:
            case 0x11:
            case 0x12:
            case 0x13:
            case 0x14:
            case 0x15:
            case 0x16:
            case 0x17:
            case 0x18:
            case 0x19:
            case 0x1A:
            case 0x1B:
            case 0x1C:
            case 0x1D:
            case 0x1E:
            case 0x1F:
            case 0x20:
            case 0x21:
            case 0x22:
            case 0x23:
            case 0x24:
            case 0x25:
            case 0x26:
            case 0x27:
            case 0x28:
            case 0x29:
            case 0x2A:
            case 0x2B:
            case 0x2C:
            case 0x2D:
            case 0x2E:
            case 0x2F:
            case 0x30:
            case 0x31:
            case 0x32:
            case 0x33:
            case 0x34:
            case 0x35:
            case 0x36:
            case 0x37:
            case 0x38:
            case 0x39:
            case 0x3A:
            case 0x3B:
            case 0x3C:
            case 0x3D:
            case 0x3E:
            case 0x3F:
                result = (long)code & 0xff;
                break;

            //  INT_PACKED_2_FIRST
            case 0x40:
            case 0x41:
            case 0x42:
            case 0x43:
            case 0x44:
            case 0x45:
            case 0x46:
            case 0x47:
            case 0x48:
            case 0x49:
            case 0x4A:
            case 0x4B:
            case 0x4C:
            case 0x4D:
            case 0x4E:
            case 0x4F:
            case 0x50:
            case 0x51:
            case 0x52:
            case 0x53:
            case 0x54:
            case 0x55:
            case 0x56:
            case 0x57:
            case 0x58:
            case 0x59:
            case 0x5A:
            case 0x5B:
            case 0x5C:
            case 0x5D:
            case 0x5E:
            case 0x5F:
                result = ((long)(code - Codes.INT_PACKED_2_ZERO) << 8) | rawInput.readRawInt8();
                break;

            //  INT_PACKED_3_FIRST
            case 0x60:
            case 0x61:
            case 0x62:
            case 0x63:
            case 0x64:
            case 0x65:
            case 0x66:
            case 0x67:
            case 0x68:
            case 0x69:
            case 0x6A:
            case 0x6B:
            case 0x6C:
            case 0x6D:
            case 0x6E:
            case 0x6F:
                result = ((long)(code - Codes.INT_PACKED_3_ZERO) << 16) | rawInput.readRawInt16();
                break;

            //  INT_PACKED_4_FIRST
            case 0x70:
            case 0x71:
            case 0x72:
            case 0x73:
                result = ((long)(code - Codes.INT_PACKED_4_ZERO << 24)) | rawInput.readRawInt24();
                break;

            //  INT_PACKED_5_FIRST
            case 0x74:
            case 0x75:
            case 0x76:
            case 0x77:
                result = ((long)(code - Codes.INT_PACKED_5_ZERO) << 32) | rawInput.readRawInt32();
                break;

            //  INT_PACKED_6_FIRST
            case 0x78:
            case 0x79:
            case 0x7A:
            case 0x7B:
                result = (((long)code - Codes.INT_PACKED_6_ZERO) << 40) | rawInput.readRawInt40();
                break;

            //  INT_PACKED_7_FIRST
            case 0x7C:
            case 0x7D:
            case 0x7E:
            case 0x7F:
                result = (((long)code - Codes.INT_PACKED_7_ZERO) << 48) | rawInput.readRawInt48();
                break;

            case Codes.PUT_PRIORITY_CACHE:
                result = readAndCacheObject(getPriorityCache());
                break;

            case Codes.GET_PRIORITY_CACHE:
                result = lookupCache(getPriorityCache(), readInt32());
                break;

            case Codes.PRIORITY_CACHE_PACKED_START + 0:
            case Codes.PRIORITY_CACHE_PACKED_START + 1:
            case Codes.PRIORITY_CACHE_PACKED_START + 2:
            case Codes.PRIORITY_CACHE_PACKED_START + 3:
            case Codes.PRIORITY_CACHE_PACKED_START + 4:
            case Codes.PRIORITY_CACHE_PACKED_START + 5:
            case Codes.PRIORITY_CACHE_PACKED_START + 6:
            case Codes.PRIORITY_CACHE_PACKED_START + 7:
            case Codes.PRIORITY_CACHE_PACKED_START + 8:
            case Codes.PRIORITY_CACHE_PACKED_START + 9:
            case Codes.PRIORITY_CACHE_PACKED_START + 10:
            case Codes.PRIORITY_CACHE_PACKED_START + 11:
            case Codes.PRIORITY_CACHE_PACKED_START + 12:
            case Codes.PRIORITY_CACHE_PACKED_START + 13:
            case Codes.PRIORITY_CACHE_PACKED_START + 14:
            case Codes.PRIORITY_CACHE_PACKED_START + 15:
            case Codes.PRIORITY_CACHE_PACKED_START + 16:
            case Codes.PRIORITY_CACHE_PACKED_START + 17:
            case Codes.PRIORITY_CACHE_PACKED_START + 18:
            case Codes.PRIORITY_CACHE_PACKED_START + 19:
            case Codes.PRIORITY_CACHE_PACKED_START + 20:
            case Codes.PRIORITY_CACHE_PACKED_START + 21:
            case Codes.PRIORITY_CACHE_PACKED_START + 22:
            case Codes.PRIORITY_CACHE_PACKED_START + 23:
            case Codes.PRIORITY_CACHE_PACKED_START + 24:
            case Codes.PRIORITY_CACHE_PACKED_START + 25:
            case Codes.PRIORITY_CACHE_PACKED_START + 26:
            case Codes.PRIORITY_CACHE_PACKED_START + 27:
            case Codes.PRIORITY_CACHE_PACKED_START + 28:
            case Codes.PRIORITY_CACHE_PACKED_START + 29:
            case Codes.PRIORITY_CACHE_PACKED_START + 30:
            case Codes.PRIORITY_CACHE_PACKED_START + 31:
                result = lookupCache(getPriorityCache(), code - Codes.PRIORITY_CACHE_PACKED_START);
                break;

            case Codes.STRUCT_CACHE_PACKED_START + 0:
            case Codes.STRUCT_CACHE_PACKED_START + 1:
            case Codes.STRUCT_CACHE_PACKED_START + 2:
            case Codes.STRUCT_CACHE_PACKED_START + 3:
            case Codes.STRUCT_CACHE_PACKED_START + 4:
            case Codes.STRUCT_CACHE_PACKED_START + 5:
            case Codes.STRUCT_CACHE_PACKED_START + 6:
            case Codes.STRUCT_CACHE_PACKED_START + 7:
            case Codes.STRUCT_CACHE_PACKED_START + 8:
            case Codes.STRUCT_CACHE_PACKED_START + 9:
            case Codes.STRUCT_CACHE_PACKED_START + 10:
            case Codes.STRUCT_CACHE_PACKED_START + 11:
            case Codes.STRUCT_CACHE_PACKED_START + 12:
            case Codes.STRUCT_CACHE_PACKED_START + 13:
            case Codes.STRUCT_CACHE_PACKED_START + 14:
            case Codes.STRUCT_CACHE_PACKED_START + 15:
            {
                StructType st = (StructType)lookupCache(getStructCache(), code - Codes.STRUCT_CACHE_PACKED_START);
                result = handleStruct(st.tag, st.fields);
                break;
            }

            case Codes.MAP:
                result = handleStruct("map", 1);
                break;

            case Codes.SET:
                result = handleStruct("set", 1);
                break;

            case Codes.UUID:
                result = handleStruct("uuid", 2);
                break;

            case Codes.REGEX:
                result = handleStruct("regex", 1);
                break;

            case Codes.URI:
                result = handleStruct("uri", 1);
                break;

            case Codes.BIGINT:
                result = handleStruct("bigint", 1);
                break;

            case Codes.BIGDEC:
                result = handleStruct("bigdec", 2);
                break;

            case Codes.INST:
                result = handleStruct("inst", 1);
                break;

            case Codes.SYM:
                result = handleStruct("sym", 2);
                break;

            case Codes.KEY:
                result = handleStruct("key", 2);
                break;

            case Codes.INT_ARRAY:
                result = handleStruct("int[]", 2);
                break;

            case Codes.LONG_ARRAY:
                result = handleStruct("long[]", 2);
                break;

            case Codes.FLOAT_ARRAY:
                result = handleStruct("float[]", 2);
                break;

            case Codes.BOOLEAN_ARRAY:
                result = handleStruct("boolean[]", 2);
                break;

            case Codes.DOUBLE_ARRAY:
                result = handleStruct("double[]", 2);
                break;

            case Codes.OBJECT_ARRAY:
                result = handleStruct("Object[]", 2);
                break;

            case Codes.BYTES_PACKED_LENGTH_START + 0:
            case Codes.BYTES_PACKED_LENGTH_START + 1:
            case Codes.BYTES_PACKED_LENGTH_START + 2:
            case Codes.BYTES_PACKED_LENGTH_START + 3:
            case Codes.BYTES_PACKED_LENGTH_START + 4:
            case Codes.BYTES_PACKED_LENGTH_START + 5:
            case Codes.BYTES_PACKED_LENGTH_START + 6:
            case Codes.BYTES_PACKED_LENGTH_START + 7:
                result = internalReadBytes(code - Codes.BYTES_PACKED_LENGTH_START);
                break;

            case Codes.BYTES:
                result = internalReadBytes(readCount());
                break;

            case Codes.BYTES_CHUNK:
                result = internalReadChunkedBytes();
                break;

            case Codes.STRING_PACKED_LENGTH_START + 0:
            case Codes.STRING_PACKED_LENGTH_START + 1:
            case Codes.STRING_PACKED_LENGTH_START + 2:
            case Codes.STRING_PACKED_LENGTH_START + 3:
            case Codes.STRING_PACKED_LENGTH_START + 4:
            case Codes.STRING_PACKED_LENGTH_START + 5:
            case Codes.STRING_PACKED_LENGTH_START + 6:
            case Codes.STRING_PACKED_LENGTH_START + 7:
                result = internalReadString(code - Codes.STRING_PACKED_LENGTH_START).ToString();
                break;

            case Codes.STRING:
                result = internalReadString(readCount()).ToString();
                break;

            case Codes.STRING_CHUNK:
                result = internalReadChunkedString(readCount());
                break;

            case Codes.LIST_PACKED_LENGTH_START + 0:
            case Codes.LIST_PACKED_LENGTH_START + 1:
            case Codes.LIST_PACKED_LENGTH_START + 2:
            case Codes.LIST_PACKED_LENGTH_START + 3:
            case Codes.LIST_PACKED_LENGTH_START + 4:
            case Codes.LIST_PACKED_LENGTH_START + 5:
            case Codes.LIST_PACKED_LENGTH_START + 6:
            case Codes.LIST_PACKED_LENGTH_START + 7:
                result = internalReadList(code - Codes.LIST_PACKED_LENGTH_START);
                break;

            case Codes.LIST:
                result = internalReadList(readCount());
                break;

            case Codes.BEGIN_CLOSED_LIST:
                result = ((Func <Object[], IList>)getHandler("list"))(readClosedList());
                break;

            case Codes.BEGIN_OPEN_LIST:
                result = ((Func <Object[], IList>)getHandler("list"))(readOpenList());
                break;

            case Codes.TRUE:
                result = true;
                break;

            case Codes.FALSE:
                result = false;
                break;

            case Codes.DOUBLE:
            case Codes.DOUBLE_0:
            case Codes.DOUBLE_1:
                result = ((Func <double, Object>)getHandler("double"))(internalReadDouble(code));
                break;

            case Codes.FLOAT:
                result = ((Func <float, Object>)getHandler("float"))(rawInput.readRawFloat());
                break;

            case Codes.INT:
                result = rawInput.readRawInt64();
                break;

            case Codes.NULL:
                result = null;
                break;

            case Codes.FOOTER:
            {
                int calculatedLength = rawInput.getBytesRead() - 1;
                int magicFromStream  = (int)((code << 24) + (int)rawInput.readRawInt24());
                validateFooter(calculatedLength, magicFromStream);
                return(readObject());
            }

            case Codes.STRUCTTYPE:
            {
                Object tag    = readObject();
                int    fields = readInt32();
                getStructCache().Add(new StructType(tag, fields));
                result = handleStruct(tag, fields);
                break;
            }

            case Codes.STRUCT:
            {
                StructType st = (StructType)lookupCache(getStructCache(), readInt32());
                result = handleStruct(st.tag, st.fields);
                break;
            }

            case Codes.RESET_CACHES:
            {
                resetCaches();
                result = readObject();
                break;
            }


            default:
                throw Fns.expected("any", code);
            }
            return(result);
        }
Esempio n. 18
0
        private long internalReadInt()
        {
            long result;
            int  code = readNextCode();

            switch (code)
            {
            //INT_PACKED_1_FIRST
            case 0xFF:
                result = -1;
                break;

            case 0x00:
            case 0x01:
            case 0x02:
            case 0x03:
            case 0x04:
            case 0x05:
            case 0x06:
            case 0x07:
            case 0x08:
            case 0x09:
            case 0x0A:
            case 0x0B:
            case 0x0C:
            case 0x0D:
            case 0x0E:
            case 0x0F:
            case 0x10:
            case 0x11:
            case 0x12:
            case 0x13:
            case 0x14:
            case 0x15:
            case 0x16:
            case 0x17:
            case 0x18:
            case 0x19:
            case 0x1A:
            case 0x1B:
            case 0x1C:
            case 0x1D:
            case 0x1E:
            case 0x1F:
            case 0x20:
            case 0x21:
            case 0x22:
            case 0x23:
            case 0x24:
            case 0x25:
            case 0x26:
            case 0x27:
            case 0x28:
            case 0x29:
            case 0x2A:
            case 0x2B:
            case 0x2C:
            case 0x2D:
            case 0x2E:
            case 0x2F:
            case 0x30:
            case 0x31:
            case 0x32:
            case 0x33:
            case 0x34:
            case 0x35:
            case 0x36:
            case 0x37:
            case 0x38:
            case 0x39:
            case 0x3A:
            case 0x3B:
            case 0x3C:
            case 0x3D:
            case 0x3E:
            case 0x3F:
                result = (long)code & 0xff;
                break;

            //  INT_PACKED_2_FIRST
            case 0x40:
            case 0x41:
            case 0x42:
            case 0x43:
            case 0x44:
            case 0x45:
            case 0x46:
            case 0x47:
            case 0x48:
            case 0x49:
            case 0x4A:
            case 0x4B:
            case 0x4C:
            case 0x4D:
            case 0x4E:
            case 0x4F:
            case 0x50:
            case 0x51:
            case 0x52:
            case 0x53:
            case 0x54:
            case 0x55:
            case 0x56:
            case 0x57:
            case 0x58:
            case 0x59:
            case 0x5A:
            case 0x5B:
            case 0x5C:
            case 0x5D:
            case 0x5E:
            case 0x5F:
                result = ((long)(code - Codes.INT_PACKED_2_ZERO) << 8) | rawInput.readRawInt8();
                break;

            //  INT_PACKED_3_FIRST
            case 0x60:
            case 0x61:
            case 0x62:
            case 0x63:
            case 0x64:
            case 0x65:
            case 0x66:
            case 0x67:
            case 0x68:
            case 0x69:
            case 0x6A:
            case 0x6B:
            case 0x6C:
            case 0x6D:
            case 0x6E:
            case 0x6F:
                result = ((long)(code - Codes.INT_PACKED_3_ZERO) << 16) | rawInput.readRawInt16();
                break;

            //  INT_PACKED_4_FIRST
            case 0x70:
            case 0x71:
            case 0x72:
            case 0x73:
                result = ((long)(code - Codes.INT_PACKED_4_ZERO << 24)) | rawInput.readRawInt24();
                break;

            //  INT_PACKED_5_FIRST
            case 0x74:
            case 0x75:
            case 0x76:
            case 0x77:
                result = ((long)(code - Codes.INT_PACKED_5_ZERO) << 32) | rawInput.readRawInt32();
                break;

            //  INT_PACKED_6_FIRST
            case 0x78:
            case 0x79:
            case 0x7A:
            case 0x7B:
                result = (((long)code - Codes.INT_PACKED_6_ZERO) << 40) | rawInput.readRawInt40();
                break;

            //  INT_PACKED_7_FIRST
            case 0x7C:
            case 0x7D:
            case 0x7E:
            case 0x7F:
                result = (((long)code - Codes.INT_PACKED_7_ZERO) << 48) | rawInput.readRawInt48();
                break;

            case Codes.INT:
                result = rawInput.readRawInt64();
                break;

            default:
            {
                Object o = read(code);
                if (o is Int64)
                {
                    return((Int64)o);
                }
                else
                {
                    throw Fns.expected("int64", code, o);
                }
            }
            }
            return(result);
        }
Esempio n. 19
0
 private int internalReadInt32()
 {
     return(Fns.intCast(internalReadInt()));
 }
Esempio n. 20
0
 private int readInt32()
 {
     return(Fns.intCast(readInt()));
 }
Esempio n. 21
0
 public static extern void root(Fns _fns);