torc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
XdlDiffMain.cpp
Go to the documentation of this file.
1 // Torc - Copyright 2011-2013 University of Southern California. All Rights Reserved.
2 // $HeadURL$
3 // $Id$
4 
5 // This program is free software: you can redistribute it and/or modify it under the terms of the
6 // GNU General Public License as published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
10 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
11 // the GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License along with this program. If
14 // not, see <http://www.gnu.org/licenses/>.
15 
16 /// \file
17 /// \brief Source for a PhysicalDiff command line utility.
18 /// \details Opens up two designs with the XDLImporter and then compares them with PhysicalDiff.
19 
20 #include <fstream>
21 #include "PhysicalDiff.hpp"
24 
25 /// \brief Main entry point for the xdldiff tool.
26 int main(int argc, char *argv[]) {
27  typedef std::string string;
28  torc::common::DirectoryTree directoryTree(argv[0]);
29 
30  if(argc != 3) {
31  std::cout << "Usage: " << argv[0] << " <xdlfile1> <xdlfile2>" << std::endl;
32  return 1;
33  }
34  string argleft = argv[1];
35  string argright = argv[2];
36 
37  // create the appropriate file paths
38  boost::filesystem::path leftPath = directoryTree.getExecutablePath() / argleft;
39  boost::filesystem::path rightPath = directoryTree.getExecutablePath() / argright;
40 
41  std::fstream fileLeft(leftPath.string().c_str());
42  std::fstream fileRight(rightPath.string().c_str());
43 
44  // import the designs
46 
47  importer(fileLeft, leftPath.string());
48  torc::physical::DesignSharedPtr designPtrLeft = importer.getDesignPtr();
49 
50  importer(fileRight, rightPath.string());
51  torc::physical::DesignSharedPtr designPtrRight = importer.getDesignPtr();
52 
53  // create the physical diff object and perform the diff.
54  torc::PhysicalDiff diff(std::cout);
55  bool result = diff.diff(designPtrLeft, designPtrRight);
56 
57  if(result) std::cout << "No differences found." << std::endl;
58 
59  return 0;
60 }
61 
DesignSharedPtr getDesignPtr(void)
Returns a shared pointer for the design.
Header for the DirectoryTree class.
PhysicalDiff class for comparing physical netlists.
std::string string
Header for the XdlImporter class.
Encapsulation of filesystem paths that are used by the library.
boost::filesystem::path path
boost::shared_ptr< Design > DesignSharedPtr
Shared pointer encapsulation of a Design.
int main(int argc, char *argv[])
Main entry point for the xdldiff tool.
Definition: XdlDiffMain.cpp:26
Importer from XDL format into a physical design.
Diff utility class for comparing physical netlists.
bool diff(const DesignSharedPtr &left, const DesignSharedPtr &right)
Top level call to diff two designs.
static const boost::filesystem::path & getExecutablePath(void)
Returns the absolute path to the executable directory.