/* Copyright Bruno da Silva de Oliveira 2003. 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) */ #ifndef OPAQUE_H #define OPAQUE_H #include namespace opaque { struct C { C(int v): value(v) {} int value; }; inline C* new_C() { return new C(10); } inline C* new_C_zero() { return new C(0); } inline int get(C* c) { return c->value; } struct D { D(double v): value(v) {} double value; }; struct A { D* new_handle() { return new D(3.0); } double get(D* d) { return d->value; } int f(int x=0) { return x; } }; } #endif