コード例 #1
0
ファイル: main.c プロジェクト: alex-lx/solve-move-the-box
int main(void) { 
  SceneSize scene_size = { SCENE_WIDTH, SCENE_HEIGHT };
  
  int scene[SCENE_WIDTH][SCENE_HEIGHT];
  size_t step_count;
  while (1) {
    scanf("%zu", &step_count);
    for (int i = 0; i < SCENE_WIDTH; i++) {
      for (int j = 0; i < SCENE_HEIGHT; j++) {
        scanf("%d", &scene[i][j]);
        if (scene[i][j] == 0) {
          for (int k = j+1; k < SCENE_HEIGHT; k++) {
            scene[i][k] = 0;
          }
          break;
        }
      }
    }
    Action actions[MAX_STEP_NUM];
    if (Solve(scene_size, scene, actions, 0, step_count)) {
      print_actions(actions, step_count);
    } else {
      printf("Im sooooorry\n");
    }
  }

  return 0;
}
コード例 #2
0
ファイル: main.c プロジェクト: michaelchevallier/pushswap
static void	final_print(t_options **options, t_lman **a, t_lman **retain)
{
	if ((*options)->printoff != 1)
		print_actions(retain, options);
	if ((*options)->list == 1)
		print_list(a);
	if ((*options)->nbop == 1)
		ft_printf("%ld operations to sort this list", (*retain)->stack_size);
}
コード例 #3
0
ファイル: verbose.c プロジェクト: JX7P/JXWebGen
static void print_state (int state)
{
    if (state)
        fprintf (verbose_file, "\n\n");
    if (SRconflicts[state] || RRconflicts[state])
        print_conflicts (state);
    fprintf (verbose_file, "state %d\n", state);
    print_core (state);
    print_nulls (state);
    print_actions (state);
}
コード例 #4
0
ファイル: opts.c プロジェクト: capone-project/capone-core
void cpn_opts_usage(const struct cpn_opt *opts,
        const char *executable, FILE *out)
{
    fputs("USAGE: ", out);
    print_header(opts, executable, NULL, out);
    if (has_actions(opts) || has_options(opts))
        fputc('\n', out);
    print_arguments(opts, out, 1);
    if (has_actions(opts) && has_options(opts))
        fputc('\n', out);
    print_actions(opts, out, 1);
}
コード例 #5
0
ファイル: verbose.c プロジェクト: GerHobbelt/BtYacc
void print_state(int state)
{
    if (state)
        BtYacc_puts("\n\n", verbose_file);

    if (SRconflicts[state] || RRconflicts[state])
        print_conflicts(state);

    BtYacc_printf(verbose_file, "state %d\n", state);
    print_core(state);
    print_nulls(state);
    print_actions(state);
}
コード例 #6
0
ファイル: route.c プロジェクト: Drooids/openser-xmlrpc
/* debug function, prints main routing table */
void print_rl(void)
{
	int j;

	for(j=0; j<RT_NO; j++){
		if (rlist[j]==0){
			if (j==0) LM_DBG("WARNING: the main routing table is empty\n");
			continue;
		}
		LM_DBG("routing table %d:\n",j);
		print_actions(rlist[j]);
		LM_DBG("\n");
	}
	for(j=0; j<ONREPLY_RT_NO; j++){
		if (onreply_rlist[j]==0){
			continue;
		}
		LM_DBG("onreply routing table %d:\n",j);
		print_actions(onreply_rlist[j]);
		LM_DBG("\n");
	}
	for(j=0; j<FAILURE_RT_NO; j++){
		if (failure_rlist[j]==0){
			continue;
		}
		LM_DBG("failure routing table %d:\n",j);
		print_actions(failure_rlist[j]);
		LM_DBG("\n");
	}
	for(j=0; j<BRANCH_RT_NO; j++){
		if (branch_rlist[j]==0){
			continue;
		}
		LM_DBG("T-branch routing table %d:\n",j);
		print_actions(branch_rlist[j]);
		LM_DBG("\n");
	}
}
コード例 #7
0
ファイル: print.c プロジェクト: crow89/Alcatel_OT_985_kernel
static void
print_state (FILE *out, state *s)
{
  fputs ("\n\n", out);
  fprintf (out, _("state %d"), s->number);
  fputc ('\n', out);
  print_core (out, s);
  print_actions (out, s);
  if ((report_flag & report_solved_conflicts) && s->solved_conflicts)
    {
      fputc ('\n', out);
      fputs (s->solved_conflicts, out);
    }
}
コード例 #8
0
ファイル: print-xml.c プロジェクト: lexxmark/winflexbison
static void
print_state (FILE *out, int level, state *s)
{
  fputc ('\n', out);
  xml_printf (out, level, "<state number=\"%d\">", s->number);
  print_core (out, level + 1, s);
  print_actions (out, level + 1, s);
  if (s->solved_conflicts_xml)
    {
      xml_puts (out, level + 1, "<solved-conflicts>");
      fputs (s->solved_conflicts_xml, out);
      xml_puts (out, level + 1, "</solved-conflicts>");
    }
  else
    xml_puts (out, level + 1, "<solved-conflicts/>");
  xml_puts (out, level, "</state>");
}
コード例 #9
0
ファイル: opts.c プロジェクト: capone-project/capone-core
static void print_actions(const struct cpn_opt *opts, FILE *out, int indent)
{
    const struct cpn_opt *it;
    int i;

    for (it = opts; it && it->type != CPN_OPTS_TYPE_END; it++) {
        if (it->type != CPN_OPTS_TYPE_ACTION)
            continue;

        for (i = indent; i; i--)
            fputc('\t', out);
        print_header(it->value.action_opts, it->long_name, it->description, out);
        print_arguments(it->value.action_opts, out, indent + 1);
        if (has_actions(it) && has_options(it))
            fputc('\n', out);
        print_actions(it->value.action_opts, out, indent + 1);
    }
}
コード例 #10
0
static void
got_introspection (GUPnPServiceInfo          *info,
                   GUPnPServiceIntrospection *introspection,
                   const GError              *error,
                   G_GNUC_UNUSED gpointer     user_data)
{
        if (error) {
                g_warning ("Failed to create introspection for '%s': %s",
                           gupnp_service_info_get_udn (info),
                           error->message);

                return;
        }

        g_print ("service:  %s\nlocation: %s\n",
                gupnp_service_info_get_udn (info),
                gupnp_service_info_get_location (info));
        print_actions (introspection);
        print_state_variables (introspection);
        g_object_unref (introspection);
}
コード例 #11
0
ファイル: route_struct.c プロジェクト: 4N7HR4X/kamailio
void print_action(struct action* t)
{
	switch(t->type){
		case FORWARD_T:
			DBG("forward(");
			break;
		case FORWARD_TCP_T:
			DBG("forward_tcp(");
			break;
		case FORWARD_UDP_T:
			DBG("forward_udp(");
			break;
		case DROP_T:
			DBG("drop(");
			break;
		case LOG_T:
			DBG("log(");
			break;
		case ERROR_T:
			DBG("error(");
			break;
		case ROUTE_T:
			DBG("route(");
			break;
		case EXEC_T:
			DBG("exec(");
			break;
		case REVERT_URI_T:
			DBG("revert_uri(");
			break;
		case STRIP_T:
			DBG("strip(");
			break;
		case APPEND_BRANCH_T:
			DBG("append_branch(");
			break;
		case PREFIX_T:
			DBG("prefix(");
			break;
		case LEN_GT_T:
			DBG("len_gt(");
			break;
		case SETFLAG_T:
			DBG("setflag(");
			break;
		case RESETFLAG_T:
			DBG("resetflag(");
			break;
		case ISFLAGSET_T:
			DBG("isflagset(");
			break;
		case AVPFLAG_OPER_T:
			DBG("avpflagoper(");
			break;
		case SET_HOST_T:
			DBG("sethost(");
			break;
		case SET_HOSTPORT_T:
			DBG("sethostport(");
			break;
		case SET_HOSTPORTTRANS_T:
			DBG("sethostporttrans(");
			break;
		case SET_USER_T:
			DBG("setuser(");
			break;
		case SET_USERPASS_T:
			DBG("setuserpass(");
			break;
		case SET_PORT_T:
			DBG("setport(");
			break;
		case SET_URI_T:
			DBG("seturi(");
			break;
		case IF_T:
			DBG("if (");
			break;
		case MODULE0_T:
		case MODULE1_T:
		case MODULE2_T:
		case MODULE3_T:
		case MODULE4_T:
		case MODULE5_T:
		case MODULE6_T:
		case MODULEX_T:
		case MODULE1_RVE_T:
		case MODULE2_RVE_T:
		case MODULE3_RVE_T:
		case MODULE4_RVE_T:
		case MODULE5_RVE_T:
		case MODULE6_RVE_T:
		case MODULEX_RVE_T:
			DBG(" external_module_call(");
			break;
		case FORCE_RPORT_T:
			DBG("force_rport(");
			break;
		case SET_ADV_ADDR_T:
			DBG("set_advertised_address(");
			break;
		case SET_ADV_PORT_T:
			DBG("set_advertised_port(");
			break;
		case FORCE_TCP_ALIAS_T:
			DBG("force_tcp_alias(");
			break;
		case LOAD_AVP_T:
			DBG("load_avp(");
			break;
		case AVP_TO_URI_T:
			DBG("avp_to_attr");
			break;
		case FORCE_SEND_SOCKET_T:
			DBG("force_send_socket");
			break;
		case ASSIGN_T
	:		DBG("assign(");
			break;
		case ADD_T:
			DBG("assign_add(");
			break;
		default:
			DBG("UNKNOWN(");
	}
	switch(t->val[0].type){
		case STRING_ST:
			DBG("\"%s\"", ZSW(t->val[0].u.string));
			break;
		case NUMBER_ST:
			DBG("%lu",t->val[0].u.number);
			break;
		case IP_ST:
			print_ip("", (struct ip_addr*)t->val[0].u.data, "");
			break;
		case EXPR_ST:
			print_expr((struct expr*)t->val[0].u.data);
			break;
		case ACTIONS_ST:
			print_actions((struct action*)t->val[0].u.data);
			break;
		case MODEXP_ST:
			DBG("f_ptr<%p>",t->val[0].u.data);
			break;
		case SOCKID_ST:
			DBG("%d:%s:%d",
			((struct socket_id*)t->val[0].u.data)->proto,
			ZSW(((struct socket_id*)t->val[0].u.data)->addr_lst->name),
			((struct socket_id*)t->val[0].u.data)->port
			);
			break;
		case AVP_ST:
			DBG("avp(%u,%.*s)", t->val[0].u.attr->type, t->val[0].u.attr->name.s.len, ZSW(t->val[0].u.attr->name.s.s));
			break;
		case SELECT_ST:
			DBG("select");
			break;
		default:
			DBG("type<%d>", t->val[0].type);
	}
	if (t->type==IF_T) DBG(") {");
	switch(t->val[1].type){
		case NOSUBTYPE:
			break;
		case STRING_ST:
			DBG(", \"%s\"", ZSW(t->val[1].u.string));
			break;
		case NUMBER_ST:
			DBG(", %lu",t->val[1].u.number);
			break;
		case EXPR_ST:
			print_expr((struct expr*)t->val[1].u.data);
			break;
		case ACTION_ST:
		case ACTIONS_ST:
			print_actions((struct action*)t->val[1].u.data);
			break;

		case SOCKID_ST:
			DBG("%d:%s:%d",
			((struct socket_id*)t->val[0].u.data)->proto,
			ZSW(((struct socket_id*)t->val[0].u.data)->addr_lst->name),
			((struct socket_id*)t->val[0].u.data)->port
			);
			break;
		case AVP_ST:
			DBG(", avp(%u,%.*s)", t->val[1].u.attr->type, t->val[1].u.attr->name.s.len, ZSW(t->val[1].u.attr->name.s.s));
			break;
		case SELECT_ST:
			DBG("select");
			break;
		default:
			DBG(", type<%d>", t->val[1].type);
	}
	if (t->type==IF_T) DBG("} else {");
	switch(t->val[2].type){
		case NOSUBTYPE:
			break;
		case STRING_ST:
			DBG(", \"%s\"", ZSW(t->val[2].u.string));
			break;
		case NUMBER_ST:
			DBG(", %lu",t->val[2].u.number);
			break;
		case EXPR_ST:
			print_expr((struct expr*)t->val[2].u.data);
			break;
		case ACTIONS_ST:
			print_actions((struct action*)t->val[2].u.data);
			break;
		case SOCKID_ST:
			DBG("%d:%s:%d",
			((struct socket_id*)t->val[0].u.data)->proto,
			ZSW(((struct socket_id*)t->val[0].u.data)->addr_lst->name),
			((struct socket_id*)t->val[0].u.data)->port
			);
			break;
		default:
			DBG(", type<%d>", t->val[2].type);
	}
	if (t->type==IF_T) DBG("}; ");
		else	DBG("); ");
}
コード例 #12
0
ファイル: route_struct.c プロジェクト: 4N7HR4X/kamailio
void print_expr(struct expr* exp)
{
	if (exp==0){
		LM_CRIT("null expression!\n");
		return;
	}
	if (exp->type==ELEM_T){
		switch(exp->l_type){
			case METHOD_O:
				DBG("method");
				break;
			case URI_O:
				DBG("uri");
				break;
			case FROM_URI_O:
				DBG("from_uri");
				break;
			case TO_URI_O:
				DBG("to_uri");
				break;
			case SRCIP_O:
				DBG("srcip");
				break;
			case SRCPORT_O:
				DBG("srcport");
				break;
			case DSTIP_O:
				DBG("dstip");
				break;
			case DSTPORT_O:
				DBG("dstport");
				break;
			case PROTO_O:
				DBG("proto");
				break;
			case AF_O:
				DBG("af");
				break;
			case MSGLEN_O:
				DBG("msglen");
				break;
			case ACTION_O:
				break;
			case NUMBER_O:
				break;
			case AVP_O:
				DBG("avp");
				break;
			case SNDIP_O:
				DBG("sndip");
				break;
			case SNDPORT_O:
				DBG("sndport");
				break;
			case TOIP_O:
				DBG("toip");
				break;
			case TOPORT_O:
				DBG("toport");
				break;
			case SNDPROTO_O:
				DBG("sndproto");
				break;
			case SNDAF_O:
				DBG("sndaf");
				break;
			case RETCODE_O:
				DBG("retcode");
				break;
			case SELECT_O:
				DBG("select");
				break;
			case RVEXP_O:
				DBG("rval");
				break;

			default:
				DBG("UNKNOWN");
		}
		switch(exp->op){
			case EQUAL_OP:
				DBG("==");
				break;
			case MATCH_OP:
				DBG("=~");
				break;
			case NO_OP:
				break;
			case GT_OP:
				DBG(">");
				break;
			case GTE_OP:
				DBG(">=");
				break;
			case LT_OP:
				DBG("<");
				break;
			case LTE_OP:
				DBG("<=");
				break;
			case DIFF_OP:
				DBG("!=");
				break;
			default:
				DBG("<UNKNOWN>");
		}
		switch(exp->r_type){
			case NOSUBTYPE:
					DBG("N/A");
					break;
			case STRING_ST:
					DBG("\"%s\"", ZSW((char*)exp->r.param));
					break;
			case NET_ST:
					print_net((struct net*)exp->r.param);
					break;
			case IP_ST:
					print_ip("", (struct ip_addr*)exp->r.param, "");
					break;
			case ACTIONS_ST:
					print_actions((struct action*)exp->r.param);
					break;
			case NUMBER_ST:
					DBG("%ld",exp->r.numval);
					break;
			case MYSELF_ST:
					DBG("_myself_");
					break;
		        case AVP_ST:
				        DBG("attr");
			 	        break;
		        case SELECT_ST:
				        DBG("select");
				        break;
			default:
					DBG("type<%d>", exp->r_type);
		}
	}else if (exp->type==EXP_T){
		switch(exp->op){
			case LOGAND_OP:
					DBG("AND( ");
					print_expr(exp->l.expr);
					DBG(", ");
					print_expr(exp->r.expr);
					DBG(" )");
					break;
			case LOGOR_OP:
					DBG("OR( ");
					print_expr(exp->l.expr);
					DBG(", ");
					print_expr(exp->r.expr);
					DBG(" )");
					break;
			case NOT_OP:
					DBG("NOT( ");
					print_expr(exp->l.expr);
					DBG(" )");
					break;
			default:
					DBG("UNKNOWN_EXP ");
		}

	}else{
		DBG("ERROR:print_expr: unknown type\n");
	}
}
コード例 #13
0
ファイル: route_struct.c プロジェクト: Drooids/openser-xmlrpc
void print_action(struct action* t)
{
	switch(t->type){
		case FORWARD_T:
				LM_DBG("forward(");
				break;
		case SEND_T:
				LM_DBG("send(");
				break;
		case DROP_T:
				LM_DBG("drop(");
				break;
		case LOG_T:
				LM_DBG("log(");
				break;
		case ERROR_T:
				LM_DBG("error(");
				break;
		case ROUTE_T:
				LM_DBG("route(");
				break;
		case EXEC_T:
				LM_DBG("exec(");
				break;
		case REVERT_URI_T:
				LM_DBG("revert_uri(");
				break;
		case STRIP_T:
				LM_DBG("strip(");
				break;
		case APPEND_BRANCH_T:
				LM_DBG("append_branch(");
				break;
		case PREFIX_T:
				LM_DBG("prefix(");
				break;
		case LEN_GT_T:
				LM_DBG("len_gt(");
				break;
		case SET_DEBUG_T:
				LM_DBG("setdebug(");
				break;
		case SETFLAG_T:
				LM_DBG("setflag(");
				break;
		case RESETFLAG_T:
				LM_DBG("resetflag(");
				break;
		case ISFLAGSET_T:
				LM_DBG("isflagset(");
				break;
		case SETBFLAG_T:
				LM_DBG("setbflag(");
				break;
		case RESETBFLAG_T:
				LM_DBG("resetbflag(");
				break;
		case ISBFLAGSET_T:
				LM_DBG("isbflagset(");
				break;
		case SETSFLAG_T:
				LM_DBG("setsflag(");
				break;
		case RESETSFLAG_T:
				LM_DBG("resetsflag(");
				break;
		case ISSFLAGSET_T:
				LM_DBG("issflagset(");
				break;
		case SET_HOST_T:
				LM_DBG("sethost(");
				break;
		case SET_HOSTPORT_T:
				LM_DBG("sethostport(");
				break;
		case SET_USER_T:
				LM_DBG("setuser(");
				break;
		case SET_USERPASS_T:
				LM_DBG("setuserpass(");
				break;
		case SET_PORT_T:
				LM_DBG("setport(");
				break;
		case SET_URI_T:
				LM_DBG("seturi(");
				break;
		case IF_T:
				LM_DBG("if (");
				break;
		case WHILE_T:
				LM_DBG("while (");
				break;
		case MODULE_T:
				LM_DBG(" external_module_call(");
				break;
		case FORCE_RPORT_T:
				LM_DBG("force_rport(");
				break;
		case SET_ADV_ADDR_T:
				LM_DBG("set_advertised_address(");
				break;
		case SET_ADV_PORT_T:
				LM_DBG("set_advertised_port(");
				break;
		case FORCE_TCP_ALIAS_T:
				LM_DBG("force_tcp_alias(");
				break;
		case FORCE_SEND_SOCKET_T:
				LM_DBG("force_send_socket");
				break;
		case RETURN_T:
				LM_DBG("return(");
				break;
		case EXIT_T:
				LM_DBG("exit(");
				break;
		case SWITCH_T:
				LM_DBG("switch(");
				break;
		case CASE_T:
				LM_DBG("case(");
				break;
		case DEFAULT_T:
				LM_DBG("default(");
				break;
		case SBREAK_T:
				LM_DBG("sbreak(");
				break;
		case EQ_T:
				LM_DBG("assign(");
				break;
		default:
				LM_DBG("UNKNOWN(");
	}
	switch(t->elem[0].type){
		case STRING_ST:
				LM_DBG("\"%s\"", ZSW(t->elem[0].u.string));
				break;
		case NUMBER_ST:
				LM_DBG("%lu",t->elem[0].u.number);
				break;
		case SCRIPTVAR_ST:
				LM_DBG("scriptvar[%d]",t->elem[0].u.item->type);
				break;
		case IP_ST:
				print_ip("", (struct ip_addr*)t->elem[0].u.data, "");
				break;
		case EXPR_ST:
				print_expr((struct expr*)t->elem[0].u.data);
				break;
		case ACTIONS_ST:
				print_actions((struct action*)t->elem[0].u.data);
				break;
		case CMD_ST:
				LM_DBG("f<%s>",((cmd_export_t*)t->elem[0].u.data)->name);
				break;
		case SOCKID_ST:
				LM_DBG("%d:%s:%d",
						((struct socket_id*)t->elem[0].u.data)->proto,
						ZSW(((struct socket_id*)t->elem[0].u.data)->name),
						((struct socket_id*)t->elem[0].u.data)->port
						);
				break;
		default:
				LM_DBG("type<%d>", t->elem[0].type);
	}
	if (t->type==IF_T) LM_DBG(") {");
	switch(t->elem[1].type){
		case NOSUBTYPE:
				break;
		case STRING_ST:
				LM_DBG(", \"%s\"", ZSW(t->elem[1].u.string));
				break;
		case NUMBER_ST:
				LM_DBG(", %lu",t->elem[1].u.number);
				break;
		case EXPR_ST:
				print_expr((struct expr*)t->elem[1].u.data);
				break;
		case ACTIONS_ST:
				print_actions((struct action*)t->elem[1].u.data);
				break;
		case SOCKID_ST:
				LM_DBG("%d:%s:%d",
						((struct socket_id*)t->elem[1].u.data)->proto,
						ZSW(((struct socket_id*)t->elem[1].u.data)->name),
						((struct socket_id*)t->elem[1].u.data)->port
						);
				break;
		default:
				LM_DBG(", type<%d>", t->elem[1].type);
	}
	if (t->type==IF_T && t->elem[2].type!=NOSUBTYPE) LM_DBG(" } else { ");
	switch(t->elem[2].type){
		case NOSUBTYPE:
				break;
		case STRING_ST:
				LM_DBG(", \"%s\"", ZSW(t->elem[2].u.string));
				break;
		case NUMBER_ST:
				LM_DBG(", %lu",t->elem[2].u.number);
				break;
		case EXPR_ST:
				print_expr((struct expr*)t->elem[2].u.data);
				break;
		case ACTIONS_ST:
				print_actions((struct action*)t->elem[2].u.data);
				break;
		case SOCKID_ST:
				LM_DBG("%d:%s:%d",
					((struct socket_id*)t->elem[2].u.data)->proto,
					ZSW(((struct socket_id*)t->elem[2].u.data)->name),
					((struct socket_id*)t->elem[2].u.data)->port
					);
			break;
		default:
			LM_DBG(", type<%d>", t->elem[2].type);
	}
	if (t->type==IF_T) LM_DBG("}; ");
	else	LM_DBG("); ");

}
コード例 #14
0
ファイル: route_struct.c プロジェクト: Drooids/openser-xmlrpc
void print_expr(struct expr* exp)
{
	if (exp==0){
		LM_CRIT("null expression!\n");
		return;
	}
	if (exp->type==ELEM_T){
		switch(exp->left.type){
			case METHOD_O:
				LM_DBG("method");
				break;
			case URI_O:
				LM_DBG("uri");
				break;
			case FROM_URI_O:
				LM_DBG("from_uri");
				break;
			case TO_URI_O:
				LM_DBG("to_uri");
				break;
			case SRCIP_O:
				LM_DBG("srcip");
				break;
			case SRCPORT_O:
				LM_DBG("srcport");
				break;
			case DSTIP_O:
				LM_DBG("dstip");
				break;
			case DSTPORT_O:
				LM_DBG("dstport");
				break;
			case SCRIPTVAR_O:
				LM_DBG("scriptvar[%d]",
					(exp->left.v.spec)?exp->left.v.spec->type:0);
				break;
			case NUMBER_O:
			case NUMBERV_O:
				LM_DBG("%d",exp->left.v.n);
				break;
			case STRINGV_O:
				LM_DBG("\"%s\"", ZSW((char*)exp->left.v.data));
				break;
			case ACTION_O:
				break;
			case EXPR_O:
				print_expr((struct expr*)exp->left.v.data);
				break;
			default:
				LM_DBG("UNKNOWN[%d]", exp->left.type);
		}
		switch(exp->op){
			case EQUAL_OP:
				LM_DBG("==");
				break;
			case MATCHD_OP:
			case MATCH_OP:
				LM_DBG("=~");
				break;
			case NOTMATCHD_OP:
			case NOTMATCH_OP:
				LM_DBG("!~");
				break;
			case GT_OP:
				LM_DBG(">");
				break;
			case GTE_OP:
				LM_DBG(">=");
				break;
			case LT_OP:
				LM_DBG("<");
				break;
			case LTE_OP:
				LM_DBG("<=");
				break;
			case DIFF_OP:
				LM_DBG("!=");
				break;
			case PLUS_OP:
				LM_DBG("+");
				break;
			case MINUS_OP:
				LM_DBG("-");
				break;
			case DIV_OP:
				LM_DBG("/");
				break;
			case MULT_OP:
				LM_DBG("*");
				break;
			case MODULO_OP:
				LM_DBG(" mod ");
				break;
			case BAND_OP:
				LM_DBG("&");
				break;
			case BOR_OP:
				LM_DBG("|");
				break;
			case BXOR_OP:
				LM_DBG("^");
				break;
			case BNOT_OP:
				LM_DBG("~");
				break;
			case VALUE_OP:
			case NO_OP:
				break;
			default:
				LM_DBG("<UNKNOWN[%d]>", exp->op);
		}
		switch(exp->right.type){
			case NOSUBTYPE: 
					/* LM_DBG("N/A"); */
					break;
			case STRING_ST:
					LM_DBG("\"%s\"", ZSW((char*)exp->right.v.data));
					break;
			case NET_ST:
					print_net((struct net*)exp->right.v.data);
					break;
			case IP_ST:
					print_ip("", (struct ip_addr*)exp->right.v.data, "");
					break;
			case ACTIONS_ST:
					print_actions((struct action*)exp->right.v.data);
					break;
			case NUMBER_ST:
					LM_DBG("%d",exp->right.v.n);
					break;
			case MYSELF_ST:
					LM_DBG("_myself_");
					break;
			case SCRIPTVAR_ST:
					LM_DBG("scriptvar[%d]", exp->right.v.spec->type);
					break;
			case NULLV_ST:
					LM_DBG("null");
					break;
			case EXPR_ST:
					print_expr((struct expr*)exp->right.v.data);
					break;
			default:
					LM_DBG("type<%d>", exp->right.type);
		}
	}else if (exp->type==EXP_T){
		switch(exp->op){
			case AND_OP:
					LM_DBG("AND( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case OR_OP:
					LM_DBG("OR( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case NOT_OP:	
					LM_DBG("NOT( ");
					print_expr(exp->left.v.expr);
					LM_DBG(" )");
					break;
			case EVAL_OP:
					LM_DBG("EVAL( ");
					print_expr(exp->left.v.expr);
					LM_DBG(" )");
					break;
			case PLUS_OP:
					LM_DBG("PLUS( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case MINUS_OP:
					LM_DBG("MINUS( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case DIV_OP:
					LM_DBG("DIV( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case MULT_OP:
					LM_DBG("MULT( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case MODULO_OP:
					LM_DBG("MODULO( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case BAND_OP:
					LM_DBG("BAND( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case BOR_OP:
					LM_DBG("BOR( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case BXOR_OP:
					LM_DBG("BXOR( ");
					print_expr(exp->left.v.expr);
					LM_DBG(", ");
					print_expr(exp->right.v.expr);
					LM_DBG(" )");
					break;
			case BNOT_OP:
					LM_DBG("BNOT( ");
					print_expr(exp->left.v.expr);
					LM_DBG(" )");
					break;
			default:
					LM_DBG("UNKNOWN_EXP[%d] ", exp->op);
		}
					
	}else{
		LM_ERR("unknown type\n");
	}
}
コード例 #15
0
ファイル: batch.c プロジェクト: bert/pcb-rnd
static int
help (int argc, char **argv, Coord x, Coord y)
{
  print_actions ();
  return 0;
}
コード例 #16
0
ファイル: main.c プロジェクト: bert/pcb-rnd
int
main (int argc, char *argv[])
{
  int i;

  /* init application:
   * - make program name available for error handlers
   * - evaluate special options
   * - initialize toplevel shell and resources
   * - create an empty PCB with default symbols
   * - initialize all other widgets
   * - update screen and get size of drawing area
   * - evaluate command-line arguments
   * - register 'call on exit()' function
   */

  setbuf (stdout, 0);
  InitPaths (argv[0]);

#ifdef LOCALEDIR
  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
  textdomain(GETTEXT_PACKAGE);
  bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
  setlocale(LC_ALL,"");
#endif

  srand ( time(NULL) ); /* Set seed for rand() */

  initialize_units();
  polygon_init ();
  hid_init ();

  hid_load_settings ();

  program_name = argv[0];
  program_basename = strrchr (program_name, PCB_DIR_SEPARATOR_C);
  if (program_basename)
    {
      program_directory = strdup (program_name);
      *strrchr (program_directory, PCB_DIR_SEPARATOR_C) = 0;
      program_basename++;
    }
  else
    {
      program_directory = ".";
      program_basename = program_name;
    }
  Progname = program_basename;

  /* Print usage or version if requested.  Then exit.  */  
  if (argc > 1 &&
      (strcmp (argv[1], "-h") == 0 ||
       strcmp (argv[1], "-?") == 0 ||
       strcmp (argv[1], "--help") == 0))
    usage ();
  if (argc > 1 && strcmp (argv[1], "-V") == 0)
    print_version ();
  /* Export pcb from command line if requested.  */
  if (argc > 1 && strcmp (argv[1], "-p") == 0)
    {
      exporter = gui = hid_find_printer ();
      argc--;
      argv++;
    }
  else if (argc > 2 && strcmp (argv[1], "-x") == 0)
    {
      exporter = gui = hid_find_exporter (argv[2]);
      argc -= 2;
      argv += 2;
    }
    /* Otherwise start GUI. */
  else if (argc > 2 && strcmp (argv[1], "--gui") == 0)
  {
    gui = hid_find_gui (argv[2]);
    if (gui == NULL) {
      Message("Can't find the gui requested.\n");
      exit(1);
    }
    argc -= 2;
    argv += 2;
  }
  else {
    const char **g;

    gui = NULL;
    for(g = try_gui_hids; (*g != NULL) && (gui == NULL); g++) {
      gui = hid_find_gui (*g);
    }

    /* try anything */
    if (gui == NULL) {
      Message("Warning: can't find any of the preferred GUIs, falling back to anything available...\n");
      gui = hid_find_gui (NULL);
    }
  }

  /* Exit with error if GUI failed to start. */
  if (!gui)
    exit (1);

/* Initialize actions only when the gui is already known so only the right
   one is registered (there can be only one GUI). */
#include "action_list.h"


  /* Set up layers. */
  for (i = 0; i < MAX_LAYER; i++)
    {
      char buf[20];
      sprintf (buf, "signal%d", i + 1);
      Settings.DefaultLayerName[i] = strdup (buf);
      Settings.LayerColor[i] = "#c49350";
      Settings.LayerSelectedColor[i] = "#00ffff";
    }

  gui->parse_arguments (&argc, &argv);

  if (show_help || (argc > 1 && argv[1][0] == '-'))
    usage ();
  if (show_version)
    print_version ();
  if (show_defaults)
    print_defaults ();
  if (show_copyright)
    copyright ();

  settings_post_process ();


  if (show_actions)
    {
      print_actions ();
      exit (0);
    }

  if (do_dump_actions)
    {
      extern void dump_actions (void);
      dump_actions ();
      exit (0);
    }

  set_fontfile();

  /* Create a new PCB object in memory */
  PCB = CreateNewPCB ();

	if (PCB == NULL) {
		Message("Can't load the default pcb (%s) for creating an empty layout\n", Settings.DefaultPcbFile);
		exit(1);
	}

  /* Add silk layers to newly created PCB */
  CreateNewPCBPost (PCB, 1);
  if (argc > 1)
    command_line_pcb = argv[1];

  ResetStackAndVisibility ();

  if (gui->gui)
    InitCrosshair ();
  InitHandler ();
  InitBuffers ();
  SetMode (ARROW_MODE);

  if (command_line_pcb)
    {
      /* keep filename even if initial load command failed;
       * file might not exist
       */
      if (LoadPCB (command_line_pcb))
	PCB->Filename = strdup (command_line_pcb);
    }

  if (Settings.InitialLayerStack
      && Settings.InitialLayerStack[0])
    {
      LayerStringToLayerStack (Settings.InitialLayerStack);
    }

  /* This must be called before any other atexit functions
   * are registered, as it configures an atexit function to
   * clean up and free various items of allocated memory,
   * and must be the last last atexit function to run.
   */
  leaky_init ();

  /* Register a function to be called when the program terminates.
   * This makes sure that data is saved even if LEX/YACC routines
   * abort the program.
   * If the OS doesn't have at least one of them,
   * the critical sections will be handled by parse_l.l
   */
  atexit (EmergencySave);

  /* read the library file and display it if it's not empty
   */
  if (!ReadLibraryContents () && Library.MenuN)
    hid_action ("LibraryChanged");

#ifdef HAVE_LIBSTROKE
  stroke_init ();
#endif

  if (Settings.ScriptFilename)
    {
      Message (_("Executing startup script file %s\n"),
	       Settings.ScriptFilename);
      hid_actionl ("ExecuteFile", Settings.ScriptFilename, NULL);
    }
  if (Settings.ActionString)
    {
      Message (_("Executing startup action %s\n"), Settings.ActionString);
      hid_parse_actions (Settings.ActionString);
    }

  if (gui->printer || gui->exporter)
    {
      // Workaround to fix batch output for non-C locales
      setlocale(LC_NUMERIC,"C");
      gui->do_export (0);
      exit (0);
    }

#if HAVE_DBUS
  pcb_dbus_setup();
#endif

  EnableAutosave ();

#ifdef DEBUG
  printf ("Settings.FontPath            = \"%s\"\n", 
          Settings.FontPath);
  printf ("Settings.ElementPath         = \"%s\"\n", 
          Settings.ElementPath);
  printf ("Settings.LibrarySearchPaths  = \"%s\"\n", 
          Settings.LibrarySearchPaths);
  printf ("Settings.LibraryShell        = \"%s\"\n", 
          Settings.LibraryShell);
  printf ("Settings.MakeProgram = \"%s\"\n",
          UNKNOWN (Settings.MakeProgram));
  printf ("Settings.GnetlistProgram = \"%s\"\n",
          UNKNOWN (Settings.GnetlistProgram));
#endif

	buildin_init();

  gui->do_export (0);
#if HAVE_DBUS
  pcb_dbus_finish();
#endif

  return (0);
}