diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-04-09 07:48:02 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-04-09 07:48:02 +0200 |
commit | 7a7b8ba432977282a90567c77822a72645d2a5c8 (patch) | |
tree | 6abac0b3fad817c4149bc34d80b9c0e6e4a31168 /build2/variable.cxx | |
parent | 6906097a822517af4dc711825132d5f026329c62 (diff) |
Add abs_dir_path type, auto-complete if initialized from names
Diffstat (limited to 'build2/variable.cxx')
-rw-r--r-- | build2/variable.cxx | 28 |
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>:: |