On Thu, 22 May 2014, Christian Waechter wrote:

Hello Raptor2-users,

we want to use raptor2 in our C++ library-project and are implementing a class that uses raptor2 internally and hides its use to other developers/users.

Therefore we decided to use forward declarations to raptor2 structs (e.g. raptor_term ) in our headers, such that other developers using our library do no necessarily need to point to raptor2 headers as well.
We only use the raptor2 headers in the implementation-files.

No we encountered a problem:
Unfortunately "raptor_term" is an unnamed struct where a forward declaration is not possible, at least to my knowledge.

raptor_term is (like the other datatypes) a C typedef struct.

So as I understand, you need something like this inside raptor2.h

struct raptor_term_t {
...
}
typedef struct raptor_term_t raptor_term;

so that in your C++ you can use:

struct raptor_term_t;


We see possibilities to use void pointers and reinterpret_casts instead of pointers to a raptor_term or maybe a solution similar to the one pointed out here: http://stackoverflow.com/a/8833176

Both solutions are not nice and I would like to change this to a more safer/clearer version.
Are there any other suggestions or ideas how to deal with this?

And another question regarding the unnamed structs in raptor2: Is there any chance that it will be changed to named structs in future releases of raptor2? I think this might ease the use of raptor2 in c++ code, at least in the described case and as far as I am aware of the possible solutions right now.

Sure. The struct names are not part of the API but they can be in the hears.


I am looking forward to any comment or help on this issue.

Best Regards,
Christian Waechter

The best next step is for you to propose a change/patch or pull
request on the raptor2 github.  This change would be to src/raptor2.h.in

Do all the typedefs needs this change, or just the ones mentioned in an API call?

Dave

_______________________________________________
redland-dev mailing list
redland-dev@lists.librdf.org
http://lists.librdf.org/mailman/listinfo/redland-dev

Reply via email to