digitalmars.D - owner pointers
- Sclytrack (36/36) Nov 29 2009 Assume: no garbage collector
- Denis Koroskin (2/40) Nov 29 2009 What's the point of this post?
Assume: no garbage collector
----------------------------
Let us say that we have two types of pointers. Owner pointers and view pointers.
owner(pointer(int))
view(pointer(int))
owner(pointer(int)) routineA()
{
owner(pointer(int)) a = malloc();
//The compiler checks that ownership is returned or passed on to
//another routine. (Possible?)
return a;
}
-------------------- //Yes 20 long "-"
void doStuffA( view(pointer(int)) param)
{
//not in charge of the deallocation.
}
void doStuffB( owner(pointer(int)) param)
{
free(param);
}
void routineB()
{
owner(pointer(int)) a = malloc();
doStuffA(a);
doStuffB(a); //Passes on ownership.
//routineB is no longer in charge of the deallocation, because of doStuffB.
}
--------------------
void usingStuff()
{
owner(pointer(int)) a = routineA();
//You are in charge of the deallocation.
free(a);
}
--------------------
Nov 29 2009
On Sun, 29 Nov 2009 13:10:27 +0300, Sclytrack <idiot hotmail.com> wrote:
Assume: no garbage collector
----------------------------
Let us say that we have two types of pointers. Owner pointers and view
pointers.
owner(pointer(int))
view(pointer(int))
owner(pointer(int)) routineA()
{
owner(pointer(int)) a = malloc();
//The compiler checks that ownership is returned or passed on to
//another routine. (Possible?)
return a;
}
-------------------- //Yes 20 long "-"
void doStuffA( view(pointer(int)) param)
{
//not in charge of the deallocation.
}
void doStuffB( owner(pointer(int)) param)
{
free(param);
}
void routineB()
{
owner(pointer(int)) a = malloc();
doStuffA(a);
doStuffB(a); //Passes on ownership.
//routineB is no longer in charge of the deallocation, because of
doStuffB.
}
--------------------
void usingStuff()
{
owner(pointer(int)) a = routineA();
//You are in charge of the deallocation.
free(a);
}
--------------------
What's the point of this post?
Nov 29 2009








"Denis Koroskin" <2korden gmail.com>