Exemplo n.º 1
0
void findMoves(std::vector<diff_edit>& diff, const unsigned int *hash1, const unsigned int *hash2)
{
	const std::size_t diffSize = diff.size();

	// initialize moves arrays
	for (unsigned int i = 0; i < diffSize; ++i)
	{
		diff_edit& e = diff[i];

		if (e.op != DIFF_MATCH)
			e.moves.resize(e.len, -1);
	}

	for (unsigned int i = 0; i < diffSize; ++i)
	{
		diff_edit& e = diff[i];

		if (e.op != DIFF_DELETE)
			continue;

		for (unsigned int j = 0; j < e.len; ++j)
		{
			if (e.moves[j] != -1)
				continue;

			int line2;
			diff_edit* match = find_anchor(e.off + j, diff, hash1, hash2, &line2);

			if (!match)
				continue;

			e.moves[j] = match->off + line2;
			match->moves[line2] = e.off + j;

			int d1 = j - 1;
			int d2 = line2 - 1;

			while (d1 >= 0 && d2 >= 0 && e.moves[d1] == -1 && match->moves[d2] == -1 &&
					hash1[e.off + d1] == hash2[match->off + d2])
			{
				e.moves[d1] = match->off + d2;
				match->moves[d2] = e.off + d1;
				--d1;
				--d2;
			}

			d1 = j + 1;
			d2 = line2 + 1;

			while (d1 < (int)e.len && d2 < (int)match->len && e.moves[d1] == -1 && match->moves[d2] == -1 &&
					hash1[e.off + d1] == hash2[match->off + d2])
			{
				e.moves[d1] = match->off + d2;
				match->moves[d2] = e.off + d1;
				++d1;
				++d2;
			}
		}
	}
}
Exemplo n.º 2
0
static int
anchor_store (int argc,
              char *argv[],
              bool *changed)
{
	CK_ATTRIBUTE *attrs;
	CK_FUNCTION_LIST *module = NULL;
	CK_SESSION_HANDLE session;
	CK_OBJECT_HANDLE object;
	p11_array *anchors;
	int ret;
	int i;

	anchors = files_to_attrs (argc, argv);
	if (anchors == NULL)
		return 1;

	if (anchors->num == 0) {
		p11_message ("specify at least one anchor input file");
		p11_array_free (anchors);
		return 2;
	}

	session = session_for_store (&module);
	if (session == 0UL) {
		p11_array_free (anchors);
		return 1;
	}

	for (i = 0, ret = 0; i < anchors->num; i++) {
		attrs = anchors->elem[i];
		anchors->elem[i] = NULL;

		object = find_anchor (module, session, attrs);
		if (object == 0) {
			p11_debug ("don't yet have this anchor");
			if (create_anchor (module, session, attrs)) {
				*changed = true;
			} else {
				ret = 1;
				break;
			}
		} else {
			p11_debug ("already have this anchor");
			if (modify_anchor (module, session, object, attrs)) {
				*changed = true;
			} else {
				ret = 1;
				break;
			}
		}
	}

	p11_array_free (anchors);
	p11_kit_module_finalize (module);
	p11_kit_module_release (module);

	return ret;
}
Exemplo n.º 3
0
static void
attach_widgets (GtkTextView *text_view)
{
  GtkTextIter iter;
  GtkTextBuffer *buffer;
  int i;
  
  buffer = gtk_text_view_get_buffer (text_view);

  gtk_text_buffer_get_start_iter (buffer, &iter);

  i = 0;
  while (find_anchor (&iter))
    {
      GtkTextChildAnchor *anchor;
      GtkWidget *widget;
      
      anchor = gtk_text_iter_get_child_anchor (&iter);

      if (i == 0)
        {
          widget = gtk_button_new_with_label ("Click Me");

          g_signal_connect (widget, "clicked",
                            G_CALLBACK (easter_egg_callback),
                            NULL);
        }
      else if (i == 1)
        {
          widget = gtk_combo_box_new_text ();

          gtk_combo_box_append_text (GTK_COMBO_BOX (widget), "Option 1");
          gtk_combo_box_append_text (GTK_COMBO_BOX (widget), "Option 2");
          gtk_combo_box_append_text (GTK_COMBO_BOX (widget), "Option 3");
        }
      else if (i == 2)
        {
          widget = gtk_hscale_new (NULL);
          gtk_range_set_range (GTK_RANGE (widget), 0, 100);
          gtk_widget_set_size_request (widget, 70, -1);
        }
      else if (i == 3)
        {
	  gchar *filename = demo_find_file ("floppybuddy.gif", NULL);
	  widget = gtk_image_new_from_file (filename);
	  g_free (filename);
        }
      else if (i == 4)
        {
          widget = gtk_entry_new ();
        }
      else
        {
          widget = NULL; /* avoids a compiler warning */
          g_assert_not_reached ();
        }

      gtk_text_view_add_child_at_anchor (text_view,
                                         widget,
                                         anchor);

      gtk_widget_show_all (widget);

      ++i;
    }
}