1 /* Cycript - Inlining/Optimizing JavaScript Compiler
 
   2  * Copyright (C) 2009  Jay Freeman (saurik)
 
   5 /* Modified BSD License {{{ */
 
   7  *        Redistribution and use in source and binary
 
   8  * forms, with or without modification, are permitted
 
   9  * provided that the following conditions are met:
 
  11  * 1. Redistributions of source code must retain the
 
  12  *    above copyright notice, this list of conditions
 
  13  *    and the following disclaimer.
 
  14  * 2. Redistributions in binary form must reproduce the
 
  15  *    above copyright notice, this list of conditions
 
  16  *    and the following disclaimer in the documentation
 
  17  *    and/or other materials provided with the
 
  19  * 3. The name of the author may not be used to endorse
 
  20  *    or promote products derived from this software
 
  21  *    without specific prior written permission.
 
  23  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
 
  24  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
 
  25  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 
  26  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
  27  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
 
  28  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 
  29  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 
  30  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 
  31  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 
  32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 
  33  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 
  34  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 
  35  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 
  36  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
  52     ($ CYFunctionExpression(args))
 
  54     ($ CYIdentifier(args))
 
  56     ($ CYDirectMember(args))
 
  58     ($ CYFunctionParameter(args))
 
  72 #define $P1(arg0, args...) \
 
  74 #define $P2(arg0, arg1, args...) \
 
  75     $P($I(arg0), $P1(arg1, ##args))
 
  76 #define $P3(arg0, arg1, arg2, args...) \
 
  77     $P($I(arg0), $P2(arg1, arg2, ##args))
 
  78 #define $P4(arg0, arg1, arg2, arg3, args...) \
 
  79     $P($I(arg0), $P3(arg1, arg2, arg3, ##args))
 
  80 #define $P5(arg0, arg1, arg2, arg3, arg4, args...) \
 
  81     $P($I(arg0), $P4(arg1, arg2, arg3, arg4, ##args))
 
  82 #define $P6(arg0, arg1, arg2, arg3, arg4, arg5, args...) \
 
  83     $P($I(arg0), $P5(arg1, arg2, arg3, arg4, arg5, ##args))
 
  87 #define $C_(args...) \
 
  90     ($ cy::Syntax::New(args))
 
  92 #define $C1_(arg0, args...) \
 
  94 #define $C2_(arg0, arg1, args...) \
 
  95     $C_(arg0, $C1_(arg1, ##args))
 
  96 #define $C3_(arg0, arg1, arg2, args...) \
 
  97     $C_(arg0, $C2_(arg1, arg2, ##args))
 
  98 #define $C4_(arg0, arg1, arg2, arg3, args...) \
 
  99     $C_(arg0, $C3_(arg1, arg2, arg3, ##args))
 
 100 #define $C5_(arg0, arg1, arg2, arg3, arg4, args...) \
 
 101     $C_(arg0, $C4_(arg1, arg2, arg3, arg4, ##args))
 
 102 #define $C6_(arg0, arg1, arg2, arg3, arg4, arg5, args...) \
 
 103     $C_(arg0, $C5_(arg1, arg2, arg3, arg4, arg5, ##args))
 
 105 #define $C0(func, args...) \
 
 107 #define $C1(func, args...) \
 
 109 #define $C2(func, args...) \
 
 111 #define $C3(func, args...) \
 
 113 #define $C4(func, args...) \
 
 115 #define $C5(func, args...) \
 
 118 #define $N0(func, args...) \
 
 120 #define $N1(func, args...) \
 
 122 #define $N2(func, args...) \
 
 124 #define $N3(func, args...) \
 
 126 #define $N4(func, args...) \
 
 128 #define $N5(func, args...) \
 
 131 #define $L(args...) \
 
 132     $ CYDeclaration(args)
 
 134     $ CYDeclarations(arg0)
 
 135 #define $L2(arg0, args...) \
 
 136     $ CYDeclarations(arg0, $L1(args))
 
 137 #define $L3(arg0, args...) \
 
 138     $ CYDeclarations(arg0, $L2(args))
 
 139 #define $L4(arg0, args...) \
 
 140     $ CYDeclarations(arg0, $L3(args))
 
 141 #define $L5(arg0, args...) \
 
 142     $ CYDeclarations(arg0, $L4(args))
 
 144 #endif/*REPLACE_HPP*/