On 07/09/2016 10:12 PM, Dāvis Mosāns wrote:
>  int main(int ac, char const* const* av)
>  {
> +#if defined(_WIN32)
> +  // Replace streambuf so we can output Unicode to console
> +  cmsys::ConsoleBuf *cbufio = CM_NULLPTR;
> +  cmsys::ConsoleBuf *cbuferr = CM_NULLPTR;
> +  std::streambuf *coutbuf = std::cout.rdbuf();
> +  std::streambuf *cerrbuf = std::cerr.rdbuf();
> +  try {
> +    cbufio = new cmsys::ConsoleBuf();
> +    coutbuf = std::cout.rdbuf(cbufio);
> +    cbuferr = new cmsys::ConsoleBuf(true);
> +    cerrbuf = std::cerr.rdbuf(cbuferr);
> +  } catch (const std::runtime_error& ex) {
> +    std::cerr << "Failed to create ConsoleBuf!" << std::endl
> +              << ex.what() << std::endl;
> +  };
> +#endif
...
> +#if defined(_WIN32)
> +  if (cbufio) {
> +    delete cbufio;
> +    std::cout.rdbuf(coutbuf);
> +  }
> +  if (cbuferr) {
> +    delete cbuferr;
> +    std::cerr.rdbuf(cerrbuf);
> +  }
> +#endif

Please add to KWSys ConsoleBuf a RAII-style helper to perform
the above steps.  Its constructor can take either std::cout
or std:cerr by reference.

Also, please add a test case for this to KWSys itself.  The
test should at least be able to compile and run.  Verification
that output looks right may need to be a manual step though.

Thanks,
-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to