?? web_data.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=1;}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 + -