m4_divert(-1) ############################################################################# # # # This code has been created for XClasspath by Grzegorz B. Prokopski. # # All right reserved. # # # ############################################################################# # ########################################################################### # ################# CONDITIONAL MACROS AVAILABLE TO USE ##################### # # M4xcp_if(list,of,names) # # M4xcp_elseif(list,of,names) # # M4xcp_else # # M4xcp_endif # # # ############################ MACRO DEFINITIONS ############################ # # Internal variables used for conditional handling: # # M4xcp_cond_matched - initially 0 # M4xcp_cond_level - initially 0 # M4xcp_prev_level_div - initially 0 # M4xcp_this_level_div - initially 0 # # Usage: # # M4xcp_if pushes M4xcp_cond_matched onto stack and increments M4xcp_cond_level # M4xcp_endif pops M4xcp_cond_matched from stack and decrements M4xcp_cond_level # # Utility functions: # # M4xcp_match_jvm([:list,of,names:] - returns 1 if M4xcp_current_jvm is in the # set, otherwise returns 0 # M4xcp_jvm_cond_error([:Error line:]) - shows error message when called # # ############################################################################# ############################################################################# m4_changequote(`[{<:', `:>}]') m4_changecom m4_define([{<:m4xcp_cond_level:>}],0) m4_define([{<:m4xcp_cond_matched:>}],0) m4_define([{<:m4xcp_prev_level_div:>}],0) m4_define([{<:m4xcp_this_level_div:>}],0) m4_ifdef([{<:m4xcp_jvm:>}],,[{<: m4_errprint([{<:****** M4 Error: You need to specify JVM name with '-Dm4xcp_jvm=jvm_name' :>}])m4_m4exit(1):>}]) m4_define([{<:m4xcp_match_jvm:>}], [{<:m4_ifelse($1,,0,m4_ifelse($1,m4xcp_jvm,1, m4_ifelse($#,1,0,[{<:m4xcp_match_jvm(m4_shift($@)):>}]))):>}]) m4_define([{<:m4xcp_jvm_cond_error:>}],[{<: m4_errprint(****** M4 Error: Dangerously looking[{<:,:>}] possibly improper conditional statment: $1) m4_m4exit(1):>}]) m4_define([{<:m4xcp_if_jvm:>}], [{<:m4_divert(-1)m4_pushdef([{<:m4xcp_cond_matched:>}],0)m4_pushdef([{<:m4xcp_prev_level_div:>}], 0)m4_define([{<:m4xcp_prev_level_div:>}],m4xcp_this_level_div)m4_define([{<:m4xcp_this_level_div:>}], -1)m4_define([{<:m4xcp_cond_level:>}], m4_incr(m4xcp_cond_level))m4_ifelse(m4xcp_match_jvm($@),1, [{<:m4_define([{<:m4xcp_cond_matched:>}], 1)m4_ifelse(m4xcp_prev_level_div,0, [{<:m4_define([{<:m4xcp_this_level_div:>}],0)m4_divert(0):>}]):>}]):>}]m4_d[{<::>}]nl) m4_define([{<:m4xcp_elif_jvm:>}], [{<:m4_divert(-1)m4_define([{<:m4xcp_this_level_div:>}],-1)m4_ifelse(m4xcp_cond_matched,0, [{<:m4_ifelse(m4xcp_match_jvm($@),1, [{<:m4_define([{<:m4xcp_cond_matched:>}],1)m4_ifelse(m4xcp_prev_level_div,0, [{<:m4_define([{<:m4xcp_this_level_div:>}],0)m4_divert(0):>}]):>}]):>}]):>}]m4_d[{<::>}]nl) m4_define([{<:m4xcp_else_jvm:>}], [{<:m4_divert(-1)m4_define([{<:m4xcp_this_level_div:>}],-1)m4_ifelse(m4xcp_cond_matched,0, [{<:m4_define([{<:m4xcp_cond_matched:>}],1)m4_ifelse(m4xcp_prev_level_div,0, [{<:m4_define([{<:m4xcp_this_level_div:>}],0)m4_divert(0):>}]):>}]):>}]m4_d[{<::>}]nl) m4_define([{<:m4xcp_endif_jvm:>}], [{<:m4_define([{<:m4xcp_this_level_div:>}],m4xcp_prev_level_div)m4_popdef([{<:m4xcp_prev_level_div:>}])m4_dnl m4_divert(m4xcp_this_level_div)m4_popdef([{<:m4xcp_cond_matched:>}]):>}]m4_d[{<::>}]nl) m4_divert(0)