403Webshell
Server IP : 217.160.0.212  /  Your IP : 216.73.216.141
Web Server : Apache
System : Linux www 6.18.51-i1-ampere #1196 SMP Fri Sep 11 20:43:55 CEST 2026 aarch64
User : sws1073854427 ( 1073854427)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/pythran/pythonic/operator_/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/pythran/pythonic/operator_/itemgetter.hpp
#ifndef PYTHONIC_OPERATOR_ITEMGETTER_HPP
#define PYTHONIC_OPERATOR_ITEMGETTER_HPP

#include "pythonic/include/operator_/itemgetter.hpp"

#include "pythonic/utils/functor.hpp"
#include "pythonic/types/tuple.hpp"
#include "pythonic/utils/int_.hpp"

PYTHONIC_NS_BEGIN

namespace operator_
{

  itemgetter_return::itemgetter_return(long const &item) : i(item)
  {
  }

  template <class A>
  auto itemgetter_return::operator()(A const &a) const -> decltype(a[i])
  {
    return a[i];
  }

  itemgetter_return itemgetter(long item)
  {
    return itemgetter_return(item);
  }

  template <typename... Types>
  itemgetter_tuple_return<Types...>::itemgetter_tuple_return(Types... items)
      : items(items...)
  {
  }

  template <typename... Types>
  itemgetter_tuple_return<Types...>::itemgetter_tuple_return()
  {
  }

  template <typename... Types>
  template <class T, class A, size_t I>
  void itemgetter_tuple_return<Types...>::helper(T &t, A const &a,
                                                 utils::int_<I>) const
  {
    std::get<I>(t) = a[std::get<I>(items)];
    helper(t, a, utils::int_<I - 1>());
  }

  template <typename... Types>
  template <class T, class A>
  void itemgetter_tuple_return<Types...>::helper(T &t, A const &a,
                                                 utils::int_<0>) const
  {
    std::get<0>(t) = a[std::get<0>(items)];
  }

  template <typename... Types>
  template <class A>
  auto itemgetter_tuple_return<Types...>::operator()(A const &a) const
      -> std::tuple<typename std::remove_cv<typename std::remove_reference<
          decltype(a[std::declval<Types>()])>::type>::type...>
  {
    std::tuple<typename std::remove_cv<typename std::remove_reference<decltype(
        a[std::declval<Types>()])>::type>::type...> t;
    helper(t, a, utils::int_<sizeof...(Types)-1>());
    return t;
  }

  template <class... L>
  itemgetter_tuple_return<long, long, L...>
  itemgetter(long const &item1, long const &item2, L... items)
  {
    return {item1, item2, items...};
  }
}
PYTHONIC_NS_END

#endif

Youez - 2016 - github.com/yon3zu
LinuXploit