a26ce80291
[SVN r44198]
87 lines
2.4 KiB
C++
87 lines
2.4 KiB
C++
/*=============================================================================
|
|
Phoenix V1.2.1
|
|
Copyright (c) 2001-2003 Joel de Guzman
|
|
|
|
Use, modification and distribution is subject to the Boost Software
|
|
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
http://www.boost.org/LICENSE_1_0.txt)
|
|
==============================================================================*/
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include <algorithm>
|
|
#include <string>
|
|
#include <boost/detail/lightweight_test.hpp>
|
|
|
|
#include <boost/config.hpp>
|
|
#ifdef BOOST_NO_STRINGSTREAM
|
|
#include <strstream>
|
|
#define SSTREAM strstream
|
|
std::string GETSTRING(std::strstream& ss)
|
|
{
|
|
ss << ends;
|
|
std::string rval = ss.str();
|
|
ss.freeze(false);
|
|
return rval;
|
|
}
|
|
#else
|
|
#include <sstream>
|
|
#define GETSTRING(ss) ss.str()
|
|
#define SSTREAM stringstream
|
|
#endif
|
|
|
|
//#define PHOENIX_LIMIT 15
|
|
#include <boost/spirit/include/phoenix1_primitives.hpp>
|
|
#include <boost/spirit/include/phoenix1_composite.hpp>
|
|
#include <boost/spirit/include/phoenix1_operators.hpp>
|
|
#include <boost/spirit/include/phoenix1_special_ops.hpp>
|
|
|
|
using namespace phoenix;
|
|
using namespace std;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
int
|
|
main()
|
|
{
|
|
int i100 = 100;
|
|
string hello = "hello";
|
|
const char* world = " world";
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// IO streams
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
vector<int> v;
|
|
v.push_back(1);
|
|
v.push_back(2);
|
|
v.push_back(3);
|
|
v.push_back(4);
|
|
v.push_back(5);
|
|
|
|
char const* msg = "cout assert\n";
|
|
(cout << arg1)(msg);
|
|
(cout << val(hello) << world << ", you da man!\n")();
|
|
for_each(v.begin(), v.end(), cout << arg1 << ',');
|
|
cout << endl;
|
|
|
|
#ifdef __BORLANDC__ // *** See special_ops.hpp why ***
|
|
(cout << arg1 << "this is it, shukz:" << hex_ << arg2 << endl_ << endl_)(msg, i100);
|
|
#else
|
|
(cout << arg1 << "this is it, shukz:" << hex << arg2 << endl << endl)(msg, i100);
|
|
#endif
|
|
int in;
|
|
int out = 12345;
|
|
SSTREAM sstr;
|
|
(sstr << arg1)(out);
|
|
(sstr >> arg1)(in);
|
|
BOOST_TEST(in == out);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// End asserts
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
return boost::report_errors();
|
|
}
|