Skip to content

Commit 50553a9

Browse files
committed
expand
1 parent a8f101f commit 50553a9

File tree

4 files changed

+77
-31
lines changed

4 files changed

+77
-31
lines changed

auto/cmake

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# -*- mode: sh -*-
2+
3+
QUIET=0
4+
5+
CMAKE_FLAGS=
6+
7+
add_cmake_flag() {
8+
if [ $QUIET -eq 0 ]; then
9+
echo "Using $1=$2"
10+
fi
11+
CMAKE_FLAGS="${CMAKE_FLAGS} -D$1=$2"
12+
}
13+
14+
pass_cmake_flag_from_env() {
15+
local name=$1
16+
local env_key=$2
17+
if [ -z ${env_key} ]; then
18+
env_key=$name
19+
fi
20+
local val=$(eval echo \$$env_key)
21+
if [ ! -z "$val" ]; then
22+
add_cmake_flag $name $val
23+
fi
24+
}
25+
26+
CMAKE_PREFIX_PATH=
27+
28+
add_cmake_prefix() {
29+
if [ $QUIET -eq 0 ]; then
30+
echo "adding to CMAKE_PREFIX_PATH with $1"
31+
fi
32+
CMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH;$1"
33+
}
34+
35+
cleanup_cmake_cache() {
36+
if [ -f CMakeCache.txt ]; then
37+
rm CMakeCache.txt
38+
fi
39+
if [ -d 3rdparty ]; then
40+
for cmake_cache in $(find 3rdparty/ | grep CMakeCache.txt); do
41+
rm $cmake_cache
42+
done
43+
fi
44+
}
45+
46+
get_dep() {
47+
local name=$1
48+
head -n 1 ./deps/$name | awk '{print $1}'
49+
}
50+
51+
config_cmake() {
52+
add_cmake_prefixes
53+
add_cmake_flags
54+
cleanup_cmake_cache
55+
cmake . $CMAKE_FLAGS
56+
}

configure

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ parse_args() {
5252
--verbose)
5353
VERBOSE=1
5454
;;
55+
--quiet)
56+
QUIET=1
57+
;;
5558
*)
5659
echo "unknown argument $i"
5760
exit 1
@@ -64,31 +67,7 @@ parse_args() {
6467
fi
6568
}
6669

67-
CMAKE_FLAGS=
68-
69-
add_cmake_flag() {
70-
echo "Using $1=$2"
71-
CMAKE_FLAGS="${CMAKE_FLAGS} -D$1=$2"
72-
}
73-
74-
pass_cmake_flag_from_env() {
75-
local name=$1
76-
local env_key=$2
77-
if [ -z ${env_key} ]; then
78-
env_key=$name
79-
fi
80-
local val=$(eval echo \$$env_key)
81-
if [ ! -z "$val" ]; then
82-
add_cmake_flag $name $val
83-
fi
84-
}
85-
86-
CMAKE_PREFIX_PATH=
87-
88-
add_cmake_prefix() {
89-
echo "adding to CMAKE_PREFIX_PATH with $1"
90-
CMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH;$1"
91-
}
70+
. ./auto/cmake
9271

9372
add_cmake_prefixes() {
9473
add_cmake_prefix $HOME/local
@@ -131,11 +110,7 @@ add_cmake_flags() {
131110

132111
main() {
133112
parse_args $@
134-
add_cmake_prefixes
135-
add_cmake_flags
136-
137-
echo "Using CMAKE_FLAGS=${CMAKE_FLAGS}"
138-
cmake . ${CMAKE_FLAGS}
113+
config_cmake
139114
}
140115

141116
main $@

include/ttl/bits/std_shape.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ class basic_shape
6060
return off;
6161
}
6262

63+
std::array<dim_t, r> expand(dim_t off) const
64+
{
65+
std::array<dim_t, r> coords;
66+
for (rank_t i = r; i > 0; --i) {
67+
coords[i - 1] = off % dims_[i - 1];
68+
off /= dims_[i - 1];
69+
}
70+
return coords;
71+
}
72+
6373
template <rank_t p>
6474
dim_t coord(dim_t off) const
6575
{

tests/test_shape.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ void test_shape(dim_t h, dim_t w)
1616
for (dim_t i = 0; i < h; ++i) {
1717
for (dim_t j = 0; j < w; ++j) {
1818
ASSERT_EQ(s.offset(i, j), k);
19+
{
20+
dim_t u, v;
21+
std::tie(u, v) = s.expand(k);
22+
ASSERT_EQ(i, u);
23+
ASSERT_EQ(j, v);
24+
}
1925
++k;
2026
}
2127
}
@@ -26,7 +32,6 @@ TEST(shape_test, test1)
2632
for (dim_t h = 1; h < 10; ++h) {
2733
for (dim_t w = 1; w < 10; ++w) { test_shape(h, w); }
2834
}
29-
3035
{
3136
shape<5> s(10, 10, 10, 10, 10);
3237
ASSERT_EQ(s.offset(1, 2, 3, 4, 5), static_cast<dim_t>(12345));

0 commit comments

Comments
 (0)