gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
10 #include "GmshConfig.h"
11 #if !defined(HAVE_NO_STDINT_H)
13 #elif defined(HAVE_NO_INTPTR_T)
14 typedef unsigned long intptr_t;
20 #include <sys/types.h>
26 int fcmp_int(
const void *a,
const void *b) {
return (*(
int *)a - *(
int *)b); }
30 return (abs(*(
int *)a) - abs(*(
int *)b));
37 cmp = *(
double *)a - *(
double *)b;
40 else if(cmp < -1.e-16)
51 if(incr <= 0) incr = 1;
60 liste->
array =
nullptr;
75 if(!liste || n <= 0)
return;
77 if(liste->
array ==
nullptr) {
84 else if(n > liste->
nmax) {
97 memcpy(&liste->
array[(liste->
n - 1) * liste->
size], data, liste->
size);
108 return liste ? liste->
n : 0;
113 if(!liste || (index < 0) || (index >= liste->
n)) {
117 memcpy(data, &liste->
array[index * liste->
size], liste->
size);
122 if(!liste || (index < 0) || (index >= liste->
n))
126 memcpy(&liste->
array[index * liste->
size], data, liste->
size);
132 if(!liste || index < 0)
135 if(index >= liste->
n) {
136 liste->
n = index + 1;
149 if(liste->
n > 0) liste->
n--;
154 if(!liste || (index < 0) || (index >= liste->
n)) {
159 return (&liste->
array[index * liste->
size]);
164 if(!liste || (index < 0) || (index >= liste->
n)) {
168 return (&liste->
array[index * liste->
size]);
173 return (&liste->
array[index * liste->
size]);
179 qsort(liste->
array, liste->
n, liste->
size, fcmp);
191 for(
int i = 1; i <
List_Nbr(liste); i++) {
193 if((fcmp(data, (
void *)
List_Pointer(liste, write_index))))
196 liste->
n = write_index + 1;
200 int (*fcmp)(
const void *a,
const void *b))
209 ptr = (
void *)bsearch(data, liste->
array, liste->
n, liste->
size, fcmp);
210 if(ptr ==
nullptr)
return (0);
215 int (*fcmp)(
const void *a,
const void *b))
217 if(!liste)
return -1;
226 int (*fcmp)(
const void *a,
const void *b))
228 if(!liste)
return nullptr;
232 ptr = (
void *)bsearch(data, liste->
array, liste->
n, liste->
size, fcmp);
237 int (*fcmp)(
const void *a,
const void *b))
240 char *ptr = (
char *)
List_PQuery(liste, data, fcmp);
241 if(ptr ==
nullptr)
return (0);
243 int len = liste->
n - (((intptr_t)ptr - (intptr_t)liste->
array) / liste->
size);
244 if(len > 0) memmove(ptr, ptr + liste->
size, len * liste->
size);
252 if(ptr ==
nullptr)
return (0);
254 int len = liste->
n - (((intptr_t)ptr - (intptr_t)liste->
array) / liste->
size);
255 if(len > 0) memmove(ptr, ptr + liste->
size, len * liste->
size);
264 for(i = 0; i < N; i++) {
279 for(i = 0; i <
List_Nbr(liste); i++)
288 for(i = 0; i < N; i++) {
297 a->
size * (a->
n - i - 1));
308 for(
int j = 0; j < oldn - i; j++)
311 for(
int j = 0; j < a->
n; j++)
319 for(
int i = 0; i < n; i++) {
int fcmp_double(const void *a, const void *b)
void List_Pop(List_T *liste)
void * List_Pointer(List_T *liste, int index)
void List_Action(List_T *liste, void(*action)(void *data, void *dummy))
void List_Copy(List_T *a, List_T *b)
void List_Write(List_T *liste, int index, void *data)
int List_Suppress(List_T *liste, void *data, int(*fcmp)(const void *a, const void *b))
static void Error(const char *fmt,...)
int fcmp_int(const void *a, const void *b)
void List_Unique(List_T *liste, int(*fcmp)(const void *a, const void *b))
void List_Reset(List_T *liste)
int List_Nbr(List_T *liste)
List_T * List_Create(int n, int incr, int size)
int List_Search(List_T *liste, void *data, int(*fcmp)(const void *a, const void *b))
void List_Invert(List_T *a, List_T *b)
void List_Remove(List_T *a, int i)
List_T * ListOfDouble2ListOfInt(List_T *dList)
void List_Add(List_T *liste, void *data)
void * List_Pointer_Fast(List_T *liste, int index)
void List_Put(List_T *liste, int index, void *data)
void List_Insert_In_List(List_T *a, int i, List_T *b)
void List_Delete(List_T *liste)
int List_ISearchSeq(List_T *liste, void *data, int(*fcmp)(const void *a, const void *b))
void List_Realloc(List_T *liste, int n)
void * Realloc(void *ptr, size_t size)
void List_Sort(List_T *liste, int(*fcmp)(const void *a, const void *b))
void * Malloc(size_t size)
void * List_Pointer_NoChange(List_T *liste, int index)
int List_PSuppress(List_T *liste, int index)
void List_Read(List_T *liste, int index, void *data)
int fcmp_absint(const void *a, const void *b)
void * List_PQuery(List_T *liste, void *data, int(*fcmp)(const void *a, const void *b))