Ok, so what I'm doing is this:

Files:
++++

std/filestat
std/posix/filestat
std/win32/filestat

classes:
+++++++

std/filestat:
=========

class FileStat_class[os, ..others]
{
  virtual ...
}

include "std/posix/filestat";
include "std/win32/filestat";

// default to Host OS class
class FileStat {
if PLAT_WIN32 do
  inherit Win32FileStat;
else
  inherit PosixFileStat;
}

std/posix/filestat:
=============

class PosixFileStat {
  // posix specific stuff
  type stat_t = "posix_stat";
  ..

  // inherit the generic code
  inherit FileStat_class[Posix, stat_t];

  // instantiate generic code
  instance FileStat_class[Posix, stat_t] { 
   ..
  } 
}

So now, FileStat works as before for your host OS
However if you're on Linux and want to generate C++ for Windows,
you can write:

  Win32FileStat::filetime(s)

The parametric form is:

    FileStat_class[os]::filetime(s)

The point of this is that on ANY platform you can generate C++ for ANY 
platform with a command line switch:

        flx --target=Win32 ....

At present there's no such switch, however you can probably do some
include file tricks to work around it, eg

        include "mymacros";

and then set the target OS in that:

        typedef os = Win32;

Note the parametric form is DIFFERENT to the "generic" form
in a second way: it GUARANTEES PORTABILITY. Using 
FileStat does not, because it inherits platform dependent
features from PosixFileStat (for example) and if you try
to build on Windows you might run aground.

========================================

We should note here: Felix provides two kinds of platform independence.
Some things are done by C++ conditional compilation or link time
library selection. This means the generated C++ is portable to all 
platforms.

With the mechanism above, however, the Felix code is portable to
all platforms, but the C++ code is not.

We might recover C++ source portability with plugins, i.e. at the link stage,
in a similar way that C++ is rendered portable by a standard API to the
non-portable implementation of C/C++ libraries.


--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to