gmsh-TingyuanDoc  0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
libol1.h
Go to the documentation of this file.
1 // All libOL code is Copyright 2012-2018 - by Loïc Maréchal / INRIA.
2 // This program is a free software.
3 // You can redistribute it and/or modify it under the terms of the MIT License
4 // as published by the Open Source Initiative.
5 //
6 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
7 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8 // See the MIT License for more details.
9 //
10 // You should have received a copy of the MIT License along with this program
11 // as the file LICENSE.txt; if not, please see:
12 // https://opensource.org/licenses/MIT
13 //
14 //
15 // MIT License
16 //
17 // Copyright (c) 2012-2018 Loïc Maréchal / INRIA
18 //
19 // Permission is hereby granted, free of charge, to any person obtaining a copy
20 // of this software and associated documentation files (the "Software"), to deal
21 // in the Software without restriction, including without limitation the rights
22 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23 // copies of the Software, and to permit persons to whom the Software is
24 // furnished to do so, subject to the following conditions:
25 //
26 // The above copyright notice and this permission notice shall be included in all
27 // copies or substantial portions of the Software.
28 //
29 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
35 // SOFTWARE.
36 
37 /*----------------------------------------------------------------------------*/
38 /* */
39 /* LIB OCTREE LOCALISATION V1.70 */
40 /* */
41 /*----------------------------------------------------------------------------*/
42 /* */
43 /* Description: Octree for mesh localization */
44 /* Author: Loic MARECHAL */
45 /* Creation date: mar 16 2012 */
46 /* Last modification: feb 03 2021 */
47 /* */
48 /*----------------------------------------------------------------------------*/
49 
50 
51 /*----------------------------------------------------------------------------*/
52 /* Public defines : type of elements and 32/64 bits int and floating points */
53 /*----------------------------------------------------------------------------*/
54 
57 
58 
59 /*----------------------------------------------------------------------------*/
60 /* Set integer and floating point sizes: */
61 /* default values are 32-bit integers and 64-bit floating points */
62 /* define INT64 or REAL32 to override default settings */
63 /*----------------------------------------------------------------------------*/
64 
65 #ifdef INT64
66 #define itg int64_t
67 #define utg uint64_t
68 #else
69 #define itg int32_t
70 #define utg uint32_t
71 #endif
72 
73 #ifdef REAL32
74 #define fpn float
75 #else
76 #define fpn double
77 #endif
78 
79 
80 /*----------------------------------------------------------------------------*/
81 /* Public procedures */
82 /*----------------------------------------------------------------------------*/
83 
84 int64_t LolNewOctree (itg, fpn *, fpn *, itg, itg *, itg *,
85  itg, itg *, itg *, itg, itg *, itg *,
86  itg, itg *, itg *, itg, itg *, itg *,
87  itg, itg *, itg *, itg, itg *, itg *, itg, itg);
88 size_t LolFreeOctree (int64_t);
89 itg LolGetBoundingBox (int64_t , itg , itg, itg *, fpn [3], fpn [3], itg);
90 itg LolGetNearest (int64_t, itg, fpn *, fpn *, fpn, itg (void *, itg),
91  void * , itg);
92 itg LolIntersectSurface(int64_t, fpn *, fpn *, fpn *,
93  fpn, itg (void *, itg), void *, itg );
94 itg LolProjectVertex (int64_t, fpn *, itg, itg, fpn *, itg);
95 
96 
97 /*----------------------------------------------------------------------------*/
98 /* Fortran 77 API */
99 /*----------------------------------------------------------------------------*/
100 
101 #if defined(F77_NO_UNDER_SCORE)
102 #define call(x) x
103 #else
104 #define call(x) x ## _
105 #endif
LolGetBoundingBox
itg LolGetBoundingBox(int64_t, itg, itg, itg *, fpn[3], fpn[3], itg)
Definition: libol1.c:639
TypTag
TypTag
Definition: libol1.h:55
LolGetNearest
itg LolGetNearest(int64_t, itg, fpn *, fpn *, fpn, itg(void *, itg), void *, itg)
LolTypPri
@ LolTypPri
Definition: libol1.h:56
LolNewOctree
int64_t LolNewOctree(itg, fpn *, fpn *, itg, itg *, itg *, itg, itg *, itg *, itg, itg *, itg *, itg, itg *, itg *, itg, itg *, itg *, itg, itg *, itg *, itg, itg *, itg *, itg, itg)
Definition: libol1.c:343
LolTypVer
@ LolTypVer
Definition: libol1.h:55
LolTypPyr
@ LolTypPyr
Definition: libol1.h:56
fpn
#define fpn
Definition: libol1.h:76
LolTypEdg
@ LolTypEdg
Definition: libol1.h:55
itg
#define itg
Definition: libol1.h:69
LolTypTet
@ LolTypTet
Definition: libol1.h:56
LolIntersectSurface
itg LolIntersectSurface(int64_t, fpn *, fpn *, fpn *, fpn, itg(void *, itg), void *, itg)
LolTypHex
@ LolTypHex
Definition: libol1.h:56
LolProjectVertex
itg LolProjectVertex(int64_t, fpn *, itg, itg, fpn *, itg)
Definition: libol1.c:930
LolTypQad
@ LolTypQad
Definition: libol1.h:55
LolFreeOctree
size_t LolFreeOctree(int64_t)
Definition: libol1.c:623
LolTypTri
@ LolTypTri
Definition: libol1.h:55
LolNmbTyp
@ LolNmbTyp
Definition: libol1.h:56