+ Rename output executables to match directory structure + Remove libraries for small examples + Supress -Wreturn-type warnings for singleton that is intentionally not copyable
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
 | 
						|
#include <iostream>
 | 
						|
 | 
						|
#include "abstract-factory.hpp"
 | 
						|
 | 
						|
Part* AbstractFactory::requestPart() {
 | 
						|
  // Create a new part
 | 
						|
  Part * newPart = makePart();
 | 
						|
  // Increment the QTY for part in AbstractFactory::inventory base class
 | 
						|
  // + If the item is not in the inventory map, this will also add it first.
 | 
						|
  inventory[newPart->getName()]++;
 | 
						|
  // Make the requested part
 | 
						|
  return newPart;
 | 
						|
}
 | 
						|
 | 
						|
Part* AbstractFactory::requestPart(std::string partName, float price)
 | 
						|
{
 | 
						|
  Part * newPart = makePart(partName, price);
 | 
						|
  inventory[newPart->getName()]++;
 | 
						|
  return newPart;
 | 
						|
}
 | 
						|
 | 
						|
void AbstractFactory::showStock() const
 | 
						|
{
 | 
						|
  for (const auto &item : inventory) {
 | 
						|
    if (item.first.empty()) continue; // Don't show an empty item
 | 
						|
    std::cout << item.first << " QTY in stock: " << item.second << std::endl;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/*****************************************************************************/
 | 
						|
// Gear
 | 
						|
 | 
						|
Part* GearFactory::makePart() {
 | 
						|
  return new Gear();
 | 
						|
}
 | 
						|
 | 
						|
Part* GearFactory::makePart(std::string name, float price)
 | 
						|
{
 | 
						|
  return new Gear(name, price);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/*****************************************************************************/
 | 
						|
// Spring
 | 
						|
 | 
						|
Part* SpringFactory::makePart() {
 | 
						|
  return new Spring();
 | 
						|
}
 | 
						|
 | 
						|
Part *SpringFactory::makePart(std::string name, float price)
 | 
						|
{
 | 
						|
  return new Spring(name, price);
 | 
						|
}
 |