// -*- c++ -*- /* Copyright 2003, The libsigc++ Development Team * Assigned to public domain. Use as you wish without restriction. */ #include #include #include #include #include #include #include #include #include #include SIGC_USING_STD(cout) SIGC_USING_STD(endl) SIGC_USING_STD(string) void print(const std::string &str) { std::cout << "print(str="< printer; SigC::Signal1 sig1; SigC::Signal1 sig2; SigC::Signal0 sig3; SigC::Signal1 sig4; // SigC::SignalN, SigC::slot printer.connect(SigC::slot(print)); printer.connect(SigC::slot(obj1, &foo::test_void_string)); printer.connect(SigC::slot(obj2, &foo::test_void_string)); printer("hello world"); // SigC::Connection, SigC::slot_class SigC::Connection con = sig1.connect(SigC::slot_class(obj3, &blah::test_int_int)); std::cout << sig1(1) << std::endl; con.disconnect(); sig1(12345); // SigC::method_slot SigC::slot(&foo::test_void_string)(obj1, "hello again"); SigC::slot(&foo::test_void_string)(obj2, "hello again"); // SigC::retype_return sig1.connect(SigC::retype_return(SigC::slot(obj2, &bar::test_float_int))); std::cout << sig1(1) << std::endl; // SigC::hide_return sig2.connect(SigC::hide_return(SigC::slot(obj2, &bar::test_float_float))); sig2(2); // SigC::hide sig1.clear(); sig1.connect(SigC::hide(SigC::slot(obj2, &foo::test_int))); std::cout << sig1(1) << std::endl; // SigC::bind sig3.connect(SigC::bind(SigC::slot(obj2, &bar::test_float_int), 3)); std::cout << sig3() << std::endl; // SigC::bind_return sig3.clear(); sig3.connect(SigC::bind_return(SigC::slot(obj1, &foo::test_void), 1.234)); std::cout << sig3() << std::endl; // SigC::retype sig1.clear(); sig1.connect(SigC::retype(SigC::slot(obj2, &bar::test_float_float))); std::cout << sig1(1) << std::endl; sig4.connect(SigC::retype(SigC::slot(obj2, &bar::test_float_float))); std::cout << sig4(1) << std::endl; return 0; }