I agree with @codebrainz (as I already mentioned earlier).
Sure, there is a gray area on what's public and private inside publicly 
accessible structures, as we (currently) don't have any way to enforce privacy 
here.  But we always stated that anything undocumented was *not* part of the 
API and could not be relied upon, so although in practice it was possible, we 
explicitly said we didn't support that.

@codebrainz's `GSEAL` mention is interesting.  We could introduce something 
like this to enforce privacy to some extent, similar to how private/protected 
members work in Python (for those not familiar with `GSEAL`):
```C
#if GEANY_PRIVATE
# define GEANY_PRIVATE_FIELD(name) name
#else
# define GEANY_PRIVATE_FIELD(name) geany_private__##name
/* or, if we were real evil, we perhaps could even throw __LINE__ in there :) */
#endif

...

struct Something {
    gint field1; /**< something public */
    gint GEANY_PRIVATE_FIELD(field2); /* not public */
    ...
};
```

---
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/commit/302b40e9778ff49407902f3ef9f272ed202f4547#commitcomment-15040477

Reply via email to