aboutsummaryrefslogtreecommitdiff
path: root/build2/variable.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-04-09 07:48:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-04-09 07:48:02 +0200
commit7a7b8ba432977282a90567c77822a72645d2a5c8 (patch)
tree6abac0b3fad817c4149bc34d80b9c0e6e4a31168 /build2/variable.cxx
parent6906097a822517af4dc711825132d5f026329c62 (diff)
Add abs_dir_path type, auto-complete if initialized from names
Diffstat (limited to 'build2/variable.cxx')
-rw-r--r--build2/variable.cxx28
1 files changed, 28 insertions, 0 deletions
diff --git a/build2/variable.cxx b/build2/variable.cxx
index da7446d..61f5975 100644
--- a/build2/variable.cxx
+++ b/build2/variable.cxx
@@ -526,6 +526,34 @@ namespace build2
&simple_compare<dir_path>
};
+ // abs_dir_path value
+ //
+ abs_dir_path value_traits<abs_dir_path>::
+ convert (name&& n, name* r)
+ {
+ dir_path d (value_traits<dir_path>::convert (move (n), r));
+
+ if (d.relative ())
+ d.complete ();
+
+ return abs_dir_path (move (d));
+ }
+
+ const value_type value_traits<abs_dir_path>::value_type
+ {
+ "abs_dir_path",
+ sizeof (abs_dir_path),
+ &default_dtor<abs_dir_path>,
+ &default_copy_ctor<abs_dir_path>,
+ &default_copy_assign<abs_dir_path>,
+ &simple_assign<abs_dir_path, true>, // Allow empty paths.
+ &simple_append<abs_dir_path, true>,
+ nullptr, // No prepend.
+ &simple_reverse<abs_dir_path>,
+ nullptr, // No cast (cast data_ directly).
+ &simple_compare<abs_dir_path>
+ };
+
// name value
//
name value_traits<name>::