コード例 #1
0
ファイル: reverse_sort.c プロジェクト: panzhao/some_exercises
/**********************************************************************
函数    :    creat_boy_link()
功能    :    创建学生的链表
传入参数:    无
传出参数:    无
返回值  :    无
**********************************************************************/
void creat_link()
{
    struct student *stu1 = init_student("liming", 18, MALE);
    insert_link(stu1);
    
    struct student *stu2 = init_student("wangning", 19, MALE);
    insert_link(stu2);
    
    struct student *stu3 = init_student("zhaoming", 17, MALE);
    insert_link(stu3);
    
    struct student *stu4 = init_student("zhangming", 24, MALE);
    insert_link(stu4);
    
    struct student *stu5 = init_student("luoliming", 16, MALE);
    insert_link(stu5);
    
    struct student *stu6 = init_student("lili", 20, FEMALE);
    insert_link(stu6);
    
    struct student *stu7 = init_student("wangli", 21, FEMALE);
    insert_link(stu7);
    
    struct student *stu8 = init_student("dingli", 22, FEMALE);
    insert_link(stu8);
    
    struct student *stu9 = init_student("zhaoli", 23, FEMALE);
    insert_link(stu9);
    
    struct student *stu10 = init_student("zhouli", 15, FEMALE);
    insert_link(stu10);
}
コード例 #2
0
ファイル: as_util.c プロジェクト: BackupTheBerlios/gift-ares
/* Same as list_insert_sorted but uses supplied link instead of creating a
 * new one.
 */
List *list_insert_link_sorted (List *head, CompareFunc func, List *new_link)
{
	List *link;

	assert (func);
	assert (new_link);

	if (!head)
		return insert_link (NULL, NULL, new_link);

	if (func (head->data, new_link->data) >= 0)
		return insert_link (NULL, head, new_link);

	for (link = head; link->next; link = link->next)
	{
		if (func (link->next->data, new_link->data) >= 0)
		{
			insert_link (link, link->next, new_link);
			return head;
		}
	}

	/* insert as last element */
	insert_link (link, NULL, new_link);

	return head;
}
コード例 #3
0
ファイル: fx_about.c プロジェクト: amoblin/flyshion
static void create_intro(GtkTextView *view)
{
	GtkTextTag    *tag;
	GtkTextTag    *tag1;
	GtkTextIter    iter;
	const char title[] = N_("Openfetion "OPENFETION_VERSION"\n\n");
	const char intro[] = N_("OpenFetion is a Fetion client for linux based on GTK+2.0, "
				"implementing Fetion Protocol Version 4.\n"
				"It supports most features of Fetion. \n"
				"What's more, it's lightweight and efficient with intuitive interface.\n\n"
				"Project homepage: ");

	gtk_text_view_set_editable(view,FALSE);
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
	g_signal_connect (view, "motion-notify-event", 
			G_CALLBACK (motion_notify_event), NULL);
	g_signal_connect(view, "event-after", 
                     G_CALLBACK (event_after), NULL);

	GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

	tag = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "size", 15 * PANGO_SCALE, 
									"justification", GTK_JUSTIFY_CENTER,
									"weight", PANGO_WEIGHT_BOLD,
                                    NULL);

	tag1 = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "left-margin", 25, 
                                    "right-margin", 25, 
                                    NULL);


	gtk_text_buffer_get_start_iter(buffer, &iter);
  
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	title, -1, tag, NULL);
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_(intro), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://code.google.com/p/ofetion/");
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_("\nBug report: "), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://code.google.com/p/ofetion/issues/");
	
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_("\n\nPage on author's blog: "), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://basiccoder.com/openfetion");
}
コード例 #4
0
ファイル: DLList.cpp プロジェクト: chrismullins/cgma
//- put new item in list at index 0 and make it current
void DLList::insert_link_first(void* new_item)
{
  // set index to -1 ... index will be set to 0 in insert_link

  index = -1;
  insert_link(new_item);
}
コード例 #5
0
ファイル: about.c プロジェクト: jxitc/hybrid
static void create_gpl(GtkTextView *view)
{
    GtkTextTag    *tag;
    GtkTextIter    iter;
    char           *buf1 = N_("This program is free software; you can redistribute it and/or modify "
                              "it under the terms of the GNU General Public License as published by "
                              "the Free Software Foundation; either version 2 of the License, or "
                              "(at your option) any later version.\n\n");
    char           *buf2 = N_("This program is distributed in the hope that it will be useful, "
                              "but WITHOUT ANY WARRANTY; without even the implied warranty of "
                              "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the "
                              "GNU General Public License for more details.\n\n");
    char           *buf3 = N_("You should have received a copy of the GNU General Public License "
                              "along with this program; if not, see:");

    gtk_text_view_set_editable(view, FALSE);
    gtk_text_view_set_wrap_mode(view, GTK_WRAP_WORD);
    g_signal_connect (view, "motion-notify-event",
                      G_CALLBACK (motion_notify_event), NULL);

    GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

    tag = gtk_text_buffer_create_tag (buffer, NULL,
                                      "left-margin", 5,
                                      "right-margin", 5,
                                      NULL);

    gtk_text_buffer_get_start_iter(buffer, &iter);

    gtk_text_buffer_insert(buffer, &iter, "\n\n", 2);
    gtk_text_buffer_insert_with_tags(buffer, &iter, _(buf1), -1, tag, NULL);
    gtk_text_buffer_insert_with_tags(buffer, &iter, _(buf2), -1, tag, NULL);
    gtk_text_buffer_insert_with_tags(buffer, &iter, _(buf3), -1, tag, NULL);
    insert_link(buffer, &iter, "http://www.gnu.org/licenses/gpl-2.0.txt", NULL);
}
コード例 #6
0
ファイル: fx_about.c プロジェクト: amoblin/flyshion
static void create_author(GtkTextView *view)
{
	GtkTextTag    *tag;
	GtkTextTag    *tag1;
	GtkTextIter    iter;
	const char title[] = "Levin\n\n";
	const char *intro = _("Graduate student at Beijing University of Post & Telecommunication."
						"Love Linux,Love OpenSource.Started this project in order to help "
						"linux users including myself to get a better way to use fetion.\n\n"
						"Blog:");

	gtk_text_view_set_editable(view,FALSE);
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
	g_signal_connect (view, "motion-notify-event", 
			G_CALLBACK (motion_notify_event), NULL);
	g_signal_connect(view, "event-after", 
                     G_CALLBACK (event_after), NULL);

	GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

	tag = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "size", 15 * PANGO_SCALE, 
									"justification", GTK_JUSTIFY_CENTER,
									"weight", PANGO_WEIGHT_BOLD,
                                    NULL);

	tag1 = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "left-margin", 25, 
                                    "right-margin", 25, 
                                    NULL);


	gtk_text_buffer_get_start_iter(buffer, &iter);
  
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	title, -1, tag, NULL);
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	intro, -1, tag1, NULL);
	insert_link(buffer, &iter, "http://basiccoder.com");
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	"\nE-mail: [email protected]\n", -1, tag1, NULL);
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	"Twitter: ", -1, tag1, NULL);
	insert_link(buffer, &iter, "http://twitter.com/levin108");
}
コード例 #7
0
ファイル: about.c プロジェクト: jxitc/hybrid
static void create_contri(GtkTextView *view)
{
    GtkTextTag    *tag1;
    GtkTextTag    *tag2;
    GtkTextIter    iter;

    gtk_text_view_set_editable(view,FALSE);
    gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
    g_signal_connect (view, "motion-notify-event",
                      G_CALLBACK (motion_notify_event), NULL);
    g_signal_connect(view, "event-after",
                     G_CALLBACK (event_after), NULL);

    GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

    tag1 = gtk_text_buffer_create_tag (buffer, NULL,
                                       "left-margin", 25,
                                       "right-margin", 25,
                                       NULL);

    tag2 = gtk_text_buffer_create_tag (buffer, NULL,
                                       "left-margin", 25,
                                       "weight", PANGO_WEIGHT_BOLD,
                                       NULL);

    gtk_text_buffer_get_start_iter(buffer, &iter);

    gtk_text_buffer_insert(buffer, &iter, "\n\n", 2);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     "Levin Li <", -1, tag1, NULL);
    insert_link(buffer, &iter, "*****@*****.**", "mailto:[email protected]");
    gtk_text_buffer_insert(buffer, &iter, ("> ("), 3);
    insert_link(buffer, &iter, "@levin108", "http://twitter.com/levin108");
    gtk_text_buffer_insert(buffer, &iter, (")\n"), 2);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     "Yichao Yu <", -1, tag1, NULL);
    insert_link(buffer, &iter, "*****@*****.**", "mailto:[email protected]");
    gtk_text_buffer_insert(buffer, &iter, ("> ("), 3);
    insert_link(buffer, &iter, "@yuyichao", "http://twitter.com/yuyichao");
    gtk_text_buffer_insert(buffer, &iter, (")\n"), 2);

}
コード例 #8
0
/* Fills the buffer with text and interspersed links. In any real
 * hypertext app, this method would parse a file to identify the links.
 */
static void
show_page (GtkTextBuffer *buffer,
           gint           page)
{
  GtkTextIter iter;

  gtk_text_buffer_set_text (buffer, "", 0);
  gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
  if (page == 1)
    {
      gtk_text_buffer_insert (buffer, &iter, "Some text to show that simple ", -1);
      insert_link (buffer, &iter, "hypertext", 3);
      gtk_text_buffer_insert (buffer, &iter, " can easily be realized with ", -1);
      insert_link (buffer, &iter, "tags", 2);
      gtk_text_buffer_insert (buffer, &iter, ".", -1);
    }
  else if (page == 2)
    {
      gtk_text_buffer_insert (buffer, &iter,
                              "A tag is an attribute that can be applied to some range of text. "
                              "For example, a tag might be called \"bold\" and make the text inside "
                              "the tag bold. However, the tag concept is more general than that; "
                              "tags don't have to affect appearance. They can instead affect the "
                              "behavior of mouse and key presses, \"lock\" a range of text so the "
                              "user can't edit it, or countless other things.\n", -1);
      insert_link (buffer, &iter, "Go back", 1);
    }
  else if (page == 3)
    {
      GtkTextTag *tag;

      tag = gtk_text_buffer_create_tag (buffer, NULL,
                                        "weight", PANGO_WEIGHT_BOLD,
                                        NULL);
      gtk_text_buffer_insert_with_tags (buffer, &iter, "hypertext:\n", -1, tag, NULL);
      gtk_text_buffer_insert (buffer, &iter,
                              "machine-readable text that is not sequential but is organized "
                              "so that related items of information are connected.\n", -1);
      insert_link (buffer, &iter, "Go back", 1);
    }
}
コード例 #9
0
ファイル: prim.c プロジェクト: leiyahui/Algorithms
void prim(item vertex[],int numV,int s)
{
    int i;
    edge_link* link;
    link=(edge_link*)malloc(sizeof(edge_link));
    edge_adj* curr_node;
    edge* curr_edge;
    for(i=0;i<numV;i++)
    {
        vertex[i].color=WHITE;
        vertex[i].par=0;
    }
    vertex[s].color=BLACK;
    init_link(link);
    curr_edge=vertex[s].adj;
    while(curr_edge!=NULL)
    {
        if(vertex[curr_edge->dest].color==WHITE)
        {
            insert_link(link,curr_edge->dest,s,curr_edge->weight);
        }
        curr_edge=curr_edge->next;
    }
    while(!is_empty(link))
    {
        curr_node=del_min_link(link);
        vertex[curr_node->dest].color=BLACK;
        printf("%c %c %d\n",vertex[curr_node->par].data,vertex[curr_node->dest].data,curr_node->weight);
        curr_edge=vertex[curr_node->dest].adj;
        while(curr_edge!=NULL)
        {
           if(vertex[curr_edge->dest].color==WHITE)
           {
                insert_link(link,curr_edge->dest,curr_node->dest,curr_edge->weight);
           }
           curr_edge=curr_edge->next;
        }
        free(curr_node);
    }
}
コード例 #10
0
ファイル: about.c プロジェクト: jxitc/hybrid
static void create_intro(GtkTextView *view)
{
    GtkTextTag  *tag1;
    GtkTextIter  iter;
    const char intro[] = N_("Hybrid is a lightweight extensible IM framework,"
                            "currently supports China Mobile Fetion protocol,"
                            "XMPP protocol, and IMAP mail notifier.\n\n\n");

    gtk_text_view_set_editable(view,FALSE);
    gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
    g_signal_connect (view, "motion-notify-event",
                      G_CALLBACK (motion_notify_event), NULL);
    g_signal_connect(view, "event-after",
                     G_CALLBACK (event_after), NULL);

    GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

    tag1 = gtk_text_buffer_create_tag (buffer, NULL,
                                       "left-margin", 25,
                                       "right-margin", 25,
                                       NULL);


    gtk_text_buffer_get_start_iter(buffer, &iter);

    gtk_text_buffer_insert(buffer, &iter, "\n\n", 2);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     _(intro), -1, tag1, NULL);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     _("\nWebsite: "), -1, tag1, NULL);
    insert_link(buffer, &iter,
                "https://github.com/levin108/hybrid", NULL);

    gtk_text_buffer_insert_with_tags(buffer, &iter,
                                     _("\nBug report: "), -1, tag1, NULL);
    insert_link(buffer, &iter, "https://github.com/levin108/hybrid/issues", NULL);
}
コード例 #11
0
ファイル: link_find_node.c プロジェクト: maomaotp/base_code
int main()
{
	linknode *head;
	head = create_link();

	int i;
	for(i=0; i<30; i++){
		insert_link(head, i);
	}
	print_link(head);
	linknode *tmp = NULL;
	tmp = find_node(head, 8);
	printf("the top:%d\n", tmp->num);

	return 0;
}
コード例 #12
0
ファイル: server.c プロジェクト: siwifttiger/UNIXNET
/******************************************************************************
函    数:    my_register
功    能:    完成用户的注册工作
传入参数:    confd : 服务器和客户端的通信接口
传出参数:    无
返    回:    -1:程序错误返回
              0:程序正确执行
******************************************************************************/
int my_register(int confd, struct user *temp_user)
{
	debug_msg("d: my_reg- %s",temp_user->name);
	char buf[MAXSIZE];
	memset(buf,0,MAXSIZE);
	int n_write;
	
	/*判断用户名是否已经存在*/
	if(check_user(temp_user->name) == 1)
	{
		strcpy(buf,"Sorry!Register failed, user has existed\n");
		n_write = Write(confd,buf,strlen(buf));
		if(n_write <= 0)
		{
			fputs("Write error in my_register\n",stderr);
			close(confd);
			return -1;
		}
	}	
	else
	{
		pthread_mutex_lock(&reg_lock);  //链表和文件操作地方上锁
		
		write_in(temp_user);
		struct user_link *temp = user_node(temp_user,-1);
		insert_link(temp);
		
		pthread_mutex_unlock(&reg_lock);
		
		strcpy(buf,"Register success!\n");
		n_write = Write(confd,buf,strlen(buf));
		if(n_write <= 0)
		{
			fputs("Write error in my_register\n",stderr);
			close(confd);
			return -1;
		}

	}
	return 0;
}
コード例 #13
0
ファイル: work_task.c プロジェクト: A9-William/pbspro
/**
 *
 * @brief
 * 	Creates a task of type 'type', 'event_id', and when task is dispatched,
 *	execute func with argument 'parm'. The task is added to
 *	'task_list_immed' if 'type' is  WORK_Immed; otherwise, task is added
 *	'task_list_event'.
 *
 * @param[in]	type - of task
 * @param[in]	event_id - event id of the task
 * @param[in]	func - function that will be executed in behalf of the task
 * @param[in]	parm - parameter to 'func'
 *
 * @return struct work_task *
 * @retval <a work task entry>	- for success
 * @retval NULL			- for any error
 *
 */
struct work_task *set_task(enum work_type type, long event_id, void (*func)(struct work_task *) , void *parm)
{
	struct work_task *pnew;
	struct work_task *pold;

	pnew = (struct work_task *)malloc(sizeof(struct work_task));
	if (pnew == (struct work_task *)0)
		return ((struct work_task *)0);
	CLEAR_LINK(pnew->wt_linkall);
	CLEAR_LINK(pnew->wt_linkobj);
	CLEAR_LINK(pnew->wt_linkobj2);
	pnew->wt_event = event_id;
	pnew->wt_event2 = NULL;
	pnew->wt_type  = type;
	pnew->wt_func  = func;
	pnew->wt_parm1 = parm;
	pnew->wt_parm2 = NULL;
	pnew->wt_parm3 = NULL;
	pnew->wt_aux   = 0;
	pnew->wt_aux2  = 0;

	if (type == WORK_Immed)
		append_link(&task_list_immed, &pnew->wt_linkall, pnew);
	else if (type == WORK_Timed) {
		pold = (struct work_task *)GET_NEXT(task_list_timed);
		while (pold) {
			if (pold->wt_event > pnew->wt_event)
				break;
			pold = (struct work_task *)GET_NEXT(pold->wt_linkall);
		}
		if (pold)
			insert_link(&pold->wt_linkall, &pnew->wt_linkall, pnew,
				LINK_INSET_BEFORE);
		else
			append_link(&task_list_timed, &pnew->wt_linkall, pnew);
	} else
		append_link(&task_list_event, &pnew->wt_linkall, pnew);
	return (pnew);
}
コード例 #14
0
ファイル: html_editor.cpp プロジェクト: AleksKots/Manitou
#define QN QT_TR_NOOP
#define NA QWebPage::NoWebAction

  // {name, shortcut, icon, WebAction
  {QN("Bold"), QN("Ctrl+B"), "icon-bold.png", SLOT(bold()), NA }
  ,{QN("Italic"), QN("Ctrl+I"), "icon-italic.png", SLOT(italic()), NA }
  ,{QN("Underline"), QN("Ctrl+U"), "icon-underline.png", SLOT(underline()), NA }
  ,{QN("Strike through"), QN("Ctrl+S"), "icon-strikethrough.png", SLOT(strikethrough()) , NA}
  ,{QN("Superscript"), NULL, "icon-superscript.png", SLOT(superscript()), NA }
  ,{QN("Subscript"), NULL, "icon-subscript.png", SLOT(subscript()), NA }

  // separator before 6
  ,{QN("Set foreground color"), NULL, "icon-foreground-color.png", SLOT(foreground_color()), NA }
  ,{QN("Set background color"), NULL, "icon-background-color.png", SLOT(background_color()), NA }
  ,{QN("Insert image"), NULL, "icon-image.png", SLOT(insert_image()), NA }
  ,{QN("Insert link"), NULL, "icon-link.png", SLOT(insert_link()), NA }
  ,{QN("Insert horizontal rule"), NULL, "icon-hr.png", SLOT(insert_hr()), NA }
  ,{QN("Insert unordered list"), NULL, "icon-bullet-list.png", SLOT(insert_unordered_list()), NA }
  ,{QN("Insert ordered list"), NULL, "icon-ordered-list.png", SLOT(insert_ordered_list()), NA }
  ,{QN("Remove format"), NULL, "icon-eraser.png", SLOT(remove_format()), NA }
  ,{QN("Cut"), NULL, "icon-cut.png", NULL, QWebPage::Cut }
  ,{QN("Copy"), NULL, "icon-copy.png", NULL, QWebPage::Copy }
  ,{QN("Paste"), NULL, "icon-paste.png", NULL, QWebPage::Paste }
  ,{QN("Undo"), QN("Ctrl+Z"), "icon-undo.png", NULL, QWebPage::Undo }
  ,{QN("Redo"), NULL, "icon-redo.png", NULL, QWebPage::Redo }
  ,{QN("Align left"), NULL, "icon-align-left.png", SLOT(align_left()), NA }
  ,{QN("Justify"), NULL, "icon-justify.png", SLOT(justify()), NA }
  ,{QN("Align right"), NULL, "icon-align-right.png", SLOT(align_right()), NA }
  ,{QN("Center"), NULL, "icon-center.png", SLOT(center()), NA }
  ,{QN("Indent right"), NULL, "icon-indent-right.png", SLOT(indent_right()), NA }
  ,{QN("Indent left"), NULL, "icon-indent-left.png", SLOT(indent_left()), NA }
コード例 #15
0
ファイル: fx_about.c プロジェクト: amoblin/flyshion
static void create_contri(GtkTextView *view)
{
	GtkTextTag    *tag;
	GtkTextTag    *tag1;
	GtkTextTag    *tag2;
	GtkTextIter    iter;
	const char title[] = N_("The Main Contributors\n\n");
	const char *intro;

	gtk_text_view_set_editable(view,FALSE);
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
	g_signal_connect (view, "motion-notify-event", 
			G_CALLBACK (motion_notify_event), NULL);
	g_signal_connect(view, "event-after", 
                     G_CALLBACK (event_after), NULL);

	GtkTextBuffer *buffer = gtk_text_view_get_buffer(view);

	tag = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "size", 15 * PANGO_SCALE, 
									"justification", GTK_JUSTIFY_CENTER,
									"weight", PANGO_WEIGHT_BOLD,
                                    NULL);

	tag1 = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "left-margin", 25, 
                                    "right-margin", 25, 
                                    NULL);

	tag2 = gtk_text_buffer_create_tag (buffer, NULL, 
                                    "left-margin", 25, 
									"weight", PANGO_WEIGHT_BOLD,
                                    NULL);


	gtk_text_buffer_get_start_iter(buffer, &iter);
  
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	title, -1, tag, NULL);

	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	"happyaron: ", -1, tag2, NULL);
	intro = N_("Make deb package for debian/ubuntu users,"
			"maintainer of the PPA of openfetion.\nBlog:");
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_(intro), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://blogs.gnome.org/happyaron/");

	
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	"\n\nwzssyqa: ", -1, tag2, NULL);
	intro = N_("Main translater of openfetion,accomplish"
		" the internationalisation(i18n) of openfetion");
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_(intro), -1, tag1, NULL);

	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	"\n\nxhacker: ", -1, tag2, NULL);
	intro = N_("Contributed to the UI development,and fixed some "
			"bugs of the UI.\nFollow him:");
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_(intro), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://twitter.com/xhacker");

	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	"\n\nriku: ", -1, tag2, NULL);
	intro = N_("A good designer,designed a logo and some icons for "
			"openfetion,and also contributed to the UI design.\nFollow him:");
	gtk_text_buffer_insert_with_tags(buffer, &iter,
		   	_(intro), -1, tag1, NULL);
	insert_link(buffer, &iter, "http://twitter.com/riku");
}
コード例 #16
0
ファイル: mtx_linal.c プロジェクト: sauravkumar2014/ASCEND
static
void mtx_eliminate_row2(mtx_matrix_t mtx,
			mtx_matrix_t upper_mtx,
			mtx_range_t *rng,
			int32 row,
			real64 *vec,
			real64 *pivots,
			int32 *inserted,
			mem_store_t eltbuffer)
{
  struct element_t *elt;
  struct mtx_linklist *diag, *right=NULL, *ptr;
  int32 *tocur;
  real64 multiplier;
  int k, j;
  mtx_coord_t nz;

  (void)rng;  /*  stop gcc whine about unused parameter  */

  /*
   * Move all non-zeros from current row to full array.
   * The full array would have been initialized before,
   * we must put it back in the clean state when we leave.
   * All operations are done over mtx_ALL_COLS.
   */
  /*
   * we use the following code fragment instead of :
   * 	mtx_cur_row_vec(mtx,row,vec,mtx_ALL_COLS);
   * so that we can put the elements in the correct place.
   */

  diag = (struct mtx_linklist *)mem_get_element(eltbuffer);
  diag->index = row;
  diag->prev = NULL;
  inserted[row] = 1;

  /*
   * the insertion for this phase.
   */
  tocur = mtx->perm.col.org_to_cur;
  elt = mtx->hdr.row[mtx->perm.row.cur_to_org[row]];
  ptr = diag;
  for ( ;NOTNULL(elt); elt = elt->next.col) {
    if (elt->value == 0.0) {
      continue;			/* hard zeros */
    }
    k = tocur[elt->col];
    vec[k] = elt->value;
    if (k < row) {		/* the less than is critical */
      (void)insert_link(diag,k,eltbuffer);
      inserted[k] = 1;
    }
    else if (k > row) {
      right = add_link(right,k,eltbuffer);
      inserted[k] = 1;
    }
    else
      continue;
  }

  mtx_clear_row(mtx,row,mtx_ALL_COLS);

  /* we shuold be trapping for these 0 multipliers before. !!! */

  for (ptr = diag->prev; NOTNULL(ptr); ) {
    k = ptr->index;
    multiplier = vec[k]/pivots[k];
    if (multiplier==D_ZERO) {
      ptr = ptr->prev;
      /* FPRINTF(stderr,"0 multiplier found at %d\n",k); */
      continue;
    }
#ifdef NOP_DEBUG
    mtx_number_ops++;
#endif /* NOP_DEBUG */
    elt = mtx->hdr.row[mtx->perm.row.cur_to_org[k]];
    for ( ;NOTNULL(elt); elt = elt->next.col) {
      j = tocur[elt->col];
      if (!inserted[j]) {
	if (j < k)
	  (void)insert_link(ptr,j,eltbuffer);
	else
	  right = add_link(right,j,eltbuffer);
	inserted[j] = 1;
      }
      vec[j] = vec[j] - multiplier * elt->value;
#ifdef NOP_DEBUG
    mtx_number_ops++;
#endif /* NOP_DEBUG */
    }
    vec[k] = multiplier;	/* backpatch multiplier */
    ptr = ptr->prev;
  }

  /*
   * Map the data back to the appropriate matrices.
   */

  /*
   * Fill up the upper_matrix with the multipliers.
   */
  nz.row = row;
  for (ptr = diag->prev; NOTNULL(ptr); ptr = ptr->prev) {
    nz.col = ptr->index;
    if (vec[nz.col] != D_ZERO) {		/* dont fill hard 0's */
      mtx_fill_value(upper_mtx,&nz,vec[nz.col]);
    }
    vec[nz.col] = D_ZERO;
    inserted[nz.col] = 0;
  }

  /*
   * Fill the diagonal back to the regular matrix.
   */
  nz.col = row;
  if (vec[nz.col] != D_ZERO) {			/* dont fill hard 0's */
    mtx_fill_value(mtx,&nz,vec[nz.col]);
  }
  vec[row] = D_ZERO;
  inserted[row] = 0;

  /*
   * Fill the lower matrix with the stuff to the right of
   * diagonal.
   */
  for (ptr = right; NOTNULL(ptr); ptr = ptr->prev) {
    nz.col = ptr->index;
    if (fabs(vec[nz.col]) > 1.0e-16) {	/* THIS NEEDS A DROP TOL DEFINE */
      mtx_fill_value(mtx,&nz,vec[nz.col]);
    }
    vec[nz.col] = D_ZERO;
    inserted[nz.col] = 0;
  }
}
コード例 #17
0
ファイル: array_func.c プロジェクト: Johnlihj/torque
static int parse_array_request(char *request, tlist_head *tl)
  {
  char *temp_str;
  int num_tokens;
  char **tokens;
  int i;
  int j;
  int num_elements;
  int start;
  int end;
  int num_bad_tokens;
  int searching;
  array_request_node *rn;
  array_request_node *rn2;

  temp_str = strdup(request);
  num_tokens = array_request_token_count(request);
  num_bad_tokens = 0;

  tokens = (char**)malloc(sizeof(char*) * num_tokens);
  j = num_tokens - 1;
  /* start from back and scan backwards setting pointers to tokens and changing ',' to '\0' */

  for (i = strlen(temp_str) - 1; i >= 0; i--)
    {

    if (temp_str[i] == ',')
      {
      tokens[j--] = &temp_str[i+1];
      temp_str[i] = '\0';
      }
    else if (i == 0)
      {
      tokens[0] = temp_str;
      }
    }


  for (i = 0; i < num_tokens; i++)
    {
    num_elements = array_request_parse_token(tokens[i], &start, &end);

    if (num_elements == 0)
      {
      num_bad_tokens++;
      }
    else
      {
      rn = (array_request_node*)malloc(sizeof(array_request_node));
      rn->start = start;
      rn->end = end;
      CLEAR_LINK(rn->request_tokens_link);

      rn2 = GET_NEXT(*tl);
      searching = TRUE;

      while (searching)
        {

        if (rn2 == NULL)
          {
          append_link(tl, &rn->request_tokens_link, (void*)rn);
          searching = FALSE;
          }
        else if (rn->start < rn2->start)
          {
          insert_link(&rn2->request_tokens_link, &rn->request_tokens_link, (void*)rn,
                      LINK_INSET_BEFORE);
          searching = FALSE;
          }
        else
          {
          rn2 = GET_NEXT(rn2->request_tokens_link);
          }

        }

      rn2 = GET_PRIOR(rn->request_tokens_link);

      if (rn2 != NULL && rn2->end >= rn->start)
        {
        num_bad_tokens++;
        }

      rn2 = GET_NEXT(rn->request_tokens_link);

      if (rn2 != NULL && rn2->start <= rn->end)
        {
        num_bad_tokens++;
        }

      }
    }

  free(tokens);

  free(temp_str);

  return num_bad_tokens;
  }