-í
_Ôj<c       su    d  Z  q s d k l Z l Z t d k l Z v d k Z d k Z d k Z x y y d k	 Z	 z d Z
 Wn { | d Z
 n X d „  Z ¦ d „  Z Í d k Z d k Z Ð d „  Z Ó d	 f  d
 „  ƒ  YZ Ud e f d „  ƒ  YZ id „  Z pd „  Z wd „  Z ~d „  Z ‰d „  Z d „  Z ”d „  Z œd d „ Z ­d „  Z ³d „  Z ºd „  Z d S(   s1   General utility functions used by the C++ backend(   s   idlutils   idltype(   s   configNi   i    c    sH   ‚ t  i d o³ „ d GH… x) t i |  d ƒ D… ] } † d | GHq2 W‡ d GHˆ d GH‰ t  i i ƒ  ‹ t o> Œ d GH d GHŽ t i	 ƒ   d GH d GH‘ t i
 ƒ  n ’ t i d	 ƒ n ” t i |  d ƒ } • d
 d g | } ˜ x, | D˜ ]! } ™ t i i d | d ƒ qù W› t i i d ƒ ¡ t i d	 ƒ d  S(   Ns   Debugs,   omniidl: fatalError occurred, in debug mode.s   
s   >> s   Configuration state:s   -------------------------s   Stack:s
   Exception:i   s   Fatal error in C++ backends    s	   omniidl: s   
For more information (mailing list archives, bug reports etc) please visit
the webpage:
  http://www.uk.research.att.com/omniORB/omniORB.html
(   s   configs   states   strings   splits   explanations   lines   dumps   have_tracebacks	   tracebacks   print_stacks	   print_excs   syss   exits   liness   stderrs   write(   s   explanations   liness   line(    (    s   ./cxx/util.pys
   fatalError s.    	

 	c     s   ¦ § d }  ­ t |  ƒ d  S(   NsŽ   Unsupported IDL construct encountered in input.

omniORB does not currently support:
  IDL types longdouble, wchar, wstring, fixed, valuetype
(   s   es
   fatalError(   s   e(    (    s   ./cxx/util.pys   unsupportedIDL¦ s   	c      s
   Ð Ñ d  S(   N(    (    (    (    s   ./cxx/util.pys   fnÐ s   s   Streamc      sà   Ó d  Z  Õ Ö d d „ Z à e e ƒ Z á e d ƒ Z â e d ƒ Z ã d d j Z ä d d j Z æ e	 i
 d ƒ Z è d „  Z é d „  Z ê d	 „  Z ë h  d
 „ Z /h  d „ Z <d „  Z Ad „  Z Od „  Z RS(   sg   Test output stream, same as omniidl.output.Stream but with an
       indirection (through write method)i   c    sV   Ö × d |  _ Ø d | |  _ Ù | |  _ Û d |  _ Ü d |  _ Þ |  i |  _ d  S(   Ni    s    s    (	   s   selfs   indents   indent_sizes   istrings   files
   pre_indents   line_buffers   falses   last_line_empty(   s   selfs   files   indent_size(    (    s   ./cxx/util.pys   __init__Ö s   i   s   fooi    s	   @([^@]*)@c    s   è è |  i d |  _ d  S(   Ni   (   s   selfs   indent(   s   self(    (    s   ./cxx/util.pys
   inc_indentè s    c    s   é é |  i d |  _ d  S(   Ni   (   s   selfs   indent(   s   self(    (    s   ./cxx/util.pys
   dec_indenté s    c    s   ê ê d |  _ d  S(   Ni    (   s   selfs   indent(   s   self(    (    s   ./cxx/util.pys   reset_indentê s    c    s^  ë ì î | i | ƒ ð | d „ } ô x/t i | d ƒ Dô ]} õ d d j }	 ö t i | d ƒ } ÷ | g  j o
 ÷ q; n ù |  i |  i } ú t i | d ƒ d j o, û | | d } ü |	 }	 ý | d } n ÿ |  i }  xV| D ]K} |	 }	 |	 o9 | o |  i |  i | ƒ n |  i | ƒ ní	t | t ƒ  | ƒ } d }
 t | |  i ƒ o | }
 nï t | t ƒ o t | ƒ }
 nÉ t | |  i ƒ of |  i } |  i } d |  _ |  i | |  _ t | ƒ | |  _ | |  _ qô nM t | |  i ƒ p t  | d ƒ o t | ƒ }
 n d t! | ƒ ‚ t i |
 d ƒ }  xŸ t# d t$ | ƒ ƒ D ]… } !| o "|  i |  i | ƒ n $|  i& } &|  i | | ƒ '| t$ | ƒ d j  o  (|  i d ƒ )|  i } n qªW+|  i& } qô W-|  i d ƒ q; Wd	 S(
   s@   Output a multi-line string with indentation and @@ substitution.c    sJ   ð ñ |  i d ƒ d j o ñ d Sn ò t |  i d ƒ t ƒ  | ƒ Sd  S(   Ni   s    s   @(   s   matchs   groups   evals   globalss   dict(   s   matchs   dict(    (    s   ./cxx/util.pys   replaceð s    s   
i   i    s   @s    s   __str__s   What kind of type is N('   s   dicts   updates   ldicts   replaces   strings   splits   texts   ls   is_literal_texts   tokenss   selfs   istrings   indents
   pre_indents   lstrips   trues   start_of_lines   tokens   writes   evals   globalss   things   expandeds
   isinstances   string_types   StringStreams   strs   function_types   old_indent_strs   old_indent_levels   applys   integer_types   hasattrs   reprs   liness   ranges   lens   ns   false(   s   selfs   texts   ldicts   dicts   old_indent_strs   replaces   tokenss   old_indent_levels
   pre_indents   is_literal_texts   expandeds   liness   ls   things   tokens   ns   start_of_line(    (    s   ./cxx/util.pys   outë sh    	 


 	


	
& 	
c    s{   /02| i | ƒ 4| d „ } 8xL t i |  i i | | ƒ d ƒ D8]& } 9|  i | ƒ :|  i d ƒ qJ Wd S(   s/   Output a multi-line string without indentation.c    sJ   45|  i d ƒ d j o 5d Sn 6t |  i d ƒ t ƒ  | ƒ Sd  S(   Ni   s    s   @(   s   matchs   groups   evals   globalss   dict(   s   matchs   dict(    (    s   ./cxx/util.pys   replace4s    s   
N(   s   dicts   updates   ldicts   replaces   strings   splits   selfs   regexs   subs   texts   ls   write(   s   selfs   texts   ldicts   dicts   ls   replace(    (    s   ./cxx/util.pys   niout/s   % 	c    sM   <=t  i |  i ƒ } >| d j o | d d j o ?| |  _ n d  S(   Ns    i    s   #(   s   strings   lstrips   selfs   line_buffer(   s   selfs   lstrip(    (    s   ./cxx/util.pys   preproc<s   !c    s›   AB| d j oq C|  i ƒ  Et i |  i ƒ d j } F|  i o | o G|  i ƒ  n Id |  _ J| |  _ Ld  Sn M|  i | |  _ d  S(   Ns   
s    (	   s   texts   selfs   preprocs   strings   lstrips   line_buffers   this_line_emptys   last_line_emptys   writeln(   s   selfs   texts   this_line_empty(    (    s   ./cxx/util.pys   writeAs   c    s<   OP|  i i |  i ƒ Q|  i i d ƒ Rd |  _ d  S(   Ns   
s    (   s   selfs   files   writes   line_buffer(   s   self(    (    s   ./cxx/util.pys   writelnOs   (   s   __doc__s   __init__s   types   fns   function_types   integer_types   string_types   trues   falses   res   compiles   regexs
   inc_indents
   dec_indents   reset_indents   outs   niouts   preprocs   writes   writeln(    (    (    s   ./cxx/util.pys   StreamÓ s    	
Ds   StringStreamc      sA   Ud  Z  VWd d „ Z [d „  Z _d „  Z bd „  Z RS(   s-   Writes to a string buffer rather than a file.i   c    s)   WXt  i |  t | ƒ Yd |  _ d  S(   Ns    (   s   Streams   __init__s   selfs   Nones   indent_sizes   _StringStream__buffer(   s   selfs   indent_size(    (    s   ./cxx/util.pys   __init__Ws   c    s-   [\|  i |  i d |  _ ]d |  _ d  S(   Ns   
s    (   s   selfs   _StringStream__buffers   line_buffer(   s   self(    (    s   ./cxx/util.pys   writeln[s   c    s   _`|  i Sd  S(   N(   s   selfs   _StringStream__buffer(   s   self(    (    s   ./cxx/util.pys   __str___s   c    s   bc|  i t | ƒ Sd  S(   N(   s   selfs   _StringStream__buffers   strs   other(   s   selfs   other(    (    s   ./cxx/util.pys   __add__bs   (   s   __doc__s   __init__s   writelns   __str__s   __add__(    (    (    s   ./cxx/util.pys   StringStreamUs
   	c    sT   ij|  } kx6 | Dk]+ } l| | j o m| i | ƒ n q Wn| Sd  S(   N(   s   as   results   bs   xs   append(   s   as   bs   xs   result(    (    s   ./cxx/util.pys   unionis   

 	c    sS   pqg  } rx6 |  Dr]+ } s| | j o t| i | ƒ n q Wu| Sd  S(   N(   s   results   as   xs   bs   append(   s   as   bs   xs   result(    (    s   ./cxx/util.pys   minusps   	
 	c    sR   wxg  } yx5 |  Dy]* } z| | j o {| i | ƒ n q W|| Sd  S(   N(   s   results   as   xs   bs   append(   s   as   bs   xs   result(    (    s   ./cxx/util.pys	   intersectws   	
 	c    sS   ~g  } €x6 |  D€]+ } | | j o ‚| i | ƒ n q W„| Sd  S(   N(   s   new_sets   sets   xs   append(   s   sets   xs   new_set(    (    s   ./cxx/util.pys   setify~s   	
 	c    s\   ‰Š|  g  j p
 | g  j o Šg  Sn ‹|  d | d f g t |  d | d ƒ Sd  S(   Ni    i   (   s   as   bs   zip(   s   as   b(    (    s   ./cxx/util.pys   zip‰s    c    sv   Žt  |  ƒ d j o | |  d | ƒ Sn | |  d |  d ƒ } ‘| g |  d } ’t | | | ƒ Sd  S(   Ni   i    i   (   s   lens   lists   fns   bases   firsts   rests   fold(   s   lists   bases   fns   rests   first(    (    s   ./cxx/util.pys   folds
   c    s   ”•|  | Sd  S(   N(   s   xs   y(   s   xs   y(    (    s   ./cxx/util.pys   append”s   s   _ic    s¹   œd } žd } Ÿd }  xŠ | D ] } ¡|  i d £d | ¤d | ¥d t | ƒ ¦d t | ƒ ƒ§|  i	 ƒ  ¨| d	 | t | ƒ d
 } ©| d } q( Wª| Sd  S(   Ni    s    s   CORBA::ULongs?   for (@iter_type@ @prefix@@n@ = 0;@prefix@@n@ < @dim@;_i@n@++) {s	   iter_types   prefixs   ns   dims   [s   ]i   (
   s   indexs   istrings	   iter_types   dimss	   dimensions   wheres   outs   prefixs   strs
   inc_indent(   s   wheres   dimss   prefixs	   iter_types   indexs   istrings	   dimension(    (    s   ./cxx/util.pys
   start_loopœs   			
 			c    s;   ­®x. | D®]# } ¯|  i ƒ  °|  i d ƒ q Wd  S(   Ns   }(   s   dimss   dummys   wheres
   dec_indents   out(   s   wheres   dimss   dummy(    (    s   ./cxx/util.pys   finish_loop­s   
 	c    s=   ³´d } µ|  i d ƒ ¶|  i ƒ  ·t |  | ƒ Sd  S(   Ns   CORBA::ULongs   {(   s	   iter_types   strings   outs
   inc_indents
   start_loops	   full_dims(   s   strings	   full_dimss	   iter_type(    (    s   ./cxx/util.pys   block_begin_loop³s   	c    s4   º»t  |  | ƒ ½|  i ƒ  ¾|  i d ƒ d  S(   Ns   }(   s   finish_loops   strings	   full_dimss
   dec_indents   out(   s   strings	   full_dims(    (    s   ./cxx/util.pys   block_end_loopºs   (   s   __doc__s   omniidls   idlutils   idltypes   omniidl_be.cxxs   configs   syss   res   strings	   tracebacks   have_tracebacks
   fatalErrors   unsupportedIDLs   fns   Streams   StringStreams   unions   minuss	   intersects   setifys   zips   folds   appends
   start_loops   finish_loops   block_begin_loops   block_end_loop(   s   unsupportedIDLs   strings   syss   folds   StringStreams   fns   res   idlutils   idltypes   finish_loops   Streams   zips   have_tracebacks   unions	   tracebacks   block_end_loops
   fatalErrors   setifys   appends	   intersects
   start_loops   block_begin_loops   configs   minus(    (    s   ./cxx/util.pys   ?q s2   %'‚