]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - contrib/bobtoolz/cportals.cpp
gcc: appease the hardening warnings
[xonotic/netradiant.git] / contrib / bobtoolz / cportals.cpp
index d05591c3caee30b0c58af88bee9ee8e5944cf8d6..3fd39202f4bfa6660dfb9f7164b7a788261dfe38 100644 (file)
 /*
-BobToolz plugin for GtkRadiant
-Copyright (C) 2001 Gordon Biggans
+   BobToolz plugin for GtkRadiant
+   Copyright (C) 2001 Gordon Biggans
 
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
 
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
 
-#include "StdAfx.h"
 #include "CPortals.h"
+
+#include <string.h>
+#include <math.h>
+#include <cassert>
+
 #include "misc.h"
 
-#define LINE_BUF 1000
-#define MSG_PREFIX "bobToolz plugin: "
+const int LINE_BUF = 1000;
+const char *MSG_PREFIX = "bobToolz plugin: ";
 
-// these classes are far less of a mess than my code was, 
+// these classes are far less of a mess than my code was,
 // thanq to G.DeWan 4 the prtview source on which it was based
 
 CBspPortal::CBspPortal()
 {
-       memset(this, 0, sizeof(CBspPortal));
+    memset(this, 0, sizeof(CBspPortal));
 }
 
 CBspPortal::~CBspPortal()
 {
-       delete[] point;
+    delete[] point;
 }
 
-void ClampFloat(floatp)
+void ClampFloat(float *p)
 {
-       double i;
-       double frac = modf(*p, &i);
+    double i;
+    double frac = modf(*p, &i);
 
-       if(!frac)
-               return;
+    if (!frac) {
+        return;
+    }
 
-       if(fabs(*p - ceil(*p)) < MAX_ROUND_ERROR)
-               *p = ceilf(*p);
+    if (fabs(*p - ceil(*p)) < MAX_ROUND_ERROR) {
+        *p = static_cast<float>( ceil(*p));
+    }
 
-       if(fabs(*p - floor(*p)) < MAX_ROUND_ERROR)
-               *p = floorf(*p);
+    if (fabs(*p - floor(*p)) < MAX_ROUND_ERROR) {
+        *p = static_cast<float>( floor(*p));
+    }
 }
 
 bool CBspPortal::Build(char *def, unsigned int pointCnt, bool bInverse)
 {
-       char *c = def;
-       unsigned int n;
+    char *c = def;
+    unsigned int n;
 
-       point_count = pointCnt;
+    point_count = pointCnt;
 
-       if(point_count < 3)
-               return FALSE;
+    if (point_count < 3) {
+        return false;
+    }
 
-       point = new CBspPoint[point_count];
+    point = new CBspPoint[point_count];
 
-       for(n = 0; n < point_count; n++)
-       {
-               for(; *c != 0 && *c != '('; c++);
+    for (n = 0; n < point_count; n++) {
+        for (; *c != 0 && *c != '('; c++) {}
 
-               if(*c == 0)
-                       return FALSE;
+        if (*c == 0) {
+            return false;
+        }
 
-               c++;
+        c++;
 
-               int x;
-               if(bInverse)
-                       x = point_count - n - 1;
-               else
-                       x = n;
+        int x;
+        if (bInverse) {
+            x = point_count - n - 1;
+        } else {
+            x = n;
+        }
 
-               sscanf(c, "%f %f %f", &point[x].p[0], &point[x].p[1], &point[x].p[2]);
+        sscanf(c, "%f %f %f", &point[x].p[0], &point[x].p[1], &point[x].p[2]);
 
-               ClampFloat(&point[x].p[0]);
-               ClampFloat(&point[x].p[1]);
-               ClampFloat(&point[x].p[2]);
-       }
+        ClampFloat(&point[x].p[0]);
+        ClampFloat(&point[x].p[1]);
+        ClampFloat(&point[x].p[2]);
+    }
 
-       return TRUE;
+    return true;
 }
 
 CPortals::CPortals()
 {
-       memset(this, 0, sizeof(CPortals));
+    memset(this, 0, sizeof(CPortals));
 }
 
 CPortals::~CPortals()
 {
-       Purge();
+    Purge();
 }
 
 void CPortals::Purge()
 {
-       if(node)
-               delete[] node;
-       node = NULL;
-       node_count = 0;
+    if (node) {
+        delete[] node;
+    }
+    node = NULL;
+    node_count = 0;
 }
 
 void CPortals::Load()
 {
-       char buf[LINE_BUF+1];
+    char buf[LINE_BUF + 1];
+
+    memset(buf, 0, LINE_BUF + 1);
 
-       memset(buf, 0, LINE_BUF + 1);
-       
-       Purge();
+    Purge();
 
-       Sys_Printf(MSG_PREFIX "Loading portal file %s.\n", fn);
+    globalOutputStream() << MSG_PREFIX << "Loading portal file " << fn << ".\n";
 
-       FILE *in;
+    FILE *in;
 
-       in = fopen(fn, "rt");
+    in = fopen(fn, "rt");
 
-       if(in == NULL)
-       {
-               Sys_Printf("  ERROR - could not open file.\n");
+    if (in == NULL) {
+        globalOutputStream() << "  ERROR - could not open file.\n";
 
-               return;
-       }
+        return;
+    }
 
-       if(!fgets(buf, LINE_BUF, in))
-       {
-               fclose(in);
+    if (!fgets(buf, LINE_BUF, in)) {
+        fclose(in);
 
-               Sys_Printf("  ERROR - File ended prematurely.\n");
+        globalOutputStream() << "  ERROR - File ended prematurely.\n";
 
-               return;
-       }
+        return;
+    }
 
-       if(strncmp("PRT1", buf, 4) != 0)
-       {
-               fclose(in);
+    if (strncmp("PRT1", buf, 4) != 0) {
+        fclose(in);
 
-               Sys_Printf("  ERROR - File header indicates wrong file type (should be \"PRT1\").\n");
+        globalOutputStream() << "  ERROR - File header indicates wrong file type (should be \"PRT1\").\n";
 
-               return;
-       }
+        return;
+    }
 
-       if(!fgets(buf, LINE_BUF, in))
-       {
-               fclose(in);
+    if (!fgets(buf, LINE_BUF, in)) {
+        fclose(in);
 
-               Sys_Printf("  ERROR - File ended prematurely.\n");
+        globalOutputStream() << "  ERROR - File ended prematurely.\n";
 
-               return;
-       }
+        return;
+    }
 
-       sscanf(buf, "%u", &node_count);
+    sscanf(buf, "%u", &node_count);
 
-       if(node_count > 0xFFFF)
-       {
-               fclose(in);
+    if (node_count > 0xFFFF) {
+        fclose(in);
 
-               node_count = 0;
+        node_count = 0;
 
-               Sys_Printf("  ERROR - Extreme number of nodes, aborting.\n");
+        globalOutputStream() << "  ERROR - Extreme number of nodes, aborting.\n";
 
-               return;
-       }
+        return;
+    }
 
-       if(!fgets(buf, LINE_BUF, in))
-       {
-               fclose(in);
+    if (!fgets(buf, LINE_BUF, in)) {
+        fclose(in);
 
-               node_count = 0;
+        node_count = 0;
 
-               Sys_Printf("  ERROR - File ended prematurely.\n");
+        globalOutputStream() << "  ERROR - File ended prematurely.\n";
 
-               return;
-       }
+        return;
+    }
 
-       unsigned int p_count;
-       sscanf(buf, "%u", &p_count);
+    unsigned int p_count;
+    sscanf(buf, "%u", &p_count);
 
-       if(!fgets(buf, LINE_BUF, in))
-       {
-               fclose(in);
+    if (!fgets(buf, LINE_BUF, in)) {
+        fclose(in);
 
-               node_count = 0;
+        node_count = 0;
 
-               Sys_Printf("  ERROR - File ended prematurely.\n");
+        globalOutputStream() << "  ERROR - File ended prematurely.\n";
 
-               return;
-       }
+        return;
+    }
 
-       unsigned int p_count2;
-       sscanf(buf, "%u", &p_count2);
+    unsigned int p_count2;
+    sscanf(buf, "%u", &p_count2);
 
-       node = new CBspNode[node_count];
+    node = new CBspNode[node_count];
 
-       unsigned int i;
-       for(i = 0; i < p_count; i++)
-       {
-               if(!fgets(buf, LINE_BUF, in))
-               {
-                       fclose(in);
+    unsigned int i;
+    for (i = 0; i < p_count; i++) {
+        if (!fgets(buf, LINE_BUF, in)) {
+            fclose(in);
 
-                       node_count = 0;
+            node_count = 0;
 
-                       Sys_Printf("  ERROR - File ended prematurely.\n");
+            globalOutputStream() << "  ERROR - File ended prematurely.\n";
 
-                       return;
-               }
+            return;
+        }
 
-               unsigned int dummy, node1, node2;
-               sscanf(buf, "%u %u %u", &dummy, &node1, &node2);
+        unsigned int dummy, node1, node2;
+        sscanf(buf, "%u %u %u", &dummy, &node1, &node2);
 
-               node[node1].portal_count++;
-               node[node2].portal_count++;
-       }
+        node[node1].portal_count++;
+        node[node2].portal_count++;
+    }
 
-       for(i = 0; i < p_count2; i++)
-       {
-               if(!fgets(buf, LINE_BUF, in))
-               {
-                       fclose(in);
+    for (i = 0; i < p_count2; i++) {
+        if (!fgets(buf, LINE_BUF, in)) {
+            fclose(in);
 
-                       node_count = 0;
+            node_count = 0;
 
-                       Sys_Printf("  ERROR - File ended prematurely.\n");
+            globalOutputStream() << "  ERROR - File ended prematurely.\n";
 
-                       return;
-               }
+            return;
+        }
 
-               unsigned int dummy, node1;
-               sscanf(buf, "%u %u", &dummy, &node1);
+        unsigned int dummy, node1;
+        sscanf(buf, "%u %u", &dummy, &node1);
 
-               node[node1].portal_count++;
-       }
+        node[node1].portal_count++;
+    }
 
-       for(i = 0; i < node_count; i++)
-               node[i].portal = new CBspPortal[node[i].portal_count];
+    for (i = 0; i < node_count; i++) {
+        node[i].portal = new CBspPortal[node[i].portal_count];
+    }
 
-       fclose(in);
+    fclose(in);
 
-       in = fopen(fn, "rt");
+    in = fopen(fn, "rt");
 
-       fgets(buf, LINE_BUF, in);
-       fgets(buf, LINE_BUF, in);
-       fgets(buf, LINE_BUF, in);
-       fgets(buf, LINE_BUF, in);
+    assert(fgets(buf, LINE_BUF, in));
+    assert(fgets(buf, LINE_BUF, in));
+    assert(fgets(buf, LINE_BUF, in));
+    assert(fgets(buf, LINE_BUF, in));
 
-       unsigned int n;
-       for(n = 0; n < p_count; n++)
-       {
-               if(!fgets(buf, LINE_BUF, in))
-               {
-                       fclose(in);
+    unsigned int n;
+    for (n = 0; n < p_count; n++) {
+        if (!fgets(buf, LINE_BUF, in)) {
+            fclose(in);
 
-                       Purge();
+            Purge();
 
-                       Sys_Printf("  ERROR - Could not find information for portal number %d of %d.\n", n + 1, p_count);
+            globalOutputStream() << "  ERROR - Could not find information for portal number " << n + 1 << " of "
+                                 << p_count << ".\n";
 
-                       return;
-               }
+            return;
+        }
 
-               unsigned int pCount, node1, node2;
-               sscanf(buf, "%u %u %u", &pCount, &node1, &node2);
+        unsigned int pCount, node1, node2;
+        sscanf(buf, "%u %u %u", &pCount, &node1, &node2);
 
-               if(!node[node1].AddPortal(buf, pCount, FALSE))
-               {
-                       fclose(in);
+        if (!node[node1].AddPortal(buf, pCount, false)) {
+            fclose(in);
 
-                       Purge();
+            Purge();
 
-                       Sys_Printf("  ERROR - Information for portal number %d of %d is not formatted correctly.\n", n + 1, p_count);
+            globalOutputStream() << "  ERROR - Information for portal number " << n + 1 << " of " << p_count
+                                 << " is not formatted correctly.\n";
 
-                       return;
-               }
+            return;
+        }
 
-               if(!node[node2].AddPortal(buf, pCount, TRUE))
-               {
-                       fclose(in);
+        if (!node[node2].AddPortal(buf, pCount, true)) {
+            fclose(in);
 
-                       Purge();
+            Purge();
 
-                       Sys_Printf("  ERROR - Information for portal number %d of %d is not formatted correctly.\n", n + 1, p_count);
+            globalOutputStream() << "  ERROR - Information for portal number " << n + 1 << " of " << p_count
+                                 << " is not formatted correctly.\n";
 
-                       return;
-               }
-       }
+            return;
+        }
+    }
 
- for(n = 0; n < p_count2; n++)
-       {
-               if(!fgets(buf, LINE_BUF, in))
-               {
-                       fclose(in);
+    for (n = 0; n < p_count2; n++) {
+        if (!fgets(buf, LINE_BUF, in)) {
+            fclose(in);
 
-                       Purge();
+            Purge();
 
-                       Sys_Printf("  ERROR - Could not find information for portal number %d of %d.\n", n + 1, p_count);
+            globalOutputStream() << "  ERROR - Could not find information for portal number " << n + 1 << " of "
+                                 << p_count << ".\n";
 
-                       return;
-               }
+            return;
+        }
 
-               unsigned int pCount, node1;
-               sscanf(buf, "%u %u", &pCount, &node1);
+        unsigned int pCount, node1;
+        sscanf(buf, "%u %u", &pCount, &node1);
 
-               if(!node[node1].AddPortal(buf, pCount, FALSE))
-               {
-                       fclose(in);
+        if (!node[node1].AddPortal(buf, pCount, false)) {
+            fclose(in);
 
-                       Purge();
+            Purge();
 
-                       Sys_Printf("  ERROR - Information for portal number %d of %d is not formatted correctly.\n", n + 1, p_count);
+            globalOutputStream() << "  ERROR - Information for portal number " << n + 1 << " of " << p_count
+                                 << " is not formatted correctly.\n";
 
-                       return;
-               }
-       }
+            return;
+        }
+    }
 
-       fclose(in);
+    fclose(in);
 }
 
 CBspNode::CBspNode()
 {
-       portal = NULL;
-       portal_count = 0;
-       portal_next = 0;
+    portal = NULL;
+    portal_count = 0;
+    portal_next = 0;
 }
 
 CBspNode::~CBspNode()
 {
-       if(portal != NULL)
-               delete[] portal;
+    if (portal != NULL) {
+        delete[] portal;
+    }
 }
 
 bool CBspNode::AddPortal(char *def, unsigned int pointCnt, bool bInverse)
 {
-       return portal[portal_next++].Build(def, pointCnt, bInverse);
+    return portal[portal_next++].Build(def, pointCnt, bInverse);
 }