
inline FPattern const &FPattern::lhs() const
{
    return d_lopData->lhs();
}

inline size_t FPattern::scIndex() const
{
    return d_lopData->scOrLength();
}

inline size_t FPattern::lopTailLength() const
{
    return d_lopData->scOrLength();
}

inline size_t FPattern::begin() const
{
    return d_pair.first;
}

inline size_t FPattern::end() const
{
    return d_pair.second;
}

inline FPattern::Pair const &FPattern::pair() const
{
    return d_pair;
}

inline FPattern::Pair FPattern::rhsPair() const
{
    return Pair(d_lopData->mid(), d_pair.second);
}

inline FPattern::RuleType FPattern::type() const
{
    return d_lopData == 0 ?         RuleType::NORMAL :
           d_lopData->mid() == 0 ?  RuleType::LOP_FIXED :
                                    RuleType::LOP_1;
}

inline bool FPattern::fixedLength() const
{
    return d_length != s_max;
}

inline size_t FPattern::length() const
{
    return d_length;
}

