static int main_(int /* argc */, char** /*argv*/)
{
    ff::sinks::speech_sink sink(SPF_IS_FILENAME);

#ifdef FASTFORMAT_USE_VOLE
    vole::object    speaker(comstl::interface_cast<IDispatch>(sink.get()));
#endif /* FASTFORMAT_USE_VOLE */

#ifdef FASTFORMAT_USE_VOLE
    { for(long rate = 0; 5 != rate; ++rate)
    {
        speaker.put_property(L"Rate", rate * 2);
#endif /* FASTFORMAT_USE_VOLE */

        ff::fmt(sink
            ,   FF_STR("This is a demonstration of FastFormat's ability to speak, compiled with {0}, in configuration {1}, and with the {2} encoding")
            /* {0}: compiler name */
            ,   FF_STRINGIZE(STLSOFT_COMPILER_VERSION_STRING)
            /* {1}: configuration */
            ,   FF_STRINGIZE(FF_CONFIGURATION)
            /* {2}: encoding */
            ,   FF_STRINGIZE(FF_ENCODING)
            );

#ifdef FASTFORMAT_USE_VOLE
    }}
#endif /* FASTFORMAT_USE_VOLE */

    return EXIT_SUCCESS;
}
static void test_1_10()
{
    std::string sink;

    ff::flush(ff::fmt(sink, FF_STR("{0}"), FF_STR("")));

    XTESTS_TEST_INTEGER_EQUAL(0u, sink.size());
    XTESTS_TEST_STRING_EQUAL("", sink.data());

    ff::flush(ff::fmt(sink, FF_STR("{0}"), FF_STR("abc")));

    XTESTS_TEST_INTEGER_EQUAL(3u, sink.size());
    XTESTS_TEST_STRING_EQUAL("abc", sink.data());

    ff::flush(ff::fmt(sink, FF_STR("{0}"), FF_STR("")));

    XTESTS_TEST_INTEGER_EQUAL(3u, sink.size());
    XTESTS_TEST_STRING_EQUAL("abc", sink.data());
}
Beispiel #3
0
static int main_(int /* argc */, char** /* argv */)
{
    {
#if 1
        FILE* file = stdout;

        ff::fmtln(file
#else /* ? 0 */
        ff::fmtln(ff::FILE_ref(stdout, ff::buffered)
#endif /* 0 */
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

    {
        FILE* file = stdout;

        ff::fmt(file
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
        puts("");
    }

    {
        ff::fmt(ff::to_sink(stdout)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
        puts("");
    }

    try
    {
        FILE* file = stdin;

        ff::fmt(file
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
        puts("");
    }
    catch(ff::sink_output_exception& x)
    {
        FILE* file = stderr;

        ff::writeln(file, x);
    }

#ifdef DO_OTHER_TYPE_TESTS

# if 0
    {
        FILE* sink = stdout;

        ff::fmt(ff::flushed(stdout)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
        puts("");
    }

    {
        ff::fmt(ff::flushed(std_cout)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
        puts("");
    }

    {
        std_string sink;

        ff::fmt(ff::flushed(sink)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

    {
        stlsoft::auto_buffer<ff::ff_char_t, 1000> sink(0);

        ff::fmt(ff::flushed(sink)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

    {
        ff::ff_char_t buff[1001];

        ff::sinks::char_buffer_sink sink(STLSOFT_NUM_ELEMENTS(buff), buff);

        ff::fmt(ff::flushed(sink)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

    {
        ff::ff_char_t buff[1001];

        ff::sinks::c_string_sink sink(STLSOFT_NUM_ELEMENTS(buff), buff);

        ff::fmt(ff::flushed(sink)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

    {
        ff::sinks::null_sink sink;

        ff::fmt(ff::flushed(sink)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

#  if defined(WIN32) || \
      defined(WIN64)

    {
        CComBSTR    sink;

        ff::fmt(ff::flushed(sink)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

    {
        CString sink;

        ff::fmt(ff::flushed(sink)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

    {
        ff::sinks::OutputDebugString_sink   sink;

        ff::fmtln(ff::flushed(sink)
            , FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def"));
    }

#  endif
# else
    {
        FILE* sink = stdout;

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
        puts("");
    }

    {
        ff::flush(
            ff::fmt(
                std_cout
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
        puts("");
    }

    {
        std_string sink;

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
    }

#  if 0
    {
        stlsoft::auto_buffer<ff::ff_char_t, 1000> sink(0);

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
    }
#  endif /* 0 */

    {
        ff::ff_char_t buff[1001];

        ff::sinks::char_buffer_sink sink(STLSOFT_NUM_ELEMENTS(buff), buff);

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
    }

    {
        ff::ff_char_t buff[1001];

        ff::sinks::c_string_sink sink(STLSOFT_NUM_ELEMENTS(buff), buff);

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
    }

    {
        ff::sinks::null_sink sink;

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
    }

#  if defined(WIN32) || \
      defined(WIN64)

    {
        CComBSTR    sink;

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
    }

#   ifdef USE_MFC
    {
        CString sink;

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
    }
#   endif

    {
        ff::sinks::OutputDebugString_sink   sink;

        ff::flush(
            ff::fmt(
                sink
            ,   FF_STR("Param #1: {0}; param #2: {1}; param #1 again: {0}"), FF_STR("abc"), FF_STR("def")
            )
        );
    }

#  endif
# endif
#endif /* DO_OTHER_TYPE_TESTS */

    return EXIT_SUCCESS;
}