Revision: 7300
          http://playerstage.svn.sourceforge.net/playerstage/?rev=7300&view=rev
Author:   thjc
Date:     2009-01-25 03:16:31 +0000 (Sun, 25 Jan 2009)

Log Message:
-----------
added a player geos wrapper so we can build with gcc 4.3

Modified Paths:
--------------
    code/player/branches/release-2-1-patches/libplayercore/Makefile.am
    code/player/branches/release-2-1-patches/server/drivers/vectormap/dbconn.cc
    code/player/branches/release-2-1-patches/server/drivers/vectormap/vec2map.cc

Added Paths:
-----------
    code/player/branches/release-2-1-patches/libplayercore/player_geos.h

Property Changed:
----------------
    code/player/branches/release-2-1-patches/


Property changes on: code/player/branches/release-2-1-patches
___________________________________________________________________
Modified: svn:mergeinfo
   - /code/player/trunk:7062,7081,7166-7169,7188,7207,7246
   + /code/player/trunk:7062,7081,7166-7169,7188,7207,7246,7297-7298

Modified: code/player/branches/release-2-1-patches/libplayercore/Makefile.am
===================================================================
--- code/player/branches/release-2-1-patches/libplayercore/Makefile.am  
2009-01-25 02:59:56 UTC (rev 7299)
+++ code/player/branches/release-2-1-patches/libplayercore/Makefile.am  
2009-01-25 03:16:31 UTC (rev 7300)
@@ -53,6 +53,7 @@
                       playerconfig.h \
                       playercore.h \
                       playertime.h \
+                      player_geos.h \
                       plugins.h \
                       wallclocktime.h \
                       error.h \

Added: code/player/branches/release-2-1-patches/libplayercore/player_geos.h
===================================================================
--- code/player/branches/release-2-1-patches/libplayercore/player_geos.h        
                        (rev 0)
+++ code/player/branches/release-2-1-patches/libplayercore/player_geos.h        
2009-01-25 03:16:31 UTC (rev 7300)
@@ -0,0 +1,18 @@
+#ifndef PLAYER_GEOS_H_
+#define PLAYER_GEOS_H_
+
+#ifndef GEOS_VERSION_MAJOR
+#include <stddef.h>
+#include <geos_c.h>
+#endif
+
+// workaround gcc 4.2's confusion over typedeffed constants
+#if GEOS_VERSION_MAJOR >= 3
+typedef const struct GEOSCoordSeq_t * const_GEOSCoordSeq;
+typedef const struct GEOSGeom_t * const_GEOSGeom;
+#else
+typedef struct GEOSCoordSeq_t * const_GEOSCoordSeq;
+typedef struct GEOSGeom_t * const_GEOSGeom;
+#endif
+
+#endif /* PLAYER_GEOS_H_ */

Modified: 
code/player/branches/release-2-1-patches/server/drivers/vectormap/dbconn.cc
===================================================================
--- code/player/branches/release-2-1-patches/server/drivers/vectormap/dbconn.cc 
2009-01-25 02:59:56 UTC (rev 7299)
+++ code/player/branches/release-2-1-patches/server/drivers/vectormap/dbconn.cc 
2009-01-25 03:16:31 UTC (rev 7300)
@@ -6,10 +6,8 @@
 #include <cctype>
 #include "dbconn.h"
 #ifdef HAVE_GEOS
-#ifndef GEOS_VERSION_MAJOR
-#include <geos_c.h>
+#include <libplayercore/player_geos.h>
 #endif
-#endif
 
 using namespace std;
 
@@ -69,7 +67,7 @@
     cerr << "No extent value found." << endl;
     cerr << "GetVectorMapInfo() failed" << endl;
   }
- 
+
   uint32_t length = PQgetlength(res, 0, 0);
   uint8_t * wkb = new uint8_t[length];
   assert(wkb);
@@ -280,7 +278,7 @@
       }
       if (PQresultStatus(res) != PGRES_COMMAND_OK) PLAYER_ERROR1("%s", 
PQresultErrorMessage(res));
       PQclear(res);
-      return -1;      
+      return -1;
     }
     PQclear(res);
   }
@@ -314,13 +312,13 @@
     printf("GEOSGeomFromWKB_buf returned NULL!\n");
     return res;
   }
-  GEOSGeom linestring = GEOSGetExteriorRing(polygon);
+  const_GEOSGeom linestring = GEOSGetExteriorRing(polygon);
   if (linestring == NULL)
   {
     printf("GEOSGetExteriorRing returned NULL!\n");
     return res;
   }
-  GEOSCoordSeq coords = GEOSGeom_getCoordSeq(linestring);
+  const_GEOSCoordSeq coords = GEOSGeom_getCoordSeq(linestring);
   if (coords == NULL)
   {
     printf("GEOSGeom_getCoordSeq returned NULL!\n");

Modified: 
code/player/branches/release-2-1-patches/server/drivers/vectormap/vec2map.cc
===================================================================
--- 
code/player/branches/release-2-1-patches/server/drivers/vectormap/vec2map.cc    
    2009-01-25 02:59:56 UTC (rev 7299)
+++ 
code/player/branches/release-2-1-patches/server/drivers/vectormap/vec2map.cc    
    2009-01-25 03:16:31 UTC (rev 7300)
@@ -1,6 +1,6 @@
 /*
  *  Player - One Hell of a Robot Server
- *  Copyright (C) 2004  Brian Gerkey ger...@stanford.edu    
+ *  Copyright (C) 2004  Brian Gerkey ger...@stanford.edu
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -57,7 +57,7 @@
   - Default: ""
   - Do not draw feature with that name on final grid map
 
-...@par Example 
+...@par Example
 
 @verbatim
 driver
@@ -91,10 +91,8 @@
 #include <pthread.h>
 #include <libplayercore/playercore.h>
 #ifdef HAVE_GEOS
-#ifndef GEOS_VERSION
-#include <geos_c.h>
+#include <player_geos.h>
 #endif
-#endif
 
 #define EPS 0.00001
 #define MAXFABS(a, b) ((fabs(a) > fabs(b)) ? fabs(a) : fabs(b))
@@ -103,7 +101,7 @@
 
 class Vec2Map : public Driver
 {
-  public:    
+  public:
     // Constructor; need that
     Vec2Map(ConfigFile * cf, int section);
 
@@ -114,7 +112,7 @@
     virtual int Shutdown();
 
     // This method will be invoked on each incoming message
-    virtual int ProcessMessage(QueuePointer & resp_queue, 
+    virtual int ProcessMessage(QueuePointer & resp_queue,
                                player_msghdr * hdr,
                                void * data);
 
@@ -124,7 +122,7 @@
 
     // some helper functions
 #ifdef HAVE_GEOS
-    void dumpFeature(GEOSGeom geom, vector<player_segment_t> & segments);
+    void dumpFeature(const_GEOSGeom geom, vector<player_segment_t> & segments);
 #endif
     void line(int a, int b, int c, int d, int8_t * cells, int maxx, int maxy);
     int over(int x, int min, int max);
@@ -223,7 +221,7 @@
 
////////////////////////////////////////////////////////////////////////////////
 // Set up the device.  Return 0 if things go well, and -1 otherwise.
 int Vec2Map::Setup()
-{  
+{
   // Retrieve the handle to the vectormap device.
   this->vectormap_dev = deviceTable->GetDevice(this->vectormap_addr);
   if (!(this->vectormap_dev))
@@ -251,7 +249,7 @@
 {
   // Stop and join the driver thread
   StopThread();
-    
+
   // Unsubscribe from the vectormap
   this->vectormap_dev->Unsubscribe(this->InQueue);
 
@@ -260,7 +258,7 @@
 
 
////////////////////////////////////////////////////////////////////////////////
 // Main function for device thread
-void Vec2Map::Main() 
+void Vec2Map::Main()
 {
   struct timespec tspec;
 
@@ -271,7 +269,7 @@
     this->InQueue->Wait();
 
     pthread_testcancel();
-    
+
     // Process incoming messages
     ProcessMessages();
 
@@ -283,9 +281,9 @@
 }
 
 #ifdef HAVE_GEOS
-void Vec2Map::dumpFeature(GEOSGeom geom, vector<player_segment_t> & segments)
+void Vec2Map::dumpFeature(const_GEOSGeom geom, vector<player_segment_t> & 
segments)
 {
-    GEOSCoordSeq seq;
+    const_GEOSCoordSeq seq;
     double x0, y0, x1, y1;
     unsigned int numcoords;
     player_segment_t segment;
@@ -411,10 +409,10 @@
        if (over(static_cast<int>(x), 0, width)) break;
        if (over(static_cast<int>(y), 0, height)) break;
        cells[(static_cast<int>(y) * width) + (static_cast<int>(x))] = 1;
-    } 
+    }
 }
 
-int Vec2Map::ProcessMessage(QueuePointer & resp_queue, 
+int Vec2Map::ProcessMessage(QueuePointer & resp_queue,
                             player_msghdr * hdr,
                             void * data)
 {


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Playerstage-commit mailing list
Playerstage-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to