K2Informatics.Erlnet.OtpInputStream.read_any C# (CSharp) Method

read_any() public method

public read_any ( ) : OtpErlangObject
return OtpErlangObject
        public OtpErlangObject read_any()
        {
            // calls one of the above functions, depending on o
            int tag = peek1skip_version();

            switch (tag)
            {
                case OtpExternal.smallIntTag:
                case OtpExternal.intTag:
                case OtpExternal.smallBigTag:
                case OtpExternal.largeBigTag:
                    return new OtpErlangLong(this);

                case OtpExternal.atomTag:
                    return new OtpErlangAtom(this);

                case OtpExternal.floatTag:
                case OtpExternal.newFloatTag:
                    return new OtpErlangDouble(this);

                case OtpExternal.refTag:
                case OtpExternal.newRefTag:
                    return new OtpErlangRef(this);

                case OtpExternal.portTag:
                    return new OtpErlangPort(this);

                case OtpExternal.pidTag:
                    return new OtpErlangPid(this);

                case OtpExternal.stringTag:
                    return new OtpErlangString(this);

                case OtpExternal.listTag:
                case OtpExternal.nilTag:
                    if ((flags & DECODE_INT_LISTS_AS_STRINGS) != 0)
                    {
                        int savePos = getPos();
                        try
                        {
                            return new OtpErlangString(this);
                        }
                        catch (OtpErlangDecodeException)
                        {
                        }
                        setPos(savePos);
                    }
                    return new OtpErlangList(this);

                case OtpExternal.smallTupleTag:
                case OtpExternal.largeTupleTag:
                    return new OtpErlangTuple(this);

                case OtpExternal.binTag:
                    return new OtpErlangBinary(this);

                case OtpExternal.bitBinTag:
                    return new OtpErlangBitstr(this);

                case OtpExternal.compressedTag:
                    return read_compressed();

                case OtpExternal.newFunTag:
                case OtpExternal.funTag:
                    return new OtpErlangFun(this);

                default:
                    throw new OtpErlangDecodeException("Unknown data type: " + tag);
            }
        }

Usage Example

Ejemplo n.º 1
0
        /**
         * Create a tuple from a stream containing an tuple encoded in Erlang
         * external format.
         *
         * @param buf
         *                the stream containing the encoded tuple.
         *
         * @exception OtpErlangDecodeException
         *                    if the buffer does not contain a valid external
         *                    representation of an Erlang tuple.
         */
        public OtpErlangTuple(OtpInputStream buf)
        {
            int arity = buf.read_tuple_head();

            if (arity > 0)
            {
                elems = new OtpErlangObject[arity];

                for (int i = 0; i < arity; i++)
                {
                    elems[i] = buf.read_any();
                }
            }
            else
            {
                elems = NO_ELEMENTS;
            }
        }
All Usage Examples Of K2Informatics.Erlnet.OtpInputStream::read_any