| 10 | | code = ARGF.read ;\ |
| 11 | | code.gsub!(/^MP_ARGS_BEGIN$$(.*?)^MP_ARGS_END$$/m) {|s| ;\ |
| 12 | | re = [] ;\ |
| 13 | | 1.upto(15) {|n| \ |
| 14 | | m = s.split("\n")[1..-2].join("\n") ;\ |
| 15 | | m.gsub! /MP_ARGS_TEMPLATE/, args(n) {|i| "typename A#{i}" } ;\ |
| 16 | | m.gsub! /MP_ARGS_PARAMS/, args(n) {|i| "A#{i} a#{i}" } ;\ |
| 17 | | m.gsub! /MP_ARGS_FUNC/, args(n) {|i| "a#{i}" } ;\ |
| 18 | | re << m ;\ |
| | 24 | src = ARGF.read ;\ |
| | 25 | src.gsub!(/^MP_ARGS_BEGIN$$(.*?)^MP_ARGS_END$$/m) {|code| ;\ |
| | 26 | result = [] ;\ |
| | 27 | 1.upto(15) {|n| ;\ |
| | 28 | line = code.split("\n")[1..-2].join("\n") ;\ |
| | 29 | line.gsub!(/MP_ARGS_TEMPLATE/, args(n) {|i| "typename A#{i}" }) ;\ |
| | 30 | line.gsub!(/MP_ARGS_PARAMS_PTR/, args(n) {|i| "A#{i}* a#{i}" }) ;\ |
| | 31 | line.gsub!(/MP_ARGS_PARAMS_REF/, args(n) {|i| "A#{i}& a#{i}" }) ;\ |
| | 32 | line.gsub!(/MP_ARGS_PARAMS/, args(n) {|i| "A#{i} a#{i}" }) ;\ |
| | 33 | line.gsub!(/MP_ARGS_FUNC/, args(n) {|i| "a#{i}" }) ;\ |
| | 34 | line.gsub!(/MP_ARGS_TYPES_PTR/, args(n) {|i| "A#{i}*" }) ;\ |
| | 35 | line.gsub!(/MP_ARGS_TYPES_REF/, args(n) {|i| "A#{i}&" }) ;\ |
| | 36 | line.gsub!(/MP_ARGS_TYPES/, args(n) {|i| "A#{i}" }) ;\ |
| | 37 | line.gsub!(/MP_ARGS_ITERATOR_BEGIN$$(.*?)^MP_ARGS_ITERATOR_END$$/m) {|sub| ;\ |
| | 38 | subresult = [] ;\ |
| | 39 | subline = sub.split("\n")[1..-2].join("\n") ;\ |
| | 40 | 1.upto(n) {|it| ;\ |
| | 41 | sublineit = subline.dup ;\ |
| | 42 | sublineit.gsub!(/MP_ARGS_ITERATOR_PARAM/, "a#{it}") ;\ |
| | 43 | sublineit.gsub!(/MP_ARGS_ITERATOR_TYPE_PTR/, "A#{it}*") ;\ |
| | 44 | sublineit.gsub!(/MP_ARGS_ITERATOR_TYPE_REF/, "A#{it}&") ;\ |
| | 45 | sublineit.gsub!(/MP_ARGS_ITERATOR_TYPE/, "A#{it}") ;\ |
| | 46 | sublineit.gsub!(/\[MP_ARGS_ITERATOR\]/, "#{it}" ) ;\ |
| | 47 | if it == 1 ;\ |
| | 48 | sublineit.gsub!(/MP_ARGS_ITERATOR_COLON/, " " ) ;\ |
| | 49 | else ;\ |
| | 50 | sublineit.gsub!(/MP_ARGS_ITERATOR_COLON/, "," ) ;\ |
| | 51 | end ;\ |
| | 52 | subresult << sublineit ;\ |
| | 53 | } ;\ |
| | 54 | subresult.join("\n") ;\ |
| | 55 | } ;\ |
| | 56 | result << line ;\ |