I'm still having heaps of trouble figuring out how to organise the library.

At present the archive contains src in directories organised by function.
For example src/faio

~/felix/src>ls faio
faio_asyncio.cpp        faio_job.hpp            faio_timer.hpp          
flx_faio_posix.flx
faio_asyncio.hpp        faio_posixio.cpp        faio_winio.cpp          
flx_faio_win32.flx
faio_drv.hpp            faio_posixio.hpp        faio_winio.hpp          
flx_socket.flx
faio_job.cpp            faio_timer.cpp          flx_faio.flx            
flx_stream.flx


contains C++ code for building the shared library, headers for that and
also for linking Felix generated code to it, and Felix code to wrap it.

The Felix code includes platform specific wrappers (posix, win), and
a low level socket wrapper which is portable using conditional compilation,
and a higher level stream interface (which models sockets as instances
of typeclass stream), also using conditional compilation (a bit of a mis-design,
streams shouldn't be defined here, but the socket instances should be,
but should use the porting wrapper so that they themselves aren't
using any conditional compilation).

Other src packages are the same.

OTOH the built library is organised more by kind that function.
There is lib/plat which contains generated felix for your platform
(c typedefs and the macros for your os used to drive conditional
compilation). Then there is lib/std which contains platform independent
data structure stuff. Then the top level of lib is getting copies of stuff
like flx_stream. There's also lib/stl and lib/gnu/gmp and lib/gnu/gsl,
and lib/judy.flx and other stuff.

I dislike the Unix FSH with usr/include and usr/lib/ splitting out things
by the kind of file, thereby losing the functional separations.. but it is
also messy having all different file kinds in the one place. Short of
FUSE what to do?

Dumping all the library flx files into the library by category is
going to make a bit of a mess. I find it almost impossible to find
where things are because they're in different places in the
repository src directory to the built Felix library, and this
makes it a nightmare to get the build system right too.

It actually seems cleaner to retain the functional separation
and dump the whole src directory straight into the build
directory "as is". Which suggests using suffices to determine
the "portability" status instead of a directory, eg 

flx_faio_posix.port.flx

or perhaps

port.posix.faio.flx

Hmm .. anyhow it's a mess. I need to write some code to do
filesystem management (I need a portable "stat" function
for the webserver so I can make it list the files in a 
directory). I can write a posix version, but then I need to
make a porting wrapper. So where do I put these things?


--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to