FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
gnuplot-old/src/dynarray.c at pm3d · gnuplot/gnuplot-old · GitHub
gnuplot
gnuplot-old
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
gnuplot-old
/
src
/
dynarray.c
Copy path
More file actions
More file actions
Latest commit
History
History
History
88 lines (74 loc) · 1.89 KB
Breadcrumbs
gnuplot-old
/
src
/
dynarray.c
Copy path
File metadata and controls
88 lines (74 loc) · 1.89 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
#ifndef
lint
static
char
*
RCSid
() {
return
RCSid
(
"$Id: dynarray.c,v 1.3.2.1 2000/05/03 21:26:11 joze Exp $"
); }
#endif
/* GNUPLOT - dynarray.c */
/* HBB: new code fragment for an 'OO-style' resizeable-array
* container. used in hidden3d, for now, but should be useful,
* elsewhere (after extracting the header and removing the 'static'
* declarations, that is */
#include
"dynarray.h"
#include
"alloc.h"
#include
"graphics.h"
/*********** Implementation ************/
void
init_dynarray
(
array
,
entry_size
,
size
,
increment
)
dynarray
*
array
;
size_t
entry_size
;
long
size
,
increment
;
{
array
->
v
=
0
;
/* preset value, in case gp_alloc fails */
if
(
size
)
array
->
v
=
gp_alloc
(
entry_size
*
size
,
"init dynarray"
);
array
->
size
=
size
;
array
->
end
=
0
;
array
->
increment
=
increment
;
array
->
entry_size
=
entry_size
;
}
void
free_dynarray
(
array
)
dynarray
*
array
;
{
free
(
array
->
v
);
/* should work, even if gp_alloc failed */
array
->
v
=
0
;
array
->
end
=
array
->
size
=
0
;
}
void
resize_dynarray
(
array
,
newsize
)
dynarray
*
array
;
long
newsize
;
{
if
(!
array
->
v
)
graph_error
(
"resize_dynarray: dynarray wasn't initialized!"
);
if
(
newsize
==
0
)
free_dynarray
(
array
);
else
{
array
->
v
=
gp_realloc
(
array
->
v
,
array
->
entry_size
*
newsize
,
"extend dynarray"
);
array
->
size
=
newsize
;
}
}
void
extend_dynarray
(
array
,
increment
)
dynarray
*
array
;
long
increment
;
{
resize_dynarray
(
array
,
array
->
size
+
increment
);
}
GPHUGE
void
*
nextfrom_dynarray
(
array
)
dynarray
*
array
;
{
if
(!
array
->
v
)
graph_error
(
"nextfrom_dynarray: dynarray wan't initialized!"
);
if
(
array
->
end
>=
array
->
size
)
extend_dynarray
(
array
,
array
->
increment
);
return
(
void
*
)((
char
*
)(
array
->
v
)
+
array
->
entry_size
*
(
array
->
end
++
));
}
void
droplast_dynarray
(
array
)
dynarray
*
array
;
{
if
(!
array
->
v
)
graph_error
(
"droplast_dynarray: dynarray wasn't initialized!"
);
if
(
array
->
end
)
array
->
end
--
;
}
Back
|
FazBrowse Home
|
New Git URL