aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/go-location.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/go/go-location.h')
-rw-r--r--gcc/go/go-location.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc/go/go-location.h b/gcc/go/go-location.h
new file mode 100644
index 0000000..f2731d9
--- /dev/null
+++ b/gcc/go/go-location.h
@@ -0,0 +1,45 @@
+// go-location.h -- GCC specific Location declaration. -*- C++ -*-
+
+// Copyright 2011 The Go 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 GO_LOCATION_H
+#define GO_LOCATION_H
+
+#include "go-system.h"
+
+// A location in an input source file.
+
+class Location
+{
+ public:
+ Location()
+ : gcc_loc_(UNKNOWN_LOCATION)
+ { }
+
+ explicit Location(source_location loc)
+ : gcc_loc_(loc)
+ { }
+
+ source_location
+ gcc_location() const
+ { return this->gcc_loc_; }
+
+ // Temporary hack till error_at and warning_at can deal with a Location.
+ operator source_location() const
+ { return this->gcc_loc_; }
+
+ private:
+ source_location gcc_loc_;
+};
+
+// The Go frontend requires the ability to compare Locations.
+
+inline bool
+operator<(Location loca, Location locb)
+{
+ return loca.gcc_location() < locb.gcc_location();
+}
+
+#endif // !defined(GO_LOCATION_H)