public synchronized boolean equal()

in yoko-core/src/main/java/org/apache/yoko/orb/DynamicAny/DynSeqBase_impl.java [780:896]


    public synchronized boolean equal(org.omg.DynamicAny.DynAny dyn_any) {
        if (destroyed_)
            throw new org.omg.CORBA.OBJECT_NOT_EXIST();

        if (this == dyn_any)
            return true;

        if (!dyn_any.type().equivalent(type_))
            return false;

        if (length_ != dyn_any.component_count())
            return false;

        if (length_ == 0)
            return true;

        DynSeqBase_impl seq = (DynSeqBase_impl) dyn_any;

        if (primitive_) {
            switch (contentKind_.value()) {
            case org.omg.CORBA.TCKind._tk_short:
            case org.omg.CORBA.TCKind._tk_ushort: {
                short[] buf1 = (short[]) buf_;
                short[] buf2 = (short[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (buf1[i] != buf2[i])
                        return false;
                break;
            }

            case org.omg.CORBA.TCKind._tk_long:
            case org.omg.CORBA.TCKind._tk_ulong: {
                int[] buf1 = (int[]) buf_;
                int[] buf2 = (int[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (buf1[i] != buf2[i])
                        return false;
                break;
            }

            case org.omg.CORBA.TCKind._tk_float: {
                float[] buf1 = (float[]) buf_;
                float[] buf2 = (float[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (buf1[i] != buf2[i])
                        return false;
                break;
            }

            case org.omg.CORBA.TCKind._tk_double: {
                double[] buf1 = (double[]) buf_;
                double[] buf2 = (double[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (buf1[i] != buf2[i])
                        return false;
                break;
            }

            case org.omg.CORBA.TCKind._tk_boolean: {
                boolean[] buf1 = (boolean[]) buf_;
                boolean[] buf2 = (boolean[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (buf1[i] != buf2[i])
                        return false;
                break;
            }

            case org.omg.CORBA.TCKind._tk_char:
            case org.omg.CORBA.TCKind._tk_wchar: {
                char[] buf1 = (char[]) buf_;
                char[] buf2 = (char[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (buf1[i] != buf2[i])
                        return false;
                break;
            }

            case org.omg.CORBA.TCKind._tk_octet: {
                byte[] buf1 = (byte[]) buf_;
                byte[] buf2 = (byte[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (buf1[i] != buf2[i])
                        return false;
                break;
            }

            case org.omg.CORBA.TCKind._tk_string:
            case org.omg.CORBA.TCKind._tk_wstring: {
                String[] buf1 = (String[]) buf_;
                String[] buf2 = (String[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (!buf1[i].equals(buf2[i]))
                        return false;
                break;
            }

            case org.omg.CORBA.TCKind._tk_longlong:
            case org.omg.CORBA.TCKind._tk_ulonglong: {
                long[] buf1 = (long[]) buf_;
                long[] buf2 = (long[]) seq.buf_;
                for (int i = 0; i < length_; i++)
                    if (buf1[i] != buf2[i])
                        return false;
                break;
            }

            default:
                org.apache.yoko.orb.OB.Assert._OB_assert("Unsupported sequence type");
            }
        } else {
            for (int i = 0; i < length_; i++)
                if (!components_[i].equal(seq.components_[i]))
                    return false;
        }

        return true;
    }