Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2012-11

FPObserver Examples anywhere?

9 messages · 3 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Graeme Geldenhuys
to bsquared
bsquared wrote
Hello, Does anyone know of any example code for the FPObserver interface? Preferable with Collections.

Sure, see attached. It's very basic, but shows the functionality.

NOTE:
I used latest 2.7.1 compiler, where some base classes in the RTL support the IFPObserved interface.

And the demo output is as follows:

------------------------------------
$ ./fpobserver_demo
TStringList has changed [ooChange]
TStringList has changed [ooChange]
TStringList has changed [ooChange]
[ooFree] detected so we should detach ourselves
------------------------------------

This does raise some points of interest though.

1) I would probably surface the IFPObserver methods to Public. Though there is good arguments to not do it either - thus you are forced to use correct interface usage... via Supports(), getting a interface pointer back, and using that interface pointer to make method calls.

2) Even though I did two Add() calls and one Delete() call, TStringList reported the operation as simply ooChanged. Correct, but not very precise. After all, we also have ooAdd, ooDelete operation states we could work with.

3) My personal preference is that the Observed automatically detaches Observers in the destructor. But this is just a personal preference in my own code.

Regards,
- Graeme -

Reply by email

Sven Barth
to Graeme Geldenhuys
Graeme Geldenhuys wrote 5 lines
1) I would probably surface the IFPObserver methods to Public. Though there is good arguments to not do it either - thus you are forced to use correct interface usage... via Supports(), getting a interface pointer back, and using that interface pointer to make method calls.

Note: Although the IFPObserver and IFPObserved interfaces are defined as Corba interfaces you should be able to use "YourInstance as IFPObserver" instead of "Supports()".

Regards,
Sven

Reply by email

bsquared
to Graeme Geldenhuys: Sure, see attached. It's very basic, but shows the functionality. NOTE: I used latest…
Graeme Geldenhuys wrote 52 lines
On 2012-11-15 01:15, bsquared wrote: > Hello, > > Does anyone know of any example code for the FPObserver interface? > Preferable with Collections. Sure, see attached. It's very basic, but shows the functionality. NOTE: I used latest 2.7.1 compiler, where some base classes in the RTL support the IFPObserved interface. And the demo output is as follows: ------------------------------------ $ ./fpobserver_demo TStringList has changed [ooChange] TStringList has changed [ooChange] TStringList has changed [ooChange] [ooFree] detected so we should detach ourselves ------------------------------------ This does raise some points of interest though. 1) I would probably surface the IFPObserver methods to Public. Though there is good arguments to not do it either - thus you are forced to use correct interface usage... via Supports(), getting a interface pointer back, and using that interface pointer to make method calls. 2) Even though I did two Add() calls and one Delete() call, TStringList reported the operation as simply ooChanged. Correct, but not very precise. After all, we also have ooAdd, ooDelete operation states we could work with. 3) My personal preference is that the Observed automatically detaches Observers in the destructor. But this is just a personal preference in my own code. Regards, - Graeme - _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Thank you for you example.

I have had no exposure to CORBA. Your example gave me just what I needed.

Regards, Brian

Reply by email

bsquared
to Sven Barth: Note: Although the IFPObserver and IFPObserved interfaces are defined as Corba interfaces…
Sven Barth wrote 17 lines
Am 15.11.2012 14:29, schrieb Graeme Geldenhuys: > 1) I would probably surface the IFPObserver methods to Public. Though > there is good arguments to not do it either - thus you are forced > to use correct interface usage... via Supports(), getting a > interface pointer back, and using that interface pointer to make > method calls. Note: Although the IFPObserver and IFPObserved interfaces are defined as Corba interfaces you should be able to use "YourInstance as IFPObserver" instead of "Supports()". Regards, Sven _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Is there an advantage?

Regards, Brian

Reply by email

Graeme Geldenhuys
to bsquared: Thank you for you example. I have had no exposure to CORBA. Your example gave me just…
bsquared wrote
I have had no exposure to CORBA. Your example gave me just what I needed.

CORBA style interface are simply interfaces without reference counting - so you are in control of when to free instances.

CORBA style interfaces (as seen in FPC) are far from a complete CORBA ORB (Object Request Broker) implementation like the one included with Delphi.

So ignore the name CORBA, and just think of it as COM interfaces without reference counting. Oh, and CORBA interfaces don't descend from IUnknown & IInterface.

Regards,
- Graeme -

Reply by email

bsquared
to Graeme Geldenhuys
Graeme Geldenhuys wrote 24 lines
On 2012-11-15 18:01, bsquared wrote: > > I have had no exposure to CORBA. Your example gave me just what I needed. CORBA style interface are simply interfaces without reference counting - so you are in control of when to free instances. CORBA style interfaces (as seen in FPC) are far from a complete CORBA ORB (Object Request Broker) implementation like the one included with Delphi. So ignore the name CORBA, and just think of it as COM interfaces without reference counting. Oh, and CORBA interfaces don't descend from IUnknown & IInterface. Regards, - Graeme - _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Thanks again.

Regards, Brian

Reply by email