To make smart pointers a part of library.



Title: Letter

Good Day Everybody,

I have an idea, and the idea is, to create a hierarchy of smart poinerts straight into the Gtk header files, the hierarchy that grows together with the hierarchy of objects. Why it's better than using additional C++ libraries? Because such wrappers will always be up-to-date, and also... well, I just like this idea very much.

Now, that's what I meen:

For example, we have:

/* parent.h */ #ifndef __PARENT_H #define __PARENT_H #ifdef __cplusplus extern "C" { #endif typedef struct _Parent Parent; struct _Parent { int X; }; int Parent_Play(Parent *p, int a); #ifdef __cplusplus } #endif #endif // __PARENT_H

and

/* child.h */ #ifndef __CHILD_H #define __CHILD_H #ifdef __cplusplus extern "C" { #endif typedef struct _Child Child; struct _Child; { Parent parent; int Y; }; int Child_Sing(Child *c, int a); #ifdef __cplusplus } #endif #endif // __CHILD_H

And I'd like this files to look like that:

/* parent.h */ #ifndef __PARENT_H #define __PARENT_H #ifdef __cplusplus extern "C" { #endif typedef struct _Parent Parent; struct _Parent { int X; }; int Parent_Play(Parent *p, int a); #ifdef __cplusplus } #ifndef _PROHIBIT_WRAPPERS_ struct ParentPtr { Parent *ptr; ParentPtr() {}; ParentPtr(Parent *src) { ptr = src; } Parent *operator-> () { return ptr; } int Play(int a) { return Parent_Play(ptr, a); } }; #endif // _PROHIBIT_WRAPPERS_ #endif // __cplusplus #endif // __PARENT_H

and

/* child.h */ #ifndef __CHILD_H #define __CHILD_H #ifdef __cplusplus extern "C" { #endif typedef struct _Child Child; struct _Child; { Parent parent; int Y; }; int Child_func(Child *c, int a); #ifdef __cplusplus } #ifndef _PROHIBIT_WRAPPERS_ struct ChildPtr: public ParentPtr { ChildPtr() {}; ChildPtr(Child *src) { ptr = src; } Child *operator-> () { return reinterpret_cast<Child*>(ptr); } int Sing(int a) { return Child_Sing(reinterpret_cast<Child*>(ptr), a); } }; #endif // _PROHIBIT_WRAPPERS_ #endif // __cplusplus #endif // __CHILD_H

Also there may be CPP-style typecast functions, namespaces and everything...

Anton A. Bryl.
ilnur tut by

------ В связи с официальным открытием, интернет-кафе "СоюзONline", расположенное в Центральном доме офицеров, делает подарок своим клиентам - 20%-ю скидку на свои услуги до 15 сентября. Час работы в интернет от 1060 руб! Тел. 226-02-79

[
Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]