02:12:57  * madewokherdquit (Remote host closed the connection)
06:22:03  * ender`joined
12:45:15  * auroraeosrosejoined
15:19:40  * vpovirkjoined
15:35:24  * FearTheCowboyjoined
15:35:43  <FearTheCowboy>vpovirk, I need to THANK YOU VERY MUCH!
15:36:09  <vpovirk>?
15:36:15  <FearTheCowboy>Your idea regarding supporting Abstract base classes in plugin implementation loading solved a problem that I didn't see coming.
15:36:30  <FearTheCowboy>was freakishly useful :D
15:37:23  <vpovirk>was it being able to provide default implementations?
15:39:21  <FearTheCowboy>that was usefull too, but it was more significant in the way that I implemented the callback layer in chocolatey in the prototype. I had created a Request class that facilitated calling the supplied callbacks, and then inherited from that a ChocolateyRequest class that added more functionality to implement chocolatey itself.
15:40:23  <FearTheCowboy>without the ABC support, I would not been able to continue using that pattern. With ABC support, I actually only had to slightly change what I had actually implemented and it works the same.
15:40:49  <FearTheCowboy>Had you not brought that up, I might have went a different way that wouldn't have been as smart :D
15:41:20  <vpovirk>but.. interfaces can inherit interfaces..
15:41:59  <FearTheCowboy>Yes, but if I generated the Request class from the IRequest interface at runtime and then I wanted the ChocolateyRequest to inherit from Request, it wouldn't have been possible.
15:42:37  <vpovirk>but there's going to be one or more RequestWrapper classes that you can't inherit..
15:42:50  <vpovirk>or whatever you call them
15:43:28  <FearTheCowboy>Except now I can implement a single class with all the abstract functions that get implemented by the dynamic class loader
15:43:58  <FearTheCowboy>I should be able to explain it better on Friday, I'll make a diagram
15:44:03  <vpovirk>ok
15:44:19  <FearTheCowboy>trust me when I say, that it was waaaaay simpler doing it with an ABC.
15:44:38  <FearTheCowboy>oh, and it was literally 15 lines more code. 5 more than I guessed.
15:45:06  <FearTheCowboy>And the base class doesn't have to be abstract, really. it just looks for virutal methods that it can override.
15:45:30  <vpovirk>yeah, I don't know why I thought that was important
15:45:47  <vpovirk>I guess I just wasn't sure how you'd call the base constructor
15:46:00  <vpovirk>but abstract classes can still have one, so...
15:46:15  <FearTheCowboy>Well, I do have a restriction (at this point) that the base class has to have a parameterless constructor.
15:46:21  <vpovirk>makes sense
15:46:58  <FearTheCowboy>But If I had a reason (and a use case that shows how I'd use it) I could easily have it call a specific constructor.
15:49:17  <FearTheCowboy>I also made it cache the class definitions so that if I'm instantiating an implementation of a class that has the same types supplying it's implementation, it doesn't have to go thru any of the overhead of constructing the class definition. That dropped the overhead on using this by an order of magnitude.
15:49:45  <FearTheCowboy>Needless to say, I think I'm going to have to extract out this code and put it into a general-purpose library soon. It's so freakishly cool now :D
19:18:22  * ender`quit (Quit: How long a minute is depends on which side of the bathroom door you are on. -- Practical application of Theory of Relativity)
19:19:40  * ender`joined
20:20:35  * stalledquit (Ping timeout: 260 seconds)
20:26:55  * stalledjoined
21:06:39  * ender`quit (Quit: How do you generate a random string? Put a new user in front of VIM and tell him to save and quit. -- Duane Morin)
21:11:09  * ender`joined
22:02:47  * vpovirkquit (Quit: urk IRC v0.-1.cvs - http://urk.sf.net/)
22:06:28  * ender`quit (Quit: Where python would say you can skin a cat with a knife, so adding other methods would just make the language hard to learn, perl acknowledges that sometimes you may need to skin a live tiger, so it gives you a rifle as well.)