Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Click here to view the latest version of this page.


Copyright 2010 Intel Corporation

Use, modification and distribution are subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

#include <string>
#include <fstream>
#include <map>
#include <set>
#include "device.hpp"

struct schematic_database{
  std::vector<device> devices;
  std::map<std::string, std::set<std::size_t> > nets;

//given a vector of devices populate the map of net name to set of device index
inline void extract_netlist(std::map<std::string, std::set<std::size_t> >& nets,
                            std::vector<device>& devices) {
  for(std::size_t i = 0; i < devices.size(); ++i) {
    for(std::size_t j = 0; j < devices[i].terminals.size(); ++j) {
      //create association between net name and device id
      nets[devices[i].terminals[j]].insert(nets[devices[i].terminals[j]].end(), i);

inline void parse_schematic_database(schematic_database& schematic,
                                     std::ifstream& sin) {
  std::vector<device>& devices = schematic.devices;
  while(!sin.eof()) {
    std::string type_id;
    sin >> type_id;
    if(type_id == "Device") {
      device d;
      sin >> d;
    } else if (type_id == "Pin") {
      std::string net;
      sin >> net;
      device d;
      d.type = "PIN";
    } else if (type_id == "") {
  extract_netlist(schematic.nets, devices);