sdk-world
v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Toggle main menu visibility
Loading...
Searching...
No Matches
aarec.c
1
#include <string.h>
2
#include <malloc.h>
3
#include "
aalib.h
"
4
aa_linkedlist
*aa_kbdrecommended = NULL, *aa_mouserecommended = NULL,
5
*aa_displayrecommended = NULL;
6
#define addlist(l,m) ((((l)!=NULL)?(m)->next=(l),(m)->previous=(l)->previous,(l)->previous=(m),(m)->previous->next=(m):((m)->next=(m),(m)->previous=(m),(l)=(m))))
7
#define inslist(l,m) (addlist(l,m),(l)=(m))
8
#define remove(l,m) ((m)->next->previous=(m)->previous,(m)->previous->next=(m)->next,((l)==m?(l)=((l)->next==(l)?NULL:(l)->next):NULL))
9
static
aa_linkedlist
*aa_find(
aa_linkedlist
* l,
char
*text)
10
{
11
aa_linkedlist
*m = l;
12
if
(l == NULL)
13
return
NULL;
14
do
{
15
if
(!strcmp(m->text, text))
16
return
(m);
17
m = m->next;
18
}
while
(l != m);
19
return
NULL;
20
}
21
void
aa_recommendhi(
aa_linkedlist
** l,
char
*name)
22
{
23
aa_linkedlist
*m = (
aa_linkedlist
*) malloc(
sizeof
(*m)), *o = aa_find(*l, name);
24
if
(o != NULL)
25
remove(*l, o);
26
m->text = strdup(name);
27
inslist(*l, m);
28
}
29
30
void
aa_recommendlow(
aa_linkedlist
** l,
char
*name)
31
{
32
aa_linkedlist
*o = aa_find(*l, name);
33
if
(o == NULL) {
34
aa_linkedlist
*m = (
aa_linkedlist
*) malloc(
sizeof
(*m));
35
m->text = strdup(name);
36
addlist(*l, m);
37
}
38
}
39
40
char
*aa_getfirst(
aa_linkedlist
** l)
41
{
42
char
*c = NULL;
43
aa_linkedlist
*m = *l;
44
if
(*l != NULL) {
45
remove(*l, m);
46
c = m->text;
47
free((
char
*) m);
48
}
49
return
(c);
50
}
51
#if 0
52
main()
53
{
54
char
*t;
55
aa_linkedlist
*l = NULL;
56
aa_recommendhi(&l,
"ahoj1"
);
57
aa_recommendlow(&l,
"ble1"
);
58
aa_recommendhi(&l,
"ahoj2"
);
59
aa_recommendlow(&l,
"ble2"
);
60
aa_recommendlow(&l,
"ble1"
);
61
aa_recommendhi(&l,
"ble1"
);
62
while
((t = aa_getfirst(&l)) != NULL) {
63
printf(
"-%s-\n"
, t);
64
}
65
}
66
#endif
aalib.h
aa_linkedlist
Definition
aalib.h:181
aalib
src
aarec.c
Generated by
1.18.0