[Cmake-commits] [cmake-commits] king committed cmFileCommand.cxx 1.114 1.115

cmake-commits at cmake.org cmake-commits at cmake.org
Mon Jan 5 11:03:43 EST 2009


Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv4250/Source

Modified Files:
	cmFileCommand.cxx 
Log Message:
ENH: Refactor internal file(INSTALL) arg parsing

The internal file(INSTALL) command argument parsing used several
booleans with at most one set to true at a time to track argument
parsing state.  This refactors it to use one enumeration.


Index: cmFileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFileCommand.cxx,v
retrieving revision 1.114
retrieving revision 1.115
diff -C 2 -d -r1.114 -r1.115
*** cmFileCommand.cxx	18 Dec 2008 15:43:23 -0000	1.114
--- cmFileCommand.cxx	5 Jan 2009 16:03:41 -0000	1.115
***************
*** 1689,1697 ****
  {
      std::string stype = "FILES";
!     bool doing_files = false;
!     bool doing_properties = false;
!     bool doing_permissions_file = false;
!     bool doing_permissions_dir = false;
!     bool doing_permissions_match = false;
      bool use_given_permissions_file = false;
      bool use_given_permissions_dir = false;
--- 1689,1696 ----
  {
      std::string stype = "FILES";
!     enum Doing { DoingNone, DoingFiles, DoingProperties,
!                  DoingPermissionsFile, DoingPermissionsDir,
!                  DoingPermissionsMatch };
!     Doing doing = DoingNone;
      bool use_given_permissions_file = false;
      bool use_given_permissions_dir = false;
***************
*** 1718,1725 ****
          i++;
          destination = args[i];
!         doing_files = false;
!         doing_properties = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = false;
          }
        else if ( *cstr == "TYPE" && i < args.size()-1 )
--- 1717,1721 ----
          i++;
          destination = args[i];
!         doing = DoingNone;
          }
        else if ( *cstr == "TYPE" && i < args.size()-1 )
***************
*** 1740,1747 ****
            optional = true;
            }
!         doing_properties = false;
!         doing_files = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = false;
          }
        else if ( *cstr == "RENAME" && i < args.size()-1 )
--- 1736,1740 ----
            optional = true;
            }
!         doing = DoingNone;
          }
        else if ( *cstr == "RENAME" && i < args.size()-1 )
***************
*** 1757,1764 ****
          i++;
          rename = args[i];
!         doing_properties = false;
!         doing_files = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = false;
          }
        else if ( *cstr == "REGEX" && i < args.size()-1 )
--- 1750,1754 ----
          i++;
          rename = args[i];
!         doing = DoingNone;
          }
        else if ( *cstr == "REGEX" && i < args.size()-1 )
***************
*** 1774,1781 ****
            return false;
            }
!         doing_properties = false;
!         doing_files = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = false;
          }
        else if ( *cstr == "EXCLUDE"  )
--- 1764,1768 ----
            return false;
            }
!         doing = DoingNone;
          }
        else if ( *cstr == "EXCLUDE"  )
***************
*** 1791,1795 ****
            }
          current_match_rule->Properties.Exclude = true;
!         doing_permissions_match = true;
          }
        else if ( *cstr == "PROPERTIES"  )
--- 1778,1782 ----
            }
          current_match_rule->Properties.Exclude = true;
!         doing = DoingPermissionsMatch;
          }
        else if ( *cstr == "PROPERTIES"  )
***************
*** 1803,1810 ****
            }
  
!         doing_properties = true;
!         doing_files = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = false;
          }
        else if ( *cstr == "PERMISSIONS" )
--- 1790,1794 ----
            }
  
!         doing = DoingProperties;
          }
        else if ( *cstr == "PERMISSIONS" )
***************
*** 1812,1827 ****
          if(current_match_rule)
            {
!           doing_permissions_match = true;
!           doing_permissions_file = false;
            }
          else
            {
!           doing_permissions_match = false;
!           doing_permissions_file = true;
            use_given_permissions_file = true;
            }
-         doing_properties = false;
-         doing_files = false;
-         doing_permissions_dir = false;
          }
        else if ( *cstr == "DIR_PERMISSIONS" )
--- 1796,1806 ----
          if(current_match_rule)
            {
!           doing = DoingPermissionsMatch;
            }
          else
            {
!           doing = DoingPermissionsFile;
            use_given_permissions_file = true;
            }
          }
        else if ( *cstr == "DIR_PERMISSIONS" )
***************
*** 1836,1843 ****
  
          use_given_permissions_dir = true;
!         doing_properties = false;
!         doing_files = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = true;
          }
        else if ( *cstr == "USE_SOURCE_PERMISSIONS" )
--- 1815,1819 ----
  
          use_given_permissions_dir = true;
!         doing = DoingPermissionsDir;
          }
        else if ( *cstr == "USE_SOURCE_PERMISSIONS" )
***************
*** 1851,1858 ****
            }
  
!         doing_properties = false;
!         doing_files = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = false;
          use_source_permissions = true;
          }
--- 1827,1831 ----
            }
  
!         doing = DoingNone;
          use_source_permissions = true;
          }
***************
*** 1867,1874 ****
            }
  
!         doing_properties = false;
!         doing_files = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = false;
          installer.MatchlessFiles = false;
          }
--- 1840,1844 ----
            }
  
!         doing = DoingNone;
          installer.MatchlessFiles = false;
          }
***************
*** 1891,1895 ****
          return false;
          }
!       else if ( *cstr == "FILES" && !doing_files)
          {
          if(current_match_rule)
--- 1861,1865 ----
          return false;
          }
!       else if(*cstr == "FILES" && doing != DoingFiles)
          {
          if(current_match_rule)
***************
*** 1901,1919 ****
            }
  
!         doing_files = true;
!         doing_properties = false;
!         doing_permissions_file = false;
!         doing_permissions_dir = false;
          }
!       else if ( doing_properties && i < args.size()-1 )
          {
          properties[args[i]] = args[i+1].c_str();
          i++;
          }
!       else if ( doing_files )
          {
          files.push_back(*cstr);
          }
!       else if(doing_permissions_file)
          {
          if(!installer.CheckPermissions(args[i], permissions_file))
--- 1871,1886 ----
            }
  
!         doing = DoingFiles;
          }
!       else if(doing == DoingProperties && i < args.size()-1)
          {
          properties[args[i]] = args[i+1].c_str();
          i++;
          }
!       else if(doing == DoingFiles)
          {
          files.push_back(*cstr);
          }
!       else if(doing == DoingPermissionsFile)
          {
          if(!installer.CheckPermissions(args[i], permissions_file))
***************
*** 1922,1926 ****
            }
          }
!       else if(doing_permissions_dir)
          {
          if(!installer.CheckPermissions(args[i], permissions_dir))
--- 1889,1893 ----
            }
          }
!       else if(doing == DoingPermissionsDir)
          {
          if(!installer.CheckPermissions(args[i], permissions_dir))
***************
*** 1929,1933 ****
            }
          }
!       else if(doing_permissions_match)
          {
          if(!installer.CheckPermissions(
--- 1896,1900 ----
            }
          }
!       else if(doing == DoingPermissionsMatch)
          {
          if(!installer.CheckPermissions(



More information about the Cmake-commits mailing list