21 Şubat 2017 Salı

asio signal_set Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/asio/signal_set.hpp>
Constructor
Şöyle yaparız
// Construct a signal set registered for process termination.
boost::asio::signal_set signals (ios, SIGINT );
async_wait metodu
Şöyle yaparız
// Start an asynchronous wait for one of the signals to occur.
signals.async_wait (handler);
Handler şöyledir.
void handler (const boost::system::error_code& error , int signal_number)
{
    std::cout << "handling signal " << signal_number << std::endl;
}
io_service nesnesini başlatmak
io_service nesnesinin run() veya run_one() metod çağrılmalıdır. Tek thread'li uygulamalarda şöyle yaparız.
while( true )
{
  ...
  ios.run_one();
}

17 Şubat 2017 Cuma

geometry ring Sınıfı

Tanımlama
Şöyle yaparız.
typedef boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>
  point_t;

// CCW without repeating first vertex.
typedef boost::geometry::model::ring<point_t, false, false> ring_t;
Constructor
Şöyle yaparız.
ring_t polyA;



geometry append metodu

Giriş
Kolay kullanım için şu satırı dahil ederiz.
#include <boost/geometry.hpp>
Şu satırı dahil ederiz.
#include <boost/geometry/algorithms/append.hpp>
Polygon'a Ekleme - Nokta
Örnek 1
Şöyle yaparız.
using PointType = boost::geometry::model::d2::point_xy <double>;
using PolygonType = boost::geometry::model::polygon <PointType>;

// Construct
PolygonType polygon;

// Points specified in clockwise order
boost::geometry::append (polygon, PointType {0,0});
Şöyle yaparız.
boost::geometry::append (polygon, PointType (0, 0) );
Ring'e Ekleme - Nokta
Örnek 1
Şöyle yaparız.
typedef boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>
 point_t;

// CCW without repeating first vertex.
typedef boost::geometry::model::ring<point_t, false, false> ring_t;

ring_t polyA;

boost::geometry::append(polyA, point_t{ -1, -1 });
Polygon'a Ekleme - Dizi
C dizisini poylgon kütüphanesine tanıtmak için şöyle yaparız.
BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(boost::geometry::cs::cartesian);

BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(boost::geometry::cs::cartesian)
Şöyle yaparız.
double points[][2] = {{0.0, 0.0},
                      {1.0, 0.0},
                      {1.0, 1.0},
                      {0.0, 1.0}};

boost::geometry::append(polygon, points);

15 Şubat 2017 Çarşamba

operators

Giriş
Şu satırı dahil ederiz.
#include <boost/operators.hpp>
equality_comparable Sınıfı
Sadece == operatorünü tanımlama yeterli. Şöyle yaparız.
class Foo //to get != operator for free
    : public boost::equality_comparable<Foo>
{
  friend bool operator == ( Foo const & lhs, Foo const & rhs );    

  public:
    ...  
};
// Implementation of equality operator
bool operator == (Foo const & lhs, Foo const & rhs)
{
    return ...;
}
operators Sınıfı
Şöyle yaparız.
class A : boost::operators<A>
{
public:
    bool operator < (const A&) const { return false; }
};
operators sınıfı less_than_comparable sınıfından kalıtır. Dolayısıyla >, >= ve >= metodlarını sağlar.
template <class T, class B = operators_detail::empty_base<T> >
struct less_than_comparable1 : B
{
  friend bool operator>(const T& x, const T& y)
  { return y < x; }
  friend bool operator<=(const T& x, const T& y)
  { return !static_cast<bool>(y < x); }
  friend bool operator>=(const T& x, const T& y)
  { return !static_cast<bool>(x < y); }
};
totaly_ordered Sınıfı
< ve == operatörü tanımlanır. Şöyle yaparız.
class Foo : public boost::totally_ordered<Foo>
{
public:
  
  friend bool operator< (const Foo& lhs, const Foo& rhs)
  {
    ...
  }
  friend bool operator== (const Foo& lhs, const Foo& rhs)  {
    ...
  }

};

13 Şubat 2017 Pazartesi

interprocess managed_windows_shared_memory Sınıfı

Constructor
Şöyle yaparız.
try {
  managed_windows_shared_memory segment(open_only, "...");
}
catch (boost::interprocess::interprocess_exception &ex)
{
  ...
}

10 Şubat 2017 Cuma

iostreams file_descriptor_sink Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/iostreams/device/file_descriptor.hpp>
Constructor
Şöyle yaparız.
bis::file_descriptor_sink fd_sink (..., bis::close_handle);
Stream ile Kullanım
Bu sınıf bir stream ile kullanılabilir. Şu satırı dahil ederiz.
#include <boost/iostreams/stream.hpp>
Örnek 1 - Stream Constructor
Şöyle yaparız.
bis::stream<bis::iostreams::file_descriptor_source> stream (fd_sink);
Stream normal işlemlerde tabi tutulur.
stream << "...";

8 Şubat 2017 Çarşamba

date_time second_clock Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/date_time/posix_time/posix_time.hpp>
local_time metodu
Şöyle yaparız.
boost::posix_time::ptime p = boost::posix_time::second_clock::local_time ();
universal_time metodu
Şöyle yaparız.
boost::posix_time::ptime p = boost::posix_time::second_clock::universal_time() 
+ boost::posix_time::seconds(sec);
Gece yarısından beri geçen saniyeyi bulmak için şöyle yaparız
p.time_of_day ().total_seconds ();

Aynı şeyi C++11 chrono ile yapmak için şöyle yaparız. Tabii bu kod daha zor.
(high_resolution_clock::now ().time_since_epoch () / seconds (1) )% 86400