// snf_HeaderFinder.inline.hpp
// Copyright (C) 2007 - 2009 ARM Research Labs, LLC.
// See www.armresearch.com for the copyright terms.
// Inline methods.

inline const bool HeaderFinderPattern::operator<(const HeaderFinderPattern& R) const { // Comparator for set<> living.
    if(Header < R.Header) {                                                     // If the Header name is < then true!
        return true;
    } else
    if(Header == R.Header) {                                                    // If the Header name is == then
        if(Ordinal < R.Ordinal) {                                               // check the Ordinal. If it's < then
            return true;                                                        // true!
        } else
        if(Ordinal == R.Ordinal) {                                              // If the Ordinal == then
            if(Contains < R.Contains) {                                         // check the Contains. If it is < then
                return true;                                                    // true!
            }
        }
    }
    return false;                                                               // In all other cases this is not < R
}

inline HeaderFinderPattern::HeaderFinderPattern(const HeaderFinderPattern& P) { // Copy constructor.
    Header = P.Header;
    Ordinal = P.Ordinal;
    Context = P.Context;
    Directive = P.Directive;
    Contains = P.Contains;
}

inline void HeaderFinderPattern::clear() {                                      // Do this to make fresh and clean.
    Header.clear();
    Ordinal = Context = Directive = 0;
    Contains.clear();
}

inline HeaderFinderPattern&
  HeaderFinderPattern::operator=(const HeaderFinderPattern& R) {                // Assignment operator.
    Header = R.Header;
    Ordinal = R.Ordinal;
    Context = R.Context;
    Directive = R.Directive;
    Contains = R.Contains;
    return *this;
}


inline const unsigned long int HeaderFinder::operator()() const {               //  Return the Directives.
    return Directives;
}
