← Back
Editing: cxxtypes.cpython-311.pyc
� cR�a�G � �N � d Z ddlmZ G d� de� � Z G d� de� � ZdS )zJ This module defines classes needed to manipulate c++ types from pythran. � )�isclassc �. � e Zd Zdd�Zd� Zd� Zd� Zd� ZdS )�ordered_setNc � � t � � | _ t � � | _ |�|D ]}| � |� � �d S d S �N)�list�values�set� unique_values�append)�self�elements�elts �2/usr/lib/python3/dist-packages/pythran/cxxtypes.py�__init__zordered_set.__init__ sU � ��f�f��� �U�U������ !� !�����C� � � � � �� !� !� c � � || j vr6| j � |� � | j � |� � d S d S r )r r r �add)r �values r r zordered_set.append sK � ���*�*�*��K���u�%�%�%���"�"�5�)�)�)�)�)� +�*r c �* � t | j � � S r )�iterr �r s r �__iter__zordered_set.__iter__ s � ��D�K� � � r c �* � t | j � � S r )�lenr r s r �__len__zordered_set.__len__ s � ��4�;���r c � � | j | S r )r )r �indexs r �__getitem__zordered_set.__getitem__ s � ��{�5�!�!r r )�__name__� __module__�__qualname__r r r r r � r r r r sd � � � � � �!� !� !� !�*� *� *� !� !� !� � � �"� "� "� "� "r r c � � e Zd ZdZd� ZdS )�TypeBuilderaQ >>> builder = TypeBuilder() >>> builder.NamedType('long long') long long >>> l_ty = builder.NamedType('long') >>> i_ty = builder.NamedType('int') >>> f_ty = builder.NamedType('float') >>> l_ty + builder.NamedType('long') long >>> builder.NamedType('long') + builder.NamedType('char') typename __combined<long,char>::type >>> builder.ArgumentType(4) typename std::remove_cv<typename std::remove_reference<argument_type4>::type>::type >>> builder.Assignable(builder.NamedType("long")) typename pythonic::assignable<long>::type >>> builder.Returnable(builder.NamedType("long")) typename pythonic::returnable<long>::type >>> builder.Lazy(builder.NamedType("long")) typename pythonic::lazy<long>::type >>> builder.DeclType("toto") typename std::remove_cv<typename std::remove_reference<decltype(toto)>::type>::type >>> builder.IteratorOfType(builder.NamedType('some')) typename some::iterator >>> builder.IteratorOfType(builder.NamedType('typename some::stuff')) typename some::stuff::iterator >>> builder.IteratorContentType(builder.NamedType('str')) typename std::remove_cv<typename std::iterator_traits<typename std::remove_reference<str>::type::iterator>::value_type>::type >>> builder.GetAttr(builder.NamedType('complex'), 'real') decltype(pythonic::builtins::getattr(pythonic::types::attr::REAL{}, std::declval<complex>())) >>> builder.ReturnType(builder.NamedType('math::cos'), [f_ty]) decltype(std::declval<math::cos>()(std::declval<float>())) >>> t = builder.TupleType([i_ty, builder.NamedType('str')]) >>> builder.ElementType(1, t) typename std::tuple_element<1,typename std::remove_reference<decltype(pythonic::types::make_tuple(std::declval<int>(), std::declval<str>()))>::type>::type >>> builder.ListType(builder.NamedType('int')) pythonic::types::list<typename std::remove_reference<int>::type> >>> builder.SetType(builder.NamedType('int')) pythonic::types::set<int> >>> builder.TupleType([i_ty, builder.NamedType('bool')]) decltype(pythonic::types::make_tuple(std::declval<int>(), std::declval<bool>())) >>> builder.DictType(builder.NamedType('int'), builder.NamedType('float')) pythonic::types::dict<int,float> >>> builder.ContainerType(builder.NamedType('int')) container<typename std::remove_reference<int>::type> >>> builder.IndexableType(builder.NamedType('int')) indexable<int> >>> op = lambda x,y: x + '+' + y >>> builder.ExpressionType(op, [l_ty, i_ty]) decltype(std::declval<long>()+std::declval<int>()) c � � ���������������� t � � � _ G ��� fd�dt � � � G �fd�d�� � � G ��� fd�d�� � � G �fd�d�� � � G �fd �d �� � � G ��fd�d�� � � G �fd �d�� � � G �fd�d�� � � G d� d�� � } G d� d�� � } G d� d�� � } G d� d�� � } G d� d�� � } G d� d�� � } G d� d�� � } G �fd�d �� � � G �fd!�d"�� � � G �fd#�d$�� � � G d%� d&�� � } G d'� d(�� � } G �fd)�d*�� � � G �fd+�d,�� � � G d-� d.�� � } G d/� d0�� � } G �fd1�d2�� � � G �fd3�d4�� � � �� � � _ t � � � � � D ]%\ }} t | � � rt � || � � �&d S )5Nc �D �� � e Zd ZdZ�� �fd�Zd� Zd� Z�fd�Zd� Z� xZ S )�"TypeBuilder.__init__.<locals>.Typez� A generic type object to be sub-classed The keyword arguments are used to built the internal representation one attribute per key with the associated value c � �� | j dk r#t �| � � � | � � S | f}|t d� t |� � � � � D � � � � z D ],}t |t � � rt |� � }||fz }�-|�j vr+t �| � � � | � � �j |<