meta/info: split the system info printing into a unit

This commit is contained in:
Danny Robson 2019-06-20 11:42:25 +10:00
parent 2ab194cdc0
commit 91cc9ea3fe
4 changed files with 66 additions and 22 deletions

View File

@ -152,6 +152,9 @@ list (APPEND sources
swapchain.hpp
traits.cpp
traits.hpp
meta/info.cpp
meta/info.hpp
)

41
meta/info.cpp Normal file
View File

@ -0,0 +1,41 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright:
* 2017-2018, Danny Robson <danny@nerdcruft.net>
*/
#include "info.hpp"
#include "load/ostream.hpp"
#include "instance.hpp"
#include "physical_device.hpp"
#include "ostream.hpp"
#include "load/vendor.hpp"
#include "load/vtable.hpp"
#include <cruft/util/iterator/infix.hpp>
#include <ostream>
///////////////////////////////////////////////////////////////////////////////
std::ostream&
cruft::vk::meta::operator<< (std::ostream &os, info const &)
{
cruft::vk::instance instance;
os << "[ "
<< "available_layers: [ "
<< cruft::iterator::make_infix (cruft::vk::instance::available_layers ())
<< " ] }"
<< ", instance: " << instance
<< ", devices: [ " << cruft::iterator::make_infix (cruft::vk::physical_device::find (instance)) << " ], "
<< " } ]\n";
return os;
}

19
meta/info.hpp Normal file
View File

@ -0,0 +1,19 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright:
* 2019, Danny Robson <danny@nerdcruft.net>
*/
#pragma once
#include <iosfwd>
namespace cruft::vk::meta {
struct info {};
std::ostream& operator<< (std::ostream &os, info const&);
};

View File

@ -4,36 +4,17 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright:
* 2017-2018, Danny Robson <danny@nerdcruft.net>
* 2019, Danny Robson <danny@nerdcruft.net>
*/
#include <cruft/util/iterator/infix.hpp>
#include "load/ostream.hpp"
#include "load/vtable.hpp"
#include "instance.hpp"
#include "physical_device.hpp"
#include "ostream.hpp"
#include "../meta/info.hpp"
#include <iostream>
#include "../load/vendor.hpp"
#include "load/vtable.hpp"
///////////////////////////////////////////////////////////////////////////////
int
main (int, char**)
{
cruft::vk::instance instance;
std::cout << "[ "
<< "available_layers: [ "
<< cruft::iterator::make_infix (cruft::vk::instance::available_layers ())
<< " ] }"
<< ", instance: " << instance
<< ", devices: [ " << cruft::iterator::make_infix (cruft::vk::physical_device::find (instance)) << " ], "
<< " } ]\n";
std::cout << cruft::vk::meta::info {} << '\n';
}