Changeset 69cc156 in mainline


Ignore:
Timestamp:
2018-07-05T21:41:24Z (6 years ago)
Author:
Dzejrou <dzejrou@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
09416c12
Parents:
ddd287d
git-author:
Dzejrou <dzejrou@…> (2018-05-17 23:46:22)
git-committer:
Dzejrou <dzejrou@…> (2018-07-05 21:41:24)
Message:

cpp: renamed aux::invoke to aux::INVOKE to match standard and avoid conflicts with std::invoke, added functional tests and fixed some bugs found by them

Location:
uspace/lib/cpp
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/cpp/Makefile

    rddd287d r69cc156  
    6060        src/__bits/test/bitset.cpp \
    6161        src/__bits/test/deque.cpp \
     62        src/__bits/test/functional.cpp \
    6263        src/__bits/test/list.cpp \
    6364        src/__bits/test/map.cpp \
  • uspace/lib/cpp/include/__bits/functional/bind.hpp

    rddd287d r69cc156  
    163163                }
    164164
    165             private:
    166                 function<decay_t<F>> func_;
     165            private: // TODO: This has problem with member function pointers.
     166                function<remove_reference_t<F>> func_;
    167167                tuple<decay_t<Args>...> bound_args_;
    168168
     
    183183                    bind_arg_filter<ActualArgs...> filter{forward<ActualArgs>(args)...};
    184184
    185                     return aux::invoke(
     185                    return aux::INVOKE(
    186186                        func_,
    187187                        filter[get<Is>(bound_args_)]...
  • uspace/lib/cpp/include/__bits/functional/invoke.hpp

    rddd287d r69cc156  
    5252
    5353    template<class R, class T, class T1, class... Ts>
    54     decltype(auto) invoke(R T::* f, T1&& t1, Ts&&... args)
     54    decltype(auto) INVOKE(R T::* f, T1&& t1, Ts&&... args)
    5555    {
    5656        if constexpr (is_member_function_pointer<decltype(f)>::value)
     
    8888
    8989    template<class F, class... Args>
    90     decltype(auto) invoke(F&& f, Args&&... args)
     90    decltype(auto) INVOKE(F&& f, Args&&... args)
    9191    {
    9292        // (1.5)
  • uspace/lib/cpp/include/__bits/functional/reference_wrapper.hpp

    rddd287d r69cc156  
    7575
    7676            template<class... Args>
    77             result_of_t<type&(Args&&...)> operator()(Args&&... args) const
     77            decltype(auto) operator()(Args&&... args) const
    7878            {
    79                 return invoke(*data_, std::forward<Args>(args)...);
     79                return aux::INVOKE(*data_, std::forward<Args>(args)...);
    8080            }
    8181
  • uspace/lib/cpp/include/__bits/test/tests.hpp

    rddd287d r69cc156  
    274274            const char* name() override;
    275275    };
     276
     277    class functional_test: public test_suite
     278    {
     279        public:
     280            bool run(bool) override;
     281            const char* name() override;
     282        private:
     283            void test_reference_wrapper();
     284            void test_function();
     285            void test_bind();
     286    };
    276287}
    277288
  • uspace/lib/cpp/include/__bits/type_traits/result_of.hpp

    rddd287d r69cc156  
    6262            is_class<typename decay<F>::type>::value ||
    6363            is_member_pointer<typename decay<F>::type>::value,
    64             decltype(aux::invoke(declval<F>(), declval<ArgTypes>()...))
     64            decltype(aux::INVOKE(declval<F>(), declval<ArgTypes>()...))
    6565        >::type
    6666    >
  • uspace/lib/cpp/include/impl/functional.hpp

    rddd287d r69cc156  
    4646    decltype(auto) invoke(F&& f, Args&&... args)
    4747    {
    48         return aux::invoke(forward<F>(f)(forward<Args>(args)...));
     48        return aux::INVOKE(forward<F>(f)(forward<Args>(args)...));
    4949    }
    5050
     
    6767                decltype(auto) operator()(Args&&... args)
    6868                {
    69                     return invoke(func_, forward<Args>(args)...);
     69                    return INVOKE(func_, forward<Args>(args)...);
    7070                }
    7171
  • uspace/lib/cpp/include/impl/mutex.hpp

    rddd287d r69cc156  
    791791            // TODO: exception handling
    792792
    793             aux::invoke(forward<Callable>(func), forward<Args>(args)...);
     793            aux::INVOKE(forward<Callable>(func), forward<Args>(args)...);
    794794            flag.called_ = true;
    795795        }
Note: See TracChangeset for help on using the changeset viewer.