ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/acismesh/memoire.h
Revision: 1
Committed: Mon Jun 11 22:53:07 2007 UTC (17 years, 11 months ago)
Content type: text/plain
File size: 3195 byte(s)
Log Message:

File Contents

# Content
1 /*****************************************************************
2
3 memoire.h Type:Inc
4
5 gestion de la memoire
6
7 Date de creation : Thu Jan 11 16:05:36 1996
8
9 Derniere version : Wed Aug 6 11:38:24 1997
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Vincent FRANCOIS
25
26 *****************************************************************/
27
28 #define NSIZE 10
29 #define NSIZEP 6
30
31 #define NOM(var1,var2) var1##var2
32 #define NOM2(var1,var2,var3) var1##var2##var3
33
34 #define ERREUR_ALLOC(var)\
35 if ((var)==NULL)\
36 {\
37 aff_text("ERREUR1....plus de memoire\n");\
38 exit(1);\
39 }
40
41
42
43 #define ERREUR_ALLOC2(var)\
44 if ((var)==NULL)\
45 {\
46 aff_text("ERREUR2....plus de memoire.\n");\
47 exit(1);\
48 }
49
50 #define ERREUR_ALLOC3(var)\
51 if ((var)==NULL)\
52 {\
53 aff_text("ERREUR3....plus de memoire.\n");\
54 exit(1);\
55 }
56
57 #define NEW_POINTEUR(num,var,root)\
58 {\
59 if (NOM(root,var)==NULL)\
60 {\
61 NOM(root,var)=(struct NOM(s_,var) **)calloc(100,sizeof(struct NOM(s_,var) *));\
62 ERREUR_ALLOC2(NOM(root,var));\
63 }\
64 else if (NOM2(root,nb_,var)%100==0)\
65 {\
66 NOM(root,var)=(struct NOM(s_,var) **)realloc(NOM(root,var),(NOM2(root,nb_,var)/100+1)*100*sizeof(struct NOM(s_,var) *));\
67 ERREUR_ALLOC3(NOM(root,var));\
68 }\
69 num=NOM2(root,nb_,var);\
70 NOM2(root,nb_,var)++;\
71 }
72
73
74
75 #define NEW_ALLOC(var,root)\
76 {\
77 NOM(root,var)=(struct NOM(s_,var) **)calloc(1024,sizeof(struct NOM(s_,var) *));\
78 ERREUR_ALLOC(NOM(root,var));\
79 }
80
81
82 #define ADRESSE(num,var,root) NOM(root,var)[num>>NSIZE]+(num%(1<<NSIZE))
83
84
85
86
87 #define NEW_ENTITE(p,var,root)\
88 {\
89 if ( (NOM2(root,nb_,var))%(1<<NSIZE)==0)\
90 {\
91 if (NOM(root,var)[(NOM2(root,nb_,var))>>NSIZE]==NULL) NOM(root,var)[(NOM2(root,nb_,var))>>NSIZE]=(struct NOM(s_,var) *)calloc(1<<NSIZE,sizeof(struct NOM(s_,var)));\
92 ERREUR_ALLOC(NOM(root,var));\
93 }\
94 p=ADRESSE(NOM2(root,nb_,var),var,root);\
95 NOM2(root,nb_,var)++;\
96 }
97
98
99 #define LIBERE(var,root)\
100 {\
101 if (NOM(root,var)!=NULL)\
102 {\
103 for (i=0;i<1024;i++)\
104 if ((NOM(root,var)[i])!=NULL) free(NOM(root,var)[i]);\
105 NOM2(root,nb_,var)=0;\
106 free(NOM(root,var));\
107 }\
108 }
109
110 #define LIBERE_LIEN(p,var,root)\
111 {\
112 for (i=0;i<(NOM2(root,nb_,var));i++)\
113 {\
114 var=ADRESSE(i,var,root);\
115 if (NOM2(var,->,p)!=NULL) free(NOM2(var,->,p));\
116 }\
117 }
118