1
0
Fork 0
mirror of https://github.com/bolero-MURAKAMI/Sprout synced 2025-08-03 12:49:50 +00:00

algorithm, operation 全面修正

This commit is contained in:
bolero-MURAKAMI 2011-09-03 22:26:26 +09:00
parent 21f5d5191a
commit 5e67195030
244 changed files with 4764 additions and 831 deletions

View file

@ -17,7 +17,11 @@ namespace sprout {
template<typename Container>
struct erase {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::erase<Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::erase<Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::erase(cont, pos),
sprout::get_fixed(sprout::fixed::erase(cont, pos)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) - 1
);
@ -46,7 +50,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::erase(cont, pos),
sprout::get_fixed(sprout::fixed::erase(cont, pos)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) - 1
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<std::size_t N, typename Container>
struct erase_n {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::erase_n<N, Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::erase_n<N, Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::erase_n<N>(cont, pos),
sprout::get_fixed(sprout::fixed::erase_n<N>(cont, pos)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) - 1
);
@ -46,7 +50,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::erase_n<N>(cont, pos),
sprout::get_fixed(sprout::fixed::erase_n<N>(cont, pos)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) - 1
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<typename Container, typename T, typename... Values>
struct insert {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::insert<Container, T, Values...>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::insert<Container, T, Values...>::type
>::internal_type
> type;
};
} // namespace result_of
@ -33,7 +37,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::insert(cont, pos, v, values...),
sprout::get_fixed(sprout::fixed::insert(cont, pos, v, values...)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + 1 + sizeof...(Values)
);
@ -50,7 +54,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::insert(cont, pos, v, values...),
sprout::get_fixed(sprout::fixed::insert(cont, pos, v, values...)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + 1 + sizeof...(Values)
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<std::size_t N, typename Container, typename T, typename... Values>
struct insert_n {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::insert_n<N, Container, T, Values...>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::insert_n<N, Container, T, Values...>::type
>::internal_type
> type;
};
} // namespace result_of
@ -33,7 +37,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::insert_n<N>(cont, pos, v, values...),
sprout::get_fixed(sprout::fixed::insert_n<N>(cont, pos, v, values...)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + (1 + sizeof...(Values)) * N
);
@ -50,7 +54,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::insert_n<N>(cont, pos, v, values...),
sprout::get_fixed(sprout::fixed::insert_n<N>(cont, pos, v, values...)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + (1 + sizeof...(Values)) * N
);

View file

@ -16,7 +16,11 @@ namespace sprout {
template<typename Container, typename Input>
struct join {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::join<Container, Input>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::join<Container, Input>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::join(cont, pos, input),
sprout::get_fixed(sprout::fixed::join(cont, pos, input)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + sprout::size(input)
);
@ -47,7 +51,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::join(cont, pos, input),
sprout::get_fixed(sprout::fixed::join(cont, pos, input)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + sprout::size(input)
);

View file

@ -15,7 +15,11 @@ namespace sprout {
//
template<typename Container, typename Input>
struct join_back {
typedef sprout::sub_array<typename sprout::fixed::result_of::join_back<Container, Input>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::join_back<Container, Input>::type
>::internal_type
> type;
};
} // namespace result_of
@ -29,7 +33,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::join_back(cont, input),
sprout::get_fixed(sprout::fixed::join_back(cont, input)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + sprout::size(input)
);

View file

@ -15,7 +15,11 @@ namespace sprout {
//
template<typename Container, typename Input>
struct join_front {
typedef sprout::sub_array<typename sprout::fixed::result_of::join_front<Container, Input>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::join_front<Container, Input>::type
>::internal_type
> type;
};
} // namespace result_of
@ -29,7 +33,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::join_front(cont, input),
sprout::get_fixed(sprout::fixed::join_front(cont, input)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + sprout::size(input)
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<typename Container>
struct pop_back {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::pop_back<Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::pop_back<Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -30,7 +34,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::pop_back(cont),
sprout::get_fixed(sprout::fixed::pop_back(cont)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) - 1
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<std::size_t N, typename Container>
struct pop_back_n {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::pop_back_n<N, Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::pop_back_n<N, Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -30,7 +34,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::pop_back_n<N>(cont),
sprout::get_fixed(sprout::fixed::pop_back_n<N>(cont)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) - N
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<typename Container>
struct pop_front {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::pop_front<Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::pop_front<Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -30,7 +34,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::pop_front(cont),
sprout::get_fixed(sprout::fixed::pop_front(cont)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) - 1
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<std::size_t N, typename Container>
struct pop_front_n {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::pop_front_n<N, Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::pop_front_n<N, Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -30,7 +34,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::pop_front_n<N>(cont),
sprout::get_fixed(sprout::fixed::pop_front_n<N>(cont)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) - N
);

View file

@ -16,7 +16,11 @@ namespace sprout {
template<typename Container, typename T, typename... Values>
struct push_back {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::push_back<Container, T, Values...>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::push_back<Container, T, Values...>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::push_back(cont, v, values...),
sprout::get_fixed(sprout::fixed::push_back(cont, v, values...)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + 1 + sizeof...(Values)
);

View file

@ -16,7 +16,11 @@ namespace sprout {
template<std::size_t N, typename Container, typename T, typename... Values>
struct push_back_n {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::push_back_n<N, Container, T, Values...>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::push_back_n<N, Container, T, Values...>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::push_back_n<N>(cont, v, values...),
sprout::get_fixed(sprout::fixed::push_back_n<N>(cont, v, values...)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + (1 + sizeof...(Values)) * N
);

View file

@ -16,7 +16,11 @@ namespace sprout {
template<typename Container, typename T, typename... Values>
struct push_front {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::push_front<Container, T, Values...>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::push_front<Container, T, Values...>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::push_front(cont, v, values...),
sprout::get_fixed(sprout::fixed::push_front(cont, v, values...)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + 1 + sizeof...(Values)
);

View file

@ -16,7 +16,11 @@ namespace sprout {
template<std::size_t N, typename Container, typename T, typename... Values>
struct push_front_n {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::push_front_n<N, Container, T, Values...>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::push_front_n<N, Container, T, Values...>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::push_front_n<N>(cont, v, values...),
sprout::get_fixed(sprout::fixed::push_front_n<N>(cont, v, values...)),
sprout::fixed_begin_offset(cont),
sprout::fixed_end_offset(cont) + (1 + sizeof...(Values)) * N
);

View file

@ -16,7 +16,11 @@ namespace sprout {
template<typename Container>
struct realign {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::realign<Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::realign<Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -30,7 +34,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::realign(cont, v),
sprout::get_fixed(sprout::fixed::realign(cont, v)),
0,
sprout::size(cont)
);
@ -45,7 +49,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::realign(cont),
sprout::get_fixed(sprout::fixed::realign(cont)),
0,
sprout::size(cont)
);

View file

@ -16,7 +16,11 @@ namespace sprout {
template<typename Result, typename Container>
struct realign_to {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::realign_to<Result, Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::realign_to<Result, Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -30,7 +34,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::realign_to<Result>(cont, v),
sprout::get_fixed(sprout::fixed::realign_to<Result>(cont, v)),
0,
sprout::size(cont)
);
@ -45,7 +49,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::realign_to<Result>(cont),
sprout::get_fixed(sprout::fixed::realign_to<Result>(cont)),
0,
sprout::size(cont)
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<std::size_t N, typename Container>
struct resize {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::resize<N, Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::resize<N, Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::resize<N>(cont, v),
sprout::get_fixed(sprout::fixed::resize<N>(cont, v)),
0,
sprout::fixed_container_traits<typename sprout::fit::result_of::resize<N, Container>::type>::fixed_size
);
@ -46,7 +50,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::resize<N>(cont),
sprout::get_fixed(sprout::fixed::resize<N>(cont)),
0,
sprout::fixed_container_traits<typename sprout::fit::result_of::resize<N, Container>::type>::fixed_size
);

View file

@ -17,7 +17,11 @@ namespace sprout {
template<std::size_t N, typename Container>
struct resize_backward {
public:
typedef sprout::sub_array<typename sprout::fixed::result_of::resize_backward<N, Container>::type> type;
typedef sprout::sub_array<
typename sprout::fixed_container_traits<
typename sprout::fixed::result_of::resize_backward<N, Container>::type
>::internal_type
> type;
};
} // namespace result_of
@ -31,7 +35,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::resize_backward<N>(cont, v),
sprout::get_fixed(sprout::fixed::resize_backward<N>(cont, v)),
0,
sprout::fixed_container_traits<typename sprout::fit::result_of::resize_backward<N, Container>::type>::fixed_size
);
@ -46,7 +50,7 @@ namespace sprout {
)
{
return sprout::sub_copy(
sprout::fixed::resize_backward<N>(cont),
sprout::get_fixed(sprout::fixed::resize_backward<N>(cont)),
0,
sprout::fixed_container_traits<typename sprout::fit::result_of::resize_backward<N, Container>::type>::fixed_size
);