Derive FormulaExternalToken from FormulaByteToken, tdf#133260 follow-up

This should always have had a ParamClass member variable and
SetInForceArray()/GetInForceArray() functions but never did.

Now with

    commit 3a33828b8de7554e497051738c722b1764960a86
    CommitDate: Tue Oct 13 21:36:31 2020 +0200

        Resolves: tdf#133260 Propagate ForceArrayReturn from inline arrays

it broke CppunitTest_sc_subsequent_filters_test with the virtual
dummy assert() in FormulaToken::SetInForceArray(). Unfortunately
not caught earlier but at least it did now.

Remove the duplicated FormulaToken overrides and simply derive
from FormulaByteToken instead that has all we need.

Change-Id: I7946602955970fb9d6f349efdacb41389e211b68
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104262
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index 68df385..92f6025 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -1929,12 +1929,9 @@ bool FormulaIndexToken::operator==( const FormulaToken& r ) const
        mnSheet == r.GetSheet();
}
const OUString& FormulaExternalToken::GetExternal() const       { return aExternal; }
sal_uInt8       FormulaExternalToken::GetByte() const           { return nByte; }
void            FormulaExternalToken::SetByte( sal_uInt8 n )    { nByte = n; }
bool FormulaExternalToken::operator==( const FormulaToken& r ) const
{
    return FormulaToken::operator==( r ) && nByte == r.GetByte() &&
        aExternal == r.GetExternal();
    return FormulaByteToken::operator==( r ) && aExternal == r.GetExternal();
}


diff --git a/include/formula/token.hxx b/include/formula/token.hxx
index 02bffd6..4fc6b38 100644
--- a/include/formula/token.hxx
+++ b/include/formula/token.hxx
@@ -361,26 +361,22 @@ public:
};


class FORMULA_DLLPUBLIC FormulaExternalToken final : public FormulaToken
class FORMULA_DLLPUBLIC FormulaExternalToken final : public FormulaByteToken
{
private:
            OUString              aExternal;
            sal_uInt8           nByte;
            OUString            aExternal;
public:
                                FormulaExternalToken( OpCode e, sal_uInt8 n, const OUString& r ) :
                                    FormulaToken( svExternal, e ), aExternal( r ),
                                    nByte( n ) {}
                                    FormulaByteToken( e, n, svExternal, ParamClass::Unknown ),
                                    aExternal( r ) {}
                                FormulaExternalToken( OpCode e, const OUString& r ) :
                                    FormulaToken(svExternal, e ), aExternal( r ),
                                    nByte( 0 ) {}
                                    FormulaByteToken( e, 0, svExternal, ParamClass::Unknown ),
                                    aExternal( r ) {}
                                FormulaExternalToken( const FormulaExternalToken& r ) :
                                    FormulaToken( r ), aExternal( r.aExternal ),
                                    nByte( r.nByte ) {}
                                    FormulaByteToken( r ), aExternal( r.aExternal ) {}

    virtual FormulaToken*       Clone() const override { return new FormulaExternalToken(*this); }
    virtual const OUString&       GetExternal() const override;
    virtual sal_uInt8           GetByte() const override;
    virtual void                SetByte( sal_uInt8 n ) override;
    virtual const OUString&     GetExternal() const override;
    virtual bool                operator==( const FormulaToken& rToken ) const override;
};