thread fixes
This commit is contained in:
parent
537efbc341
commit
12799589a8
@ -13,7 +13,7 @@ static void readswap8(double *buf);
|
|||||||
static byte get_hostbyteorder(void);
|
static byte get_hostbyteorder(void);
|
||||||
static byte get_inbyteorder(void);
|
static byte get_inbyteorder(void);
|
||||||
static uint32 get_wkbType(void);
|
static uint32 get_wkbType(void);
|
||||||
static Term get_point(char *functor);
|
static Term get_point(char *functor USES_REGS);
|
||||||
static Term get_linestring(char *functor);
|
static Term get_linestring(char *functor);
|
||||||
static Term get_polygon(char *functor);
|
static Term get_polygon(char *functor);
|
||||||
static Term get_geometry(uint32 type);
|
static Term get_geometry(uint32 type);
|
||||||
@ -150,7 +150,7 @@ static void readswap8(double *buf) {
|
|||||||
cursor += 8;
|
cursor += 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Term get_point(char *func){
|
static Term get_point(char *func USES_REGS){
|
||||||
Term args[2];
|
Term args[2];
|
||||||
Functor functor;
|
Functor functor;
|
||||||
double d;
|
double d;
|
||||||
@ -188,7 +188,7 @@ static Term get_linestring(char *func){
|
|||||||
c_list = (Term *) calloc(sizeof(Term),n);
|
c_list = (Term *) calloc(sizeof(Term),n);
|
||||||
|
|
||||||
for ( i = 0; i < n; i++) {
|
for ( i = 0; i < n; i++) {
|
||||||
c_list[i] = get_point(NULL);
|
c_list[i] = get_point(NULL PASS_REGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
list = MkAtomTerm(Yap_LookupAtom("[]"));
|
list = MkAtomTerm(Yap_LookupAtom("[]"));
|
||||||
@ -241,15 +241,14 @@ static Term get_geometry(uint32 type){
|
|||||||
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case WKBPOINT:
|
case WKBPOINT:
|
||||||
return get_point("point");
|
return get_point("point" PASS_REGS);
|
||||||
case WKBLINESTRING:
|
case WKBLINESTRING:
|
||||||
return get_linestring("linestring");
|
return get_linestring("linestring");
|
||||||
case WKBPOLYGON:
|
case WKBPOLYGON:
|
||||||
return get_polygon("polygon");
|
return get_polygon("polygon");
|
||||||
case WKBMULTIPOINT:
|
case WKBMULTIPOINT:
|
||||||
{
|
{
|
||||||
byte b;
|
uint32 n;
|
||||||
uint32 n, u;
|
|
||||||
int i;
|
int i;
|
||||||
Functor functor;
|
Functor functor;
|
||||||
Term *c_list;
|
Term *c_list;
|
||||||
@ -264,10 +263,10 @@ static Term get_geometry(uint32 type){
|
|||||||
|
|
||||||
for ( i = 0; i < n; i++ ) {
|
for ( i = 0; i < n; i++ ) {
|
||||||
/* read (and ignore) the byteorder and type */
|
/* read (and ignore) the byteorder and type */
|
||||||
b = get_inbyteorder();
|
get_inbyteorder();
|
||||||
u = get_wkbType();
|
get_wkbType();
|
||||||
|
|
||||||
c_list[i] = get_point(NULL);
|
c_list[i] = get_point(NULL PASS_REGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
list = MkAtomTerm(Yap_LookupAtom("[]"));
|
list = MkAtomTerm(Yap_LookupAtom("[]"));
|
||||||
@ -282,8 +281,7 @@ static Term get_geometry(uint32 type){
|
|||||||
}
|
}
|
||||||
case WKBMULTILINESTRING:
|
case WKBMULTILINESTRING:
|
||||||
{
|
{
|
||||||
byte b;
|
uint32 n;
|
||||||
uint32 n, u;
|
|
||||||
int i;
|
int i;
|
||||||
Functor functor;
|
Functor functor;
|
||||||
Term *c_list;
|
Term *c_list;
|
||||||
@ -298,8 +296,8 @@ static Term get_geometry(uint32 type){
|
|||||||
|
|
||||||
for ( i = 0; i < n; i++ ) {
|
for ( i = 0; i < n; i++ ) {
|
||||||
/* read (and ignore) the byteorder and type */
|
/* read (and ignore) the byteorder and type */
|
||||||
b = get_inbyteorder();
|
get_inbyteorder();
|
||||||
u = get_wkbType();
|
get_wkbType();
|
||||||
|
|
||||||
c_list[i] = get_linestring(NULL);
|
c_list[i] = get_linestring(NULL);
|
||||||
}
|
}
|
||||||
@ -316,8 +314,7 @@ static Term get_geometry(uint32 type){
|
|||||||
}
|
}
|
||||||
case WKBMULTIPOLYGON:
|
case WKBMULTIPOLYGON:
|
||||||
{
|
{
|
||||||
byte b;
|
uint32 n;
|
||||||
uint32 n, u;
|
|
||||||
int i;
|
int i;
|
||||||
Functor functor;
|
Functor functor;
|
||||||
Term *c_list;
|
Term *c_list;
|
||||||
@ -332,8 +329,8 @@ static Term get_geometry(uint32 type){
|
|||||||
|
|
||||||
for ( i = 0; i < n; i++ ) {
|
for ( i = 0; i < n; i++ ) {
|
||||||
/* read (and ignore) the byteorder and type */
|
/* read (and ignore) the byteorder and type */
|
||||||
b = get_inbyteorder();
|
get_inbyteorder();
|
||||||
u = get_wkbType();
|
get_wkbType();
|
||||||
|
|
||||||
c_list[i] = get_polygon(NULL);
|
c_list[i] = get_polygon(NULL);
|
||||||
}
|
}
|
||||||
@ -350,7 +347,6 @@ static Term get_geometry(uint32 type){
|
|||||||
}
|
}
|
||||||
case WKBGEOMETRYCOLLECTION:
|
case WKBGEOMETRYCOLLECTION:
|
||||||
{
|
{
|
||||||
byte b;
|
|
||||||
uint32 n;
|
uint32 n;
|
||||||
int i;
|
int i;
|
||||||
Functor functor;
|
Functor functor;
|
||||||
@ -365,7 +361,7 @@ static Term get_geometry(uint32 type){
|
|||||||
|
|
||||||
|
|
||||||
for ( i = 0; i < n; i++ ) {
|
for ( i = 0; i < n; i++ ) {
|
||||||
b = get_inbyteorder();
|
get_inbyteorder();
|
||||||
c_list[i] = get_geometry(get_wkbType());
|
c_list[i] = get_geometry(get_wkbType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ double floatval(TERM);
|
|||||||
#ifdef __YAP_PROLOG__
|
#ifdef __YAP_PROLOG__
|
||||||
static inline
|
static inline
|
||||||
#endif
|
#endif
|
||||||
TERM encodefloat1(double);
|
TERM encodefloat1(double USES_REGS);
|
||||||
|
|
||||||
/* loader.c */
|
/* loader.c */
|
||||||
SYM_REC_PTR insert(const char *, int, int);
|
SYM_REC_PTR insert(const char *, int, int);
|
||||||
@ -272,7 +272,7 @@ TERM bpx_build_float(double x)
|
|||||||
{
|
{
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
REQUIRE_HEAP(4);
|
REQUIRE_HEAP(4);
|
||||||
return encodefloat1(x);
|
return encodefloat1(x PASS_REGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
TERM bpx_build_atom(const char *name)
|
TERM bpx_build_atom(const char *name)
|
||||||
|
@ -128,7 +128,7 @@ double floatval(TERM t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
TERM encodefloat1(double f)
|
TERM encodefloat1(double f USES_REGS)
|
||||||
{
|
{
|
||||||
return MkFloatTerm((Float)f);
|
return MkFloatTerm((Float)f);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user