-
Notifications
You must be signed in to change notification settings - Fork 0
/
dataOp.c
120 lines (110 loc) · 2.42 KB
/
dataOp.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*
文件名:dataOp.c
描述:用于对mapdata结构体的操作,包括初始化mapdata结构体、mapdata结构体数据传递相关操作、node数据的解析
*/
#include "fileOp.h"
/*
函数名:mapDataInit
函数功能:初始化mapData结构体
参数:mapData结构体指针temp
返回值:无
*/
void mapDataInit(md_t temp)
{
temp->size = 0;
temp->linkid = 0;
temp->roadnamesize = 0;
temp->node = 0;
temp->roadname = NULL;
}
/*
函数名:getMapDate
函数功能:获得一条mapdata结构体类型的数据
参数:用于存储数据的结构体指针 n,文件指针fl
返回值:无
*/
void getMapData(md_t n, FILE* fl)
{
readFile(n, fl);
}
/*
函数名:writeMapData
函数功能:将一条mapdata结构体类型数据以二进制形式写入文件
参数:用于存储数据的结构体指针 n,文件指针fl
返回值:无
*/
void writeMapData(md_t n, FILE* fl)
{
writeFile(n, fl);
}
/*
函数名:copyMapData
函数功能:拷贝src的值到dec
参数:目标结构体指针 dec,拷贝结构体指针 sec
返回值:无
*/
void copyMapData(md_t dec, md_t src)
{
dec->size = src->size;
dec->linkid = src->linkid;
dec->node = src->node;
dec->roadnamesize = src->roadnamesize;
free(dec->roadname);
dec->roadname = (UCHAR*)malloc(sizeof(UCHAR) * src->roadnamesize);
strcpy((char*)(dec->roadname), (char*)(src->roadname));
}
/*
函数名:showMapData
函数功能:将一条mapdata结构体类型数据以文本形式写入文件
参数:用于存储数据的结构体指针 n,文件指针fl
返回值:无
*/
void showMapData(md_t n, FILE* fl)
{
printfFile(n, fl);
}
/*
函数名:printMapData
函数功能:将一条mapdata结构体类型数据打印到控制台
参数:用于存储数据的结构体指针 n
返回值:无
*/
void printMapData(md_t n)
{
printf("#linkid=%ld;", n->linkid);
printf("roadnameflag=%hd;", get_roadnameflag(n->node));
printf("brunch=%hd;", get_brunch(n->node));
printf("dispclass=%hd;", get_dispclass(n->node));
printf("roadname=%s", n->roadname);
printf("\n");
}
/*
函数名:get_roadnameflag
函数功能:从结构体的node中获取roadnameflag数据
参数:node
返回值:roadnameflag
*/
UINT get_roadnameflag(ULONG node)
{
return (((node)>>7) & 0x1);
}
/*
函数名:get_brunch
函数功能:从结构体的node中获取brunch数据
参数:node
返回值:brunch
*/
UINT get_brunch(ULONG node)
{
return (((node)>>4) & 0x7);
}
/*
函数名:get_dispclass
函数功能:从结构体的node中获取dispclass数据
参数:node
返回值:dispclass
*/
UINT get_dispclass(ULONG node)
{
return ((node) & 0x7);
}