termhelper.java
来自「OTP是开放电信平台的简称」· Java 代码 · 共 138 行
JAVA
138 行
/* ``The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved via the world wide web at http://www.erlang.org/. * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Initial Developer of the Original Code is Ericsson Utvecklings AB. * Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings * AB. All Rights Reserved.'' * * $Id$ */package com.ericsson.otp.ic; /** Helper class for Term. **/public class TermHelper { // Constructors private TermHelper() {} // Methods /** Marshal method for the Term class, encodes the Term object to the output stream. **/ public static void marshal(com.ericsson.otp.erlang.OtpOutputStream _out, Term _any) throws java.lang.Exception { _any.write_value(_out); } /** Unmarshal method for the Term class, decodes a Term object from the stream. @return Term, read from the input stream **/ public static Term unmarshal(com.ericsson.otp.erlang.OtpInputStream _in) throws java.lang.Exception { Term _value = new Term(); int tag = _in.peek(); if (tag == com.ericsson.otp.erlang.OtpExternal.versionTag) { _in.read1(); tag = _in.peek(); } _value.tag = tag; // Allways save the object in OtpErlangObject form _in.mark(0); com.ericsson.otp.erlang.OtpErlangObject _obj = _in.read_any(); _value.insert_Object(_obj); switch (tag) { case com.ericsson.otp.erlang.OtpExternal.smallIntTag: case com.ericsson.otp.erlang.OtpExternal.intTag: case com.ericsson.otp.erlang.OtpExternal.smallBigTag: _in.reset(); _value.longV = _in.read_long(); break; case com.ericsson.otp.erlang.OtpExternal.atomTag: _in.reset(); _value.atomV = _in.read_atom(); break; case com.ericsson.otp.erlang.OtpExternal.floatTag: _in.reset(); _value.doubleV = _in.read_double(); break; case com.ericsson.otp.erlang.OtpExternal.refTag: case com.ericsson.otp.erlang.OtpExternal.newRefTag: _in.reset(); com.ericsson.otp.erlang.OtpErlangRef _eref = _in.read_ref(); if (_eref.isNewRef()) _value.RefV = new Ref(_eref.node(),_eref.ids(),_eref.creation()); else _value.RefV = new Ref(_eref.node(),_eref.id(),_eref.creation()); break; case com.ericsson.otp.erlang.OtpExternal.portTag: _in.reset(); com.ericsson.otp.erlang.OtpErlangPort _eport = _in.read_port(); _value.PortV = new Port(_eport.node(),_eport.id(),_eport.creation()); break; case com.ericsson.otp.erlang.OtpExternal.pidTag: _in.reset(); com.ericsson.otp.erlang.OtpErlangPid _epid = _in.read_pid(); _value.PidV = new Pid(_epid.node(),_epid.id(),_epid.serial(),_epid.creation()); break; case com.ericsson.otp.erlang.OtpExternal.stringTag: _in.reset(); _value.stringV = _in.read_string(); break; case com.ericsson.otp.erlang.OtpExternal.listTag: case com.ericsson.otp.erlang.OtpExternal.nilTag: case com.ericsson.otp.erlang.OtpExternal.smallTupleTag: case com.ericsson.otp.erlang.OtpExternal.largeTupleTag: case com.ericsson.otp.erlang.OtpExternal.binTag: com.ericsson.otp.erlang.OtpOutputStream _os = new com.ericsson.otp.erlang.OtpOutputStream(); _obj.encode(_os); _value.insert_Streamable(_os); break; case com.ericsson.otp.erlang.OtpExternal.largeBigTag: default: throw new com.ericsson.otp.erlang.OtpErlangDecodeException("Uknown data type: " + tag); } return _value; } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?