⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 web_data.h

📁 it is about embeded system
💻 H
字号:
/***************************************************  Copyright(C), 2008 , JUST  File name: web_data.h  Author: StevenZ      Version: 0.9        Date: 080906  Description: 点划式网页浏览器相关数据和初始化及释放函数  History: //修改历史列表    1. Date:08/07/06      Author:StevenZ      Modification:添加触摸屏数据结构及函数    2. Date:08/07/16       Author:StevenZ      Modification:添加网页数据数据结构及函数    3. Date:08/09/01      Author:StevenZ      Modification:添加表单结构及函数 ***************************************************/#ifndef _WEB_DATA_H#define _WEB_DATA_H#include <sys/types.h>#include <sys/socket.h> #include <time.h>#include <stdlib.h>#include <stdio.h>#define TITLESIZE 255#define WEBDATASIZE 10#define FAVORSIZE 20/*tflag=-1表链接+端口号,tflag=-2表表单,tflag=-3表submit,		tflag=0表文本,tflag>0表链表表头同时表示结点总数*/#define IP_PORT_D 	-1 /*格式:L|text|"ip_port"\0*/#define BLANK_D		-2 /*格式:B|action|method|type1|name1|value1|...|typeN|nameN|valueN\0*/#define SUBMIT_D 	-3#define TEXT_D		0  /*格式:T|text\0*/	//#undef DEBUG#define DEBUG#ifdef DEBUG#define DPRINTF(x...) printf("debug:"##x)#else#define DPRINTF(x...)#endif/*触摸屏返回值结构体*/typedef struct{	unsigned short pressure;/*0:松开 1:首次按下 2:按住*/	unsigned short x;	unsigned short y;	unsigned short pad;}TS_RET;/*触摸屏数据结构体*/struct TS_DATE {	TS_RET ts_ret;};/*收藏夹数据结构体*/typedef struct{	char *favor_name[FAVORSIZE];	char *favor_ip_port[FAVORSIZE];	int favor_total;	int favor_current;}FAVOR_DATA;/*正文数据结构体*/struct web_text_list{	void *text;	int tflag; /*tflag=-1表链接+端口号,tflag=-2表表单,tflag=-3表submit,		tflag=0表文本,tflag>0表链表表头同是表示结点总数*/	int sflag;/*用于保存时的标识符,平时为0*/	struct web_text_list *prev;	struct web_text_list *next;	struct web_text_list *parent;	struct web_text_list *child;};/*网页数据结构体*/struct Web_Data{	char *title;	char *ip_port;/*网址内容,有待确定*/	struct web_text_list *text_list_head;	struct web_text_list *current;	struct timespec download_time;/*网页下载时间*/	short int need_redownload;	  /*是否需要重新下载网页*/	short int can_text_forward;  /*每次正文级后退+1,为正数说明可正文级前进-1,重下网页清0*/	short int can_text_backward; /*每次正文级前进或进入下一级正文+1,				为正数说明可正文级后退-1,重下网页清0*/};/*浏览器数据结构体(包含WEBDATASIZE个网页数据)*/struct websitedata{	struct Web_Data web_data[WEBDATASIZE];	int website_head,website_tail,website_total;};/*表单数据结构体*/typedef struct//一个表单数据结构体{	char *action; 	//所要传送的目的地址	char method[4]; 	//传送方式	int input_num; 	//总的input项个数	int submit_num; 	//总的submit个数	char **type_h; 	//type项头指针	char **name_h; 	//name项头指针	char **value_h;	//value项头指针	char **note_h;	//note项头指针,中文注释}BLANK;/*初始化收藏夹数据*/void favor_data_init(FAVOR_DATA *favor_data);/*释放收藏夹数据*/void free_favor_data(FAVOR_DATA *favor_data);/*初始化触摸屏数据*/void ts_date_init(struct TS_DATE * b);/*初始化正文数据*/void init_web_text_list(struct web_text_list *wtlptr);/*初始化网页数据*/void init_web_data(struct Web_Data *wd);/*释放网页数据*/void free_web_data(struct Web_Data *wd);/*初始化浏览器数据*/void websitedata_init(struct websitedata *wsd);/*释放浏览器数据*/void free_websitedata(struct websitedata *wsd);/*初始化表单数据*/void blank_init(BLANK *blk);/*释放表单数据*/void free_blank(BLANK *pblk);void ts_date_init(struct TS_DATE * b){  b->ts_ret.pressure=3;  b->ts_ret.x=0;  b->ts_ret.y=0;  b->ts_ret.pad=0;}void init_web_text_list(struct web_text_list *wtlptr){	wtlptr->text=NULL;	wtlptr->tflag=1;	/*head中的tflag表示结点个数,head也算一个结点*/	wtlptr->sflag=0;	wtlptr->prev=NULL;	wtlptr->next=NULL;	wtlptr->parent=NULL;	wtlptr->child=NULL;}void init_web_data(struct Web_Data *wd){	struct web_text_list *text_head=malloc(sizeof(struct web_text_list));	init_web_text_list(text_head);	wd->text_list_head=text_head;	wd->current=text_head;	wd->need_redownload=0;	wd->can_text_forward=0;	wd->can_text_backward=0;	wd->title=NULL;	wd->ip_port=NULL;}void websitedata_init(struct websitedata *wsd){	int i;	for(i=0;i<WEBDATASIZE;i++) 	{		DPRINTF("init wsd->web_data[%d]\n",i);		init_web_data(&wsd->web_data[i]);	}	wsd->website_head=0;	wsd->website_tail=0;	wsd->website_total=0;}void blank_init(BLANK *blk){	blk->action=NULL;	blk->input_num=0;	blk->submit_num=0;	blk->type_h=NULL;	blk->name_h=NULL;	blk->value_h=NULL;	blk->note_h=NULL;}void free_blank(BLANK *pblk){	int i;	if(pblk->action)		free(pblk->action);	for(i=0;i<pblk->input_num;i++)	{		if((pblk->type_h)[i])			free((pblk->type_h)[i]);		if((pblk->name_h)[i])			free((pblk->name_h)[i]);		if((pblk->value_h)[i])			free((pblk->value_h)[i]);		if((pblk->note_h)[i])			free((pblk->note_h)[i]);		}	if(pblk->type_h)		free(pblk->type_h);	if(pblk->name_h)		free(pblk->name_h);	if(pblk->value_h)		free(pblk->value_h);	if(pblk->note_h)		free(pblk->note_h);}void free_web_data(struct Web_Data *wd){		struct web_text_list *wtlptr=wd->text_list_head,*del_wtlptr;	/*free结构体web_text_list*/	while(1)	{//		DPRINTF("1\n");		while(1)		{			if(wtlptr->next!=NULL||wtlptr->child!=NULL)			{				if(wtlptr->next!=NULL)				{					wtlptr=wtlptr->next;					continue;				}				else				{					wtlptr=wtlptr->child;					continue;				}			}			else break;			}				if(wtlptr->prev!=NULL)		{			del_wtlptr=wtlptr;			wtlptr=wtlptr->prev;			wtlptr->next=NULL;//			DPRINTF("2\n");			if(del_wtlptr->text)			{				if(del_wtlptr->tflag==BLANK_D)					free_blank(del_wtlptr->text);				else free(del_wtlptr->text);			}//			DPRINTF("3\n");			free(del_wtlptr);			continue;		}		if(wtlptr->parent!=NULL)		{			del_wtlptr=wtlptr;			wtlptr=wtlptr->parent;			wtlptr->child=NULL;//			DPRINTF("4\n");			if(del_wtlptr->text)			{				if(del_wtlptr->tflag==BLANK_D)					free_blank(del_wtlptr->text);				else free(del_wtlptr->text);			}//			DPRINTF("5\n");			free(del_wtlptr);			continue;		}		break;	}//	DPRINTF("6\n");	free(wtlptr);	/*free title和ip_port*///	DPRINTF("7\n");	if(wd->title)		free(wd->title);	if(wd->ip_port)//	DPRINTF("8\n");		free(wd->ip_port);}void free_websitedata(struct websitedata *wsd){	int i;	for(i=0;i<WEBDATASIZE;i++) 	{		DPRINTF("free wsd->web_data[%d]\n",i);		free_web_data(&wsd->web_data[i]);	}	}void favor_data_init(FAVOR_DATA *favor_data){	int i;	favor_data->favor_total=0;	favor_data->favor_current=0;	for(i=0;i<FAVORSIZE;i++)	{		favor_data->favor_name[i]=NULL;	 	favor_data->favor_ip_port[i]=NULL;	}}void free_favor_data(FAVOR_DATA *favor_data){	int i;		DPRINTF("free favor_data now...\n");	for(i=0;i<favor_data->favor_total;i++)	{	     if(favor_data->favor_name[i])		free(favor_data->favor_name[i]);             if(favor_data->favor_ip_port[i])		free(favor_data->favor_ip_port[i]);	}}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -