ó
V™xTc           @   s”   d  d l  m Z d  d l m Z d Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z e d k r� e d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   utilss9   scitbx.source_generators.array_family.generate_reductionsc          K   s   |  S(   N(    (   t   kwds(    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt	   make_dict   s    c         C   s`   x4 |  j  ƒ  D]& \ } } | j d | d | ƒ } q W| j d ƒ d k  sX t d ƒ ‚ | d S(   Ns   ${t   }i    s   Incomplete substitutions.i   (   t   itemst   replacet   findt   AssertionError(   t   subst   templatet   keyt   value(    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt
   substitute	   s    !c         C   s   |  t  | d ƒ IJd  S(   Ns?  
  template <typename ElementType1${templ_decl_2_1},
            typename ElementType2${templ_decl_2_2}>
  int
  inline
  order(
    ${array_type_plain}<ElementType1${templ_inst_2_1}> const& a1,
    ${array_type_plain}<ElementType2${templ_inst_2_2}> const& a2)
  {
    return order(a1.const_ref(), a2.const_ref());
  }
(   R   (   t   fR	   (    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt   generate_order   s    
c         C   s2   x+ d D]# } | | d <|  t  | d ƒ IJq Wd  S(   Nt	   max_indext	   min_indext	   func_namesÂ   
  template <typename ElementType${templ_decl_2}>
  inline
  std::size_t
  ${func_name}(${array_type_plain}<ElementType${templ_inst_2}> const& a)
  {
    return ${func_name}(a.const_ref());
  }
(   R   R   (   R   (   R   R	   R   (    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt   generate_max_index_etc   s    

c         C   s2   x+ d D]# } | | d <|  t  | d ƒ IJq Wd  S(   Nt   first_indext
   last_indexR   s  
  template <typename ElementType${templ_decl_2}, class PredicateType>
  inline
  boost::optional<std::size_t>
  ${func_name}(${array_type_plain}<ElementType${templ_inst_2}> const& a,
               PredicateType p)
  {
    return ${func_name}(a.const_ref(), p);
  }
(   R   R   (   R   (   R   R	   R   (    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt   generate_first_index_etc*   s    

	c         C   s2   x+ d D]# } | | d	 <|  t  | d
 ƒ IJq Wd  S(   Nt   maxt   mint   max_absolutet   sumt   sum_sqt   productt   meant   mean_sqR   sÂ   
  template <typename ElementType${templ_decl_2}>
  inline
  ElementType
  ${func_name}(${array_type_plain}<ElementType${templ_inst_2}> const& a)
  {
    return ${func_name}(a.const_ref());
  }
(   s   maxs   minR   s   sumR   R   R   R   (   R   (   R   R	   R   (    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt   generate_max_etc8   s     


c         C   s2   x+ d D]# } | | d <|  t  | d ƒ IJq Wd  S(   Nt   mean_weightedt   mean_sq_weightedR   s‹  
  template <typename ElementTypeValues${templ_decl_2_1eq},
            typename ElementTypeWeights${templ_decl_2_2eq}>
  inline
  ElementTypeValues
  ${func_name}(
    ${array_type_plain}<ElementTypeValues${templ_inst_2_1eq}> const& values,
    ${array_type_plain}<ElementTypeWeights${templ_inst_2_2eq}> const& weights)
  {
    return ${func_name}(values.const_ref(), weights.const_ref());
  }
(   R    R!   (   R   (   R   R	   R   (    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt   generate_mean_weighted_etcG   s    

c         C   sÆ   | d } | d | d <| j  ƒ  | d <t j |  d | d ƒ } t j | t ƒ | t | d ƒ IJt | | ƒ t | | ƒ t | | ƒ t	 | | ƒ t
 | | ƒ | t | d ƒ IJ| j ƒ  d  S(	   Nt
   array_typet   _plaint   array_type_plaint
   ARRAY_TYPEs   %s_reductions.ht   ws  
#ifndef SCITBX_ARRAY_FAMILY_${ARRAY_TYPE}_REDUCTIONS_H
#define SCITBX_ARRAY_FAMILY_${ARRAY_TYPE}_REDUCTIONS_H

#ifndef DOXYGEN_SHOULD_SKIP_THIS

#include <scitbx/array_family/ref_reductions.h>
#include <scitbx/array_family/${array_type_plain}.h>

namespace scitbx { namespace af {
sz   
}} // namespace scitbx::af

#endif // DOXYGEN_SHOULD_SKIP_THIS

#endif // SCITBX_ARRAY_FAMILY_${ARRAY_TYPE}_REDUCTIONS_H
(   t   upperR   t	   join_opent   write_this_is_auto_generatedt   thisR   R   R   R   R"   R   t   close(   t
   target_dirR	   R#   R   (    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt   one_typeW   s    


	
	c         C   sZ  t  d d d d d d d d d	 d d
 d d d d d d d d d d d ƒ } t  d d d d d d d d d	 d d
 d d d d d d d d d d d ƒ } t  d d d d d d d d d	 d d
 d d d d d d d d d d d ƒ } t  d d d d d d d d d	 d d
 d d d d d d d d d d d ƒ } x' | | | | f D] } t |  | ƒ q?Wd  S(   NR#   t   tinyt   templ_decl_2s   , std::size_t Nt   templ_decl_2_1s   , std::size_t N1t   templ_decl_2_2s   , std::size_t N2t   templ_decl_2_1eqt   templ_decl_2_2eqt    t   templ_inst_2s   , Nt   templ_inst_2_1s   , N1t   templ_inst_2_2s   , N2t   templ_inst_2_1eqt   templ_inst_2_2eqt   smallt   sharedt   versas   , typename AccessorTypes   , typename AccessorType1s   , typename AccessorType2s   , AccessorTypes   , AccessorType1s   , AccessorType2(   R   R.   (   R-   t	   tiny_subst
   small_subst   shared_subst
   versa_subsR	   (    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt   runy   sd    				t   __main__t   .N(   t
   __future__R    t   scitbx.source_generatorsR   R+   R   R   R   R   R   R   R"   R.   RB   t   __name__(    (    (    sg   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/source_generators/array_family/generate_reductions.pyt   <module>   s   								"	4