libplatform Notes ***************** libplatform is a private library used by this project for portability across platforms. Simple file access, getting system time, parsing command-line arguments, endian byte-swap macros, are examples of things that belong in this convenience library. The implementation means to support the following platforms: - posix (the default) - win32 (Windows 2000 or newer) All symbols in libplatform reside in private namespace mp4v2::platform and must never be made visible through public interfaces. In general, implementation .h and .cpp files are free to include this library. Both libmp4v2 and various executables created by this project rely on libplatform and this creates a bit of a dilemma in that libmp4v2 must ship as a stand-alone library. Thus, when creating libmp4v2 we must always embed the needed bits from libplatform. In turn, the executables then link against both libmp4v2 and the remaining bits of libplatform. This approach requires advanced linking which is available using several different methods, varying by platforms. And to complicate matters further, libtool (even version 2.2.6) makes this impossible. So the simple solution is to add libplatform symbols to libmp4v2. The only problem with this is libmp4v2 becomes a little fatter than it needs to be, but since all the symbols are in a private namespace and we use set default symbol visibility to hidden, we protect our clients from inadvertantly becoming dependents. If libplatform ever becomes bulky we can revisit this issue, but at this time using advanced linking would only save ~10KB of binary size.