freenode/#clasp - IRC Chatlog
Search
14:37:32
drmeister
frgo: Since Pointer_* can be derived from a ForeignData_* - I'm going to try removing Pointer_* and replace it with ForeignData_*
14:38:16
drmeister
I was trying to get Peter Seibel's "Manifest" documentation web server working and I ran into the problem that the socket interface only works with Pointer_sp.
14:40:00
drmeister
It called this... https://github.com/clasp-developers/clasp/blob/dev/src/sockets/sockets.cc#L771
14:40:48
drmeister
... with a ForeignData_sp pointer. ForeignData_* has a superset of capabilities over Pointer_*
14:42:06
Bike
isn't calling this function with a ForeignData_sp ok? assuming ForeignData is a subclass of Pointer
14:44:46
Bike
having just one foreign pointer class sounds nice. what do ForeignData or ExternalObject have that Pointer doesn't?
14:44:49
drmeister
Pointer_O is really simple, it just wraps a void*. ForeignData_O does that and stores some other info about it.
14:50:11
drmeister
Subclass would probably work - but eliminating Pointer_O altogether would also work.
14:51:39
frgo
As the interface is (or better, should be) the same I'd make a branch and "simply" rename ForeignData_O to Pointer_O and delete the original Pointer_O class.
14:51:42
drmeister
ExternalObject_O wraps an Instance_sp _Class variable - I'm checking if ForeignData knows about that.
14:52:47
drmeister
ForeignData fields are here: https://github.com/clasp-developers/clasp/blob/dev/include/clasp/core/fli.h#L175
14:53:47
drmeister
ForeignData doesn't reference the _Class field at all. I think _Class and m_type are redundant.
14:55:27
drmeister
Pointer_O wraps a void* pointer - it is equivalent to the ForeignData_O::m_raw_data field.
14:56:38
drmeister
If I renamed the Pointer_O field to m_raw_data, made it protected and then switch ForeignData_O to inherit from Pointer_O then everything should work and any function that accepts a Pointer_sp will accept a ForeignData_sp.
15:01:18
drmeister
re: Documentation - in C++ I have the CL_DOCSTRING(...) tag and clbind has support for passing docstrings.
15:01:22
Bike
how do you think it should be laid out? one void* class, and then one void* plus C++ info class?
15:01:50
drmeister
C++ has R"(...)" for inserting multiline strings into code. We have everything we need to add documentation to everything.
15:04:08
drmeister
class clasp_ffi::ForeignData_O : public core::Pointer_O { ... additional info and methods};