//
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//

#ifndef COMPILER_PREPROCESSOR_SOURCE_LOCATION_H_
#define COMPILER_PREPROCESSOR_SOURCE_LOCATION_H_

namespace pp
{

struct SourceLocation
{
    SourceLocation() : file(0), line(0) { }
    SourceLocation(int f, int l) : file(f), line(l) { }

    bool equals(const SourceLocation& other) const
    {
        return (file == other.file) && (line == other.line);
    }

    int file;
    int line;
};

inline bool operator==(const SourceLocation& lhs, const SourceLocation& rhs)
{
    return lhs.equals(rhs);
}

inline bool operator!=(const SourceLocation& lhs, const SourceLocation& rhs)
{
    return !lhs.equals(rhs);
}

}  // namespace pp
#endif  // COMPILER_PREPROCESSOR_SOURCE_LOCATION_H_
