---------- Forwarded message ----------
From: Ciprian Teodorov <[email protected]>
Date: Sat, May 18, 2013 at 10:11 PM
Subject: Re: [Pharo-project] [NativeBoost] Allow hierarchy of objects in
function definition
To: [email protected]


Hi guys,

Here is another idea which I think is nice, without disabling the
typechecker or anything:

I suppose the LGitObjectExternal is a subclass of NBExternalObject
in LGitObjectExternal implement the #git_object_lookup as follows:

LGitObjectExternal>primitiveLookupIn: repo id: id type: type
  <primitive: 'primitiveNativeCall' module: 'NativeBoostPlugin' error:
errorCode>
  ^self call: #(git_return_t git_object_lookup(self, git_repository_ptr
repo, git_oid_ptr id, git_otype type))

then all the calls to #primitiveLookupIn:id:type: would succeed in all
subclassed of LGitObjectExternal without doing anything special.

cheers,
ciprian


On Sun, May 5, 2013 at 12:14 PM, Max Leske <[email protected]> wrote:

> I have a wish for NativeBoost (which is probably on your list anyway Igor,
> just wanted to put it out there): function definitions should be able to
> understand that I want to accept any object of a hierarchy.
>
> Here's my use case:
>
>         self call: #(git_return_t git_object_lookup(LGitCommitExternal *
> object, git_repository_ptr repo, git_oid_ptr id, git_otype type))
>
> This function takes a pointer to any of LGitCommitExternal,
> LGitTreeExternal and LGitBlobExternal. The obvious way for me to do this
> was to create a superclass LGitObjectExternal and use that superclass in
> the function like so:
>
>         self call: #(git_return_t git_object_lookup(LGitObjectExternal *
> object, git_repository_ptr repo, git_oid_ptr id, git_otype type))
>
> But that gives me an error. So for now I can either use a dummy object
> (like NBExternalObject) and then convert from that or I have to implement
> the same function thrice in the different object flavors.
> Being able to use a superclass would just be awesome!
>
> Cheers,
> Max
>



-- 
Dr. Ciprian TEODOROV
Ingénieur Développement CAO

tél : 06 08 54 73 48
mail : [email protected]
www.teodorov.ro



-- 
Dr. Ciprian TEODOROV
Ingénieur Développement CAO

tél : 06 08 54 73 48
mail : [email protected]
www.teodorov.ro

Reply via email to