]> source.dussan.org Git - tigervnc.git/commitdiff
Simplify code using range-based for loops
authorPierre Ossman <ossman@cendio.se>
Wed, 3 Apr 2024 20:05:49 +0000 (22:05 +0200)
committerPierre Ossman <ossman@cendio.se>
Mon, 24 Jun 2024 12:17:58 +0000 (14:17 +0200)
These are often more readable as they avoid a lot of the boilerplate of
iterating over fixed arrays or STL containers.

Note that this change is very conservative to avoid noise in "git
blame". Only loops where this is a clear improvement have been
converted.

13 files changed:
common/rfb/CMsgWriter.cxx
common/rfb/DecodeManager.cxx
common/rfb/EncodeManager.cxx
common/rfb/H264Decoder.cxx
common/rfb/SMsgWriter.cxx
common/rfb/Security.cxx
unix/x0vncserver/x0vncserver.cxx
unix/xserver/hw/vnc/XserverDesktop.cc
vncviewer/MonitorIndicesParameter.cxx
vncviewer/OptionsDialog.cxx
vncviewer/parameters.cxx
vncviewer/vncviewer.cxx
win/rfb_win32/SecurityPage.cxx

index 8e3f1c27e1f56414e0aabb0cd74f98e69aac48b2..7d757968012ec96fcb2948fdf56c93795de84e10 100644 (file)
@@ -65,12 +65,11 @@ void CMsgWriter::writeSetPixelFormat(const PixelFormat& pf)
 
 void CMsgWriter::writeSetEncodings(const std::list<uint32_t> encodings)
 {
-  std::list<uint32_t>::const_iterator iter;
   startMsg(msgTypeSetEncodings);
   os->pad(1);
   os->writeU16(encodings.size());
-  for (iter = encodings.begin(); iter != encodings.end(); ++iter)
-    os->writeU32(*iter);
+  for (uint32_t encoding : encodings)
+    os->writeU32(encoding);
   endMsg();
 }
 
index 1e71b8b9837ff0b394a26007a5ab52142bc31a32..63ab987dbd6905c90541a6e23657c2d4f7de2caf 100644 (file)
@@ -97,8 +97,8 @@ DecodeManager::~DecodeManager()
   delete producerCond;
   delete queueMutex;
 
-  for (size_t i = 0; i < sizeof(decoders)/sizeof(decoders[0]); i++)
-    delete decoders[i];
+  for (Decoder* decoder : decoders)
+    delete decoder;
 }
 
 bool DecodeManager::decodeRect(const Rect& r, int encoding,
@@ -347,7 +347,6 @@ void DecodeManager::DecodeThread::worker()
 
 DecodeManager::QueueEntry* DecodeManager::DecodeThread::findEntry()
 {
-  std::list<DecodeManager::QueueEntry*>::iterator iter;
   Region lockedRegion;
 
   if (manager->workQueue.empty())
@@ -356,15 +355,7 @@ DecodeManager::QueueEntry* DecodeManager::DecodeThread::findEntry()
   if (!manager->workQueue.front()->active)
     return manager->workQueue.front();
 
-  for (iter = manager->workQueue.begin();
-       iter != manager->workQueue.end();
-       ++iter) {
-    DecodeManager::QueueEntry* entry;
-
-    std::list<DecodeManager::QueueEntry*>::iterator iter2;
-
-    entry = *iter;
-
+  for (DecodeManager::QueueEntry* entry : manager->workQueue) {
     // Another thread working on this?
     if (entry->active)
       goto next;
@@ -372,8 +363,10 @@ DecodeManager::QueueEntry* DecodeManager::DecodeThread::findEntry()
     // If this is an ordered decoder then make sure this is the first
     // rectangle in the queue for that decoder
     if (entry->decoder->flags & DecoderOrdered) {
-      for (iter2 = manager->workQueue.begin(); iter2 != iter; ++iter2) {
-        if (entry->encoding == (*iter2)->encoding)
+      for (DecodeManager::QueueEntry* entry2 : manager->workQueue) {
+        if (entry2 == entry)
+          break;
+        if (entry->encoding == entry2->encoding)
           goto next;
       }
     }
@@ -381,15 +374,17 @@ DecodeManager::QueueEntry* DecodeManager::DecodeThread::findEntry()
     // For a partially ordered decoder we must ask the decoder for each
     // pair of rectangles.
     if (entry->decoder->flags & DecoderPartiallyOrdered) {
-      for (iter2 = manager->workQueue.begin(); iter2 != iter; ++iter2) {
-        if (entry->encoding != (*iter2)->encoding)
+      for (DecodeManager::QueueEntry* entry2 : manager->workQueue) {
+        if (entry2 == entry)
+          break;
+        if (entry->encoding != entry2->encoding)
           continue;
         if (entry->decoder->doRectsConflict(entry->rect,
                                             entry->bufferStream->data(),
                                             entry->bufferStream->length(),
-                                            (*iter2)->rect,
-                                            (*iter2)->bufferStream->data(),
-                                            (*iter2)->bufferStream->length(),
+                                            entry2->rect,
+                                            entry2->bufferStream->data(),
+                                            entry2->bufferStream->length(),
                                             *entry->server))
           goto next;
       }
index 7a15e0c2442d4133d71c0da411751eb603856b5c..5c1429d2afee91bddfde4159fb99c950f98174bd 100644 (file)
@@ -161,12 +161,10 @@ EncodeManager::EncodeManager(SConnection* conn_)
 
 EncodeManager::~EncodeManager()
 {
-  std::vector<Encoder*>::iterator iter;
-
   logStats();
 
-  for (iter = encoders.begin();iter != encoders.end();iter++)
-    delete *iter;
+  for (Encoder* encoder : encoders)
+    delete encoder;
 }
 
 void EncodeManager::logStats()
index 1f79c4ff96f958f1e343be0e0ef947a8dc3b82d9..26bb93486e2723059a32cf61f3bfffa037bb1621 100644 (file)
@@ -51,17 +51,17 @@ H264Decoder::~H264Decoder()
 void H264Decoder::resetContexts()
 {
   os::AutoMutex lock(&mutex);
-  for (std::deque<H264DecoderContext*>::iterator it = contexts.begin(); it != contexts.end(); it++)
-    delete *it;
+  for (H264DecoderContext* context : contexts)
+    delete context;
   contexts.clear();
 }
 
 H264DecoderContext* H264Decoder::findContext(const Rect& r)
 {
   os::AutoMutex m(&mutex);
-  for (std::deque<H264DecoderContext*>::iterator it = contexts.begin(); it != contexts.end(); it++)
-    if ((*it)->isEqualRect(r))
-      return *it;
+  for (H264DecoderContext* context : contexts)
+    if (context->isEqualRect(r))
+      return context;
   return nullptr;
 }
 
index 43d978533b210bccebdbfe130dd96e4b7d5492f2..0c03b51dc18751530f6c471363752d69d52c92a3 100644 (file)
@@ -508,10 +508,9 @@ void SMsgWriter::writeNoDataRects()
 {
   if (!extendedDesktopSizeMsgs.empty()) {
     if (client->supportsEncoding(pseudoEncodingExtendedDesktopSize)) {
-      std::list<ExtendedDesktopSizeMsg>::const_iterator ri;
-      for (ri = extendedDesktopSizeMsgs.begin();ri != extendedDesktopSizeMsgs.end();++ri) {
+      for (ExtendedDesktopSizeMsg msg : extendedDesktopSizeMsgs) {
         // FIXME: We can probably skip multiple reasonServer entries
-        writeExtendedDesktopSizeRect(ri->reason, ri->result,
+        writeExtendedDesktopSizeRect(msg.reason, msg.result,
                                      client->width(), client->height(),
                                      client->screenLayout());
       }
index 55f766a15bcd5200e394eb29d44ab0a22e022cf7..01191c6537b273efb6e9d4aad1593bd65859e141 100644 (file)
@@ -52,23 +52,22 @@ Security::Security(StringParameter &secTypes)
 const std::list<uint8_t> Security::GetEnabledSecTypes(void)
 {
   list<uint8_t> result;
-  list<uint32_t>::iterator i;
 
   /* Partial workaround for Vino's stupid behaviour. It doesn't allow
    * the basic authentication types as part of the VeNCrypt handshake,
    * making it impossible for a client to do opportunistic encryption.
    * At least make it possible to connect when encryption is explicitly
    * disabled. */
-  for (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++) {
-    if (*i >= 0x100) {
+  for (uint32_t type : enabledSecTypes) {
+    if (type >= 0x100) {
       result.push_back(secTypeVeNCrypt);
       break;
     }
   }
 
-  for (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++)
-    if (*i < 0x100)
-      result.push_back(*i);
+  for (uint32_t type : enabledSecTypes)
+    if (type < 0x100)
+      result.push_back(type);
 
   return result;
 }
@@ -76,11 +75,10 @@ const std::list<uint8_t> Security::GetEnabledSecTypes(void)
 const std::list<uint32_t> Security::GetEnabledExtSecTypes(void)
 {
   list<uint32_t> result;
-  list<uint32_t>::iterator i;
 
-  for (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++)
-    if (*i != secTypeVeNCrypt) /* Do not include VeNCrypt type to avoid loops */
-      result.push_back(*i);
+  for (uint32_t type : enabledSecTypes)
+    if (type != secTypeVeNCrypt) /* Do not include VeNCrypt type to avoid loops */
+      result.push_back(type);
 
   return result;
 }
@@ -107,15 +105,14 @@ bool Security::IsSupported(uint32_t secType)
 
 char *Security::ToString(void)
 {
-  list<uint32_t>::iterator i;
   static char out[128]; /* Should be enough */
   bool firstpass = true;
   const char *name;
 
   memset(out, 0, sizeof(out));
 
-  for (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++) {
-    name = secTypeName(*i);
+  for (uint32_t type : enabledSecTypes) {
+    name = secTypeName(type);
     if (name[0] == '[') /* Unknown security type */
       continue;
 
index aa205d415e9432f51822b2029edfd2e5645888e4..49c951375b6c626acadfc3bc5f897622f05a8643 100644 (file)
@@ -368,10 +368,8 @@ int main(int argc, char** argv)
 
       FileTcpFilter fileTcpFilter(hostsFile);
       if (strlen(hostsFile) != 0)
-        for (std::list<SocketListener*>::iterator i = listeners.begin();
-             i != listeners.end();
-             i++)
-          (*i)->setFilter(&fileTcpFilter);
+        for (SocketListener* listener : listeners)
+          listener->setFilter(&fileTcpFilter);
     }
 
     if (listeners.empty()) {
@@ -395,10 +393,8 @@ int main(int argc, char** argv)
       FD_ZERO(&wfds);
 
       FD_SET(ConnectionNumber(dpy), &rfds);
-      for (std::list<SocketListener*>::iterator i = listeners.begin();
-           i != listeners.end();
-           i++)
-        FD_SET((*i)->getFd(), &rfds);
+      for (SocketListener* listener : listeners)
+        FD_SET(listener->getFd(), &rfds);
 
       server.getSockets(&sockets);
       int clients_connected = 0;
@@ -450,11 +446,9 @@ int main(int argc, char** argv)
       }
 
       // Accept new VNC connections
-      for (std::list<SocketListener*>::iterator i = listeners.begin();
-           i != listeners.end();
-           i++) {
-        if (FD_ISSET((*i)->getFd(), &rfds)) {
-          Socket* sock = (*i)->accept();
+      for (SocketListener* listener : listeners) {
+        if (FD_ISSET(listener->getFd(), &rfds)) {
+          Socket* sock = listener->accept();
           if (sock) {
             server.addSocket(sock);
           } else {
@@ -494,11 +488,8 @@ int main(int argc, char** argv)
   TXWindow::handleXEvents(dpy);
 
   // Run listener destructors; remove UNIX sockets etc
-  for (std::list<SocketListener*>::iterator i = listeners.begin();
-       i != listeners.end();
-       i++) {
-    delete *i;
-  }
+  for (SocketListener* listener : listeners)
+    delete listener;
 
   vlog.info("Terminated");
   return 0;
index a38087b415ad319051f772c9ca9d931ebe9f99ce..0c2b5bf99c0d0cc742121985c6c69770d0f72d11 100644 (file)
@@ -88,11 +88,8 @@ XserverDesktop::XserverDesktop(int screenIndex_,
   server = new VNCServerST(name, this);
   setFramebuffer(width, height, fbptr, stride_);
 
-  for (std::list<SocketListener*>::iterator i = listeners.begin();
-       i != listeners.end();
-       i++) {
-    vncSetNotifyFd((*i)->getFd(), screenIndex, true, false);
-  }
+  for (SocketListener* listener : listeners)
+    vncSetNotifyFd(listener->getFd(), screenIndex, true, false);
 }
 
 XserverDesktop::~XserverDesktop()
index d215d4c2fe95e06e6a982cef396fd34521731cd3..fe9a54a63ccfa49b46dd10dee9547e53db6b7205 100644 (file)
@@ -73,7 +73,6 @@ std::set<int> MonitorIndicesParameter::getParam()
 
 bool MonitorIndicesParameter::setParam(const char* value)
 {
-    int index;
     std::set<int> indices;
 
     if (!parseIndices(value, &indices, true)) {
@@ -81,9 +80,8 @@ bool MonitorIndicesParameter::setParam(const char* value)
         return false;
     }
 
-    for (std::set<int>::iterator it = indices.begin(); it != indices.end(); it++) {
-        index = *it + 1;
-
+    for (int index : indices) {
+        index += 1;
         if (index <= 0 || index > Fl::screen_count())
             vlog.error(_("Monitor index %d does not exist"), index);
     }
@@ -111,16 +109,14 @@ bool MonitorIndicesParameter::setParam(std::set<int> indices)
     int bytesWritten = 0;
     char const * separator = "";
 
-    for (std::set<int>::iterator index = configIndices.begin();
-         index != configIndices.end();
-         index++)
+    for (int configIndex : configIndices)
     {
         bytesWritten += snprintf(
             buf+bytesWritten,
             BUF_MAX_LEN-bytesWritten,
             "%s%u",
             separator,
-            (*index)+1
+            configIndex+1
         );
 
         separator = ",";
index 56bce3d9cfb85c139e9a50bc246b4f4bff30d474..ec274e74780950f16bd9a9a8a32bceecf1590660 100644 (file)
@@ -218,10 +218,8 @@ void OptionsDialog::loadOptions(void)
   Security security(SecurityClient::secTypes);
 
   list<uint8_t> secTypes;
-  list<uint8_t>::iterator iter;
 
    list<uint32_t> secTypesExt;
-   list<uint32_t>::iterator iterExt;
 
   encNoneCheckbox->value(false);
 #ifdef HAVE_GNUTLS
@@ -237,8 +235,8 @@ void OptionsDialog::loadOptions(void)
   authPlainCheckbox->value(false);
 
   secTypes = security.GetEnabledSecTypes();
-  for (iter = secTypes.begin(); iter != secTypes.end(); ++iter) {
-    switch (*iter) {
+  for (uint8_t type : secTypes) {
+    switch (type) {
     case secTypeNone:
       encNoneCheckbox->value(true);
       authNoneCheckbox->value(true);
@@ -251,8 +249,8 @@ void OptionsDialog::loadOptions(void)
   }
 
   secTypesExt = security.GetEnabledExtSecTypes();
-  for (iterExt = secTypesExt.begin(); iterExt != secTypesExt.end(); ++iterExt) {
-    switch (*iterExt) {
+  for (uint32_t type : secTypesExt) {
+    switch (type) {
     case secTypePlain:
       encNoneCheckbox->value(true);
       authPlainCheckbox->value(true);
index 518d3a257c8c93ee076ef95977a1886df71be523..a03623db74edaebd2efd068bcede8f4c48793dc4 100644 (file)
@@ -214,7 +214,7 @@ static VoidParameter* readOnlyParameterArray[] = {
 };
 
 // Encoding Table
-static struct {
+static const struct EscapeMap {
   const char first;
   const char second;
 } replaceMap[] = { { '\n', 'n' },
@@ -230,15 +230,15 @@ static bool encodeValue(const char* val, char* dest, size_t destSize) {
     
     // Check for sequences which will need encoding
     normalCharacter = true;
-    for (size_t j = 0; j < sizeof(replaceMap)/sizeof(replaceMap[0]); j++) {
+    for (EscapeMap esc : replaceMap) {
 
-      if (val[i] == replaceMap[j].first) {
+      if (val[i] == esc.first) {
         dest[pos] = '\\';
         pos++;
         if (pos >= destSize)
           return false;
 
-        dest[pos] = replaceMap[j].second;
+        dest[pos] = esc.second;
         normalCharacter = false;
         break;
       }
@@ -269,9 +269,9 @@ static bool decodeValue(const char* val, char* dest, size_t destSize) {
       bool escapedCharacter;
       
       escapedCharacter = false;
-      for (size_t j = 0; j < sizeof(replaceMap)/sizeof(replaceMap[0]); j++) {
-        if (val[i+1] == replaceMap[j].second) {
-          dest[pos] = replaceMap[j].first;
+      for (EscapeMap esc : replaceMap) {
+        if (val[i+1] == esc.second) {
+          dest[pos] = esc.first;
           escapedCharacter = true;
           i++;
           break;
@@ -654,24 +654,24 @@ void saveViewerParameters(const char *filename, const char *servername) {
   }
   fprintf(f, "ServerName=%s\n", encodingBuffer);
 
-  for (size_t i = 0; i < sizeof(parameterArray)/sizeof(VoidParameter*); i++) {
-    if (dynamic_cast<StringParameter*>(parameterArray[i]) != nullptr) {
-      if (!encodeValue(*(StringParameter*)parameterArray[i],
+  for (VoidParameter* param : parameterArray) {
+    if (dynamic_cast<StringParameter*>(param) != nullptr) {
+      if (!encodeValue(*(StringParameter*)param,
           encodingBuffer, buffersize)) {
         fclose(f);
         throw Exception(_("Failed to save \"%s\": %s"),
-                        parameterArray[i]->getName(),
+                        param->getName(),
                         _("Could not encode parameter"));
       }
-      fprintf(f, "%s=%s\n", ((StringParameter*)parameterArray[i])->getName(), encodingBuffer);
-    } else if (dynamic_cast<IntParameter*>(parameterArray[i]) != nullptr) {
-      fprintf(f, "%s=%d\n", ((IntParameter*)parameterArray[i])->getName(), (int)*(IntParameter*)parameterArray[i]);
-    } else if (dynamic_cast<BoolParameter*>(parameterArray[i]) != nullptr) {
-      fprintf(f, "%s=%d\n", ((BoolParameter*)parameterArray[i])->getName(), (int)*(BoolParameter*)parameterArray[i]);
+      fprintf(f, "%s=%s\n", ((StringParameter*)param)->getName(), encodingBuffer);
+    } else if (dynamic_cast<IntParameter*>(param) != nullptr) {
+      fprintf(f, "%s=%d\n", ((IntParameter*)param)->getName(), (int)*(IntParameter*)param);
+    } else if (dynamic_cast<BoolParameter*>(param) != nullptr) {
+      fprintf(f, "%s=%d\n", ((BoolParameter*)param)->getName(), (int)*(BoolParameter*)param);
     } else {      
       fclose(f);
       throw Exception(_("Failed to save \"%s\": %s"),
-                      parameterArray[i]->getName(),
+                      param->getName(),
                       _("Unknown parameter type"));
     }
   }
index 6a0093f7c91f47f8f3d1088c5c10cb5153a22866..1639665958b25e8b35494de8558026792e75f4ff 100644 (file)
@@ -352,12 +352,12 @@ static void init_fltk()
   count = 0;
 
   // FIXME: Follow icon theme specification
-  for (size_t i = 0;i < sizeof(icon_sizes)/sizeof(icon_sizes[0]);i++) {
+  for (int icon_size : icon_sizes) {
       char icon_path[PATH_MAX];
       bool exists;
 
       sprintf(icon_path, "%s/icons/hicolor/%dx%d/apps/tigervnc.png",
-              CMAKE_INSTALL_FULL_DATADIR, icon_sizes[i], icon_sizes[i]);
+              CMAKE_INSTALL_FULL_DATADIR, icon_size, icon_size);
 
       struct stat st;
       if (stat(icon_path, &st) != 0)
@@ -777,10 +777,8 @@ int main(int argc, char** argv)
       while (sock == nullptr) {
         fd_set rfds;
         FD_ZERO(&rfds);
-        for (std::list<SocketListener*>::iterator i = listeners.begin();
-             i != listeners.end();
-             i++)
-          FD_SET((*i)->getFd(), &rfds);
+        for (SocketListener* listener : listeners)
+          FD_SET(listener->getFd(), &rfds);
 
         int n = select(FD_SETSIZE, &rfds, nullptr, nullptr, nullptr);
         if (n < 0) {
@@ -792,11 +790,9 @@ int main(int argc, char** argv)
           }
         }
 
-        for (std::list<SocketListener*>::iterator i = listeners.begin ();
-             i != listeners.end();
-             i++)
-          if (FD_ISSET((*i)->getFd(), &rfds)) {
-            sock = (*i)->accept();
+        for (SocketListener* listener : listeners)
+          if (FD_ISSET(listener->getFd(), &rfds)) {
+            sock = listener->accept();
             if (sock)
               /* Got a connection */
               break;
index 2571a4d62356d3f41d3bb0404b11ccff5b91dd40..a6f026cf2cebaa28cd4ff9cdc1940f5380035645 100644 (file)
@@ -48,7 +48,6 @@ void
 SecurityPage::initDialog()
 {
   list<uint8_t> secTypes;
-  list<uint8_t>::iterator i;
 
   if (isItemChecked(IDC_ENC_X509))
     enableX509Dialogs();
@@ -58,8 +57,8 @@ SecurityPage::initDialog()
   secTypes = security->GetEnabledSecTypes();
 
   /* Process non-VeNCrypt sectypes */
-  for (i = secTypes.begin(); i != secTypes.end(); i++) {
-    switch (*i) {
+  for (uint8_t type : secTypes) {
+    switch (type) {
     case secTypeNone:
       enableAuthMethod(IDC_ENC_NONE, IDC_AUTH_NONE);
       break;
@@ -70,13 +69,12 @@ SecurityPage::initDialog()
   }
 
   list<uint32_t> secTypesExt;
-  list<uint32_t>::iterator iext;
 
   secTypesExt = security->GetEnabledExtSecTypes();
 
   /* Process VeNCrypt subtypes */
-  for (iext = secTypesExt.begin(); iext != secTypesExt.end(); iext++) {
-    switch (*iext) {
+  for (uint32_t type : secTypesExt) {
+    switch (type) {
     case secTypePlain:
       enableAuthMethod(IDC_ENC_NONE, IDC_AUTH_PLAIN);
       break;