SLikeSoft / SLikeNet

SLikeNetâ„¢ is an Open Source/Free Software cross-platform network engine written in C++ and specifially designed for games (and applications which have comparable requirements on a network engine like games) building upon the discontinued RakNet network engine which had more than 13 years of active development.
https://www.slikenet.com/
Other
396 stars 62 forks source link

Inconsistent Header Naming Conventions #11

Open Nopey opened 7 years ago

Nopey commented 7 years ago

The header file peerinterface.h (formerly RakPeerInterface.h) has an all lowercase name, that is in stark contrast with the majority of the rest of the commonly used headers. Is there a message being conveyed with the lower case vs camel caps filenames, or have you not gotten around to naming all of the headers consistently? I honestly prefer lower caps header files, but it does break drop-in compatibility with RakNet if you rename things. Perhaps you could make the raknet/* header files files simply include the appropriate header in a slikenet folder of headers, all with consistent naming. (Bonus: Have the raknet header files typedef old names to point at new names, allowing for you to restructure parts of the API)

Luke1410 commented 7 years ago

You guessed right. We started converting filenames to all lower case but decided to defer finishing that up so to be able to release 0.1.0 a bit sooner. The internal case number to finish up that conversion is SLNET-113 (currently planned for 0.2.0).

As you also point out correctly, in order to keep backwards compatibility with RakNet, we'll keep the RakNet redirect-header files with their original case names (note that the header files under src/Source are already simple redirects their counterparts which are now located under src/Source/include/slikenet). These will be removed in version 2.0.0 (where we will drop the RakNet backwards compatibility support - internal case number: SLNET-109).

We also started in 0.1.0 the process to rename RakNet related names (most notably: RakNet namespace -> SLNet namespace). This too was deferred to be completed/continued in 0.2.0. Part of that is to handle typedefs (but also other things like class names and macros) - internal case number: SLNET-114.

Nopey commented 7 years ago

Your cmake scripts are installing the slikenet headers as raknet, and the raknet-esque headers in Source/ are not being installed at all. As well, the raknet-esque headers in Source/ are including the slikenet headers with a relative path. ex:

#include "include/slikenet/peerinterface.h"

should probably be

#include <slikenet/peerinterface.h>
Luke1410 commented 7 years ago

@quotes vs. angle-bracket include style: This is actually intended, so that the preprocessor correctly starts looking for the include file relative to the redirect-header (i.e. under src/Source/include/slikenet/_FindFirst.h). Using the angle-bracket form would change the priority to search for whatever is in the compiler's include-path list first (see https://msdn.microsoft.com/en-us/library/36k2cdd4.aspx ). Or is something wrong here?

@CMake issue: yes, unfortunately there are still several open ends with the CMake integration. I'll prioritize at least the part for getting the include headers right in the version which is currently in development (internal case number: SLNET-115).

Luke1410 commented 6 years ago

SLNET-115 has now been resolved in the SVN/GitHub repository and should be in the 0.1.1 release. compatibility headers are now installed to [xxx]/include/raknet and [xxx]/include/raknet/slikenet whith the "real" includes going into [xxx]/include/raknet/include/slikenet

This allows user of RakNet simply keeping pointing to [xxx]/include/raknet without any other necessary modifications while users who switched over to use SLikeNet without the compatibility layer should point to include [xxx]/include/raknet/include (and have their header includes point to <slikenet/foo.h>. This part of the structure is something we plan to improve in 0.2.0.

Luke1410 commented 6 years ago

SLikeNet 0.1.1 which contains the fix for SLNET-115 has just been released.