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

# User Rev Content
1 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