Hello,

  Lorenzo raised some issues about text handling in nglStream. Just for record, 
let me
start with some implicit design issues in those streams.

nglI/OStream are meant to be higher level than the classical POSIX read(), this 
is why
you find a bunch of methods other than Read() in the same scope. We have 
choosen to go
as high as we could with full interoperability. The issues :

* For simple C types (ints & floats), we already need to provide a switch (byte
ordering) to keep interoperabity possible. And of course we let the user choose 
the
convention, and provide the 'expected' default. While int storage is obvious 
(nobody
thought about bit shuffling yet :)), floats are not trivially represented. The
documentation clearly states that NGL will only read and write IEEE754 floating 
point
representations. I made sure that the majority of mainstream processors could 
do that
(even HPPA Risc and Sun's SPARC), and if we ever found one that would not 
support this
format, we would have to implement a software translator.

* String support has also been added in the same scope, because there is a well
established description of what is a 'text file'. We have to provide two 
switches for
interoperability (encoding and line ending convention). ReadLine() only assumes 
that
parsing till the end of line is handy, which few people would deny I guess.

What is clearly misleading, is that nothing prevents you from mixing calls to 
basic
types and string parsing. This is a design compromise, the first nglFile
implementation was splited in nglTextFile and nglBinaryFile with an abstract 
nglFile,
consuming a lot of interface and code only to bother the user. It was also 
expected
that someone, one day, would try to mix basic types and string parsing.

ReadLine() was provided as a mean to really stream input, ie. read & process
progressively. All human readable text has a very regular apparition of 
newlines,
that's why every sane API implements ReadLine(). Side note: when we say 'new 
line', it
really writes '\n' when programming in NGL (this is the C lexical convention 
for ALL
platforms; MSVC compiler will NOT translate this to \r\n); NGL will take care 
of doing
the right conversion from/to file when reading/writing.

Now in the case of a mixed binary/text file, you must obviously explain what is 
the
boundary of a string. The current API can't do better than reading through the 
next
new line or the end of the file. Otherwise you must go back to the Read() 
roots. What
can we do about it ?


a) nglSize ReadText(nglString& rText, nglSize Bytes)

Reads `Bytes' bytes, fill rText using current encoding and line ending 
convention
parsing. Returns number of bytes effectively read. This would be the occasion 
for
implementing a better ReadText(), the current one based on ReadLine() is safe 
but
ineffective.


b) nglSize ReadText(nglString& rText, nglChar Separator)

Reads till `Separator' or end of file. Sadly, this cannot be a generalization of
ReadLine (ie. ReadText(str, '\n')), because of the complex line ending 
conversion
code. This thing has to be rearchitected to share some code paths.


Note that the b) case is pretty much hitting the design limit of NGL streams, 
we're
starting to cross the helper/protocol boundary. For instance, I wouldn't be 
surprised
to be asked to implement ReadText(nglString&, std::list<nglString> 
SeparatorSet). And
so on till the full fledge XML parser :). A great part of maintenance is about
explaining that APIs are not marshmallows ...

Other note : I know I can't implement this till next week, and it needs time and
caution; I had a hard time getting ReadLine() correct with all aspects.
Examples/stream must be updated and a better test suite should be set up, else 
we'll
still run into bugs 3 months later. Any code is welcome of course, but I rate 
this
'tricky' and I'm a bitch about code quality. You've been warned.





Received: from logic.phpwebhosting.com ([66.33.1.213])
        by sc8-sf-list1.sourceforge.net with smtp (Exim 3.31-VA-mm2 #1 (Debian))
        id 1914Yb-0003g8-00
        for <[EMAIL PROTECTED]>; Thu, 03 Apr 2003 05:15:05 -0800
Received: (qmail 28985 invoked by uid 508); 3 Apr 2003 13:14:59 -0000
Received: from unknown (HELO FLYER) (212.194.3.122)
  by logic.phpwebhosting.com with SMTP; 3 Apr 2003 13:14:59 -0000
Message-ID: <[EMAIL PROTECTED]>
From: "Lorenzo Pastrana" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
Subject: Re: [NGL-devel] nglStream and text
Organization: Kinopsis
MIME-Version: 1.0
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Thu Apr  3 05:21:27 2003
X-Original-Date: Thu, 3 Apr 2003 15:17:01 +0200

Hehe.. prepare to face my courroux ! :)

This is the usual mumbo jumbo :
 ask for a simple thing :

    the primary question was :
    "why ReadLine is adding (not converting) a /n at the end of my stream
when there is none"

    then when it was explained to me that it was a 'feature' :|
    "why can't nglStream & nglString relate to each other in a simple way"
    aka "where is the nglStream dedicated operator in nglString that anyone
would expect"

 and what you get answered is :

<IntentionnalyProvocativeCaricaturePartlyGrabbedFromIrcChatYesterday>

a flood of IEEE and POSIX seasoned political haze trying to say :

 "listen darling, what you are asking for is some kind of itchy bitchy
ynooow, and btw I really can't understand why, why ever, you wanna use a
binary file when you can use a text one and automagically workaround the
designed limitations of the wonderfull AND politically correct tool NGL
is... I mean : binary files are... ahem, BAD! ynoooow... for they admit
unreadable proprietary (bad) formats, witch we fight against : not allowing
nglString to output raw data is part of the warfare...
But !!!, since I'm a gentle buddy I might be having a look at this issue by
the end of the year (oops week sorry), so don't hold your breath beacause
there is no way for you to get involved in improving things here... (you
eventually might try to submit something but I warn you : there is no chance
we make this process something sensible and effective)."

</IntentionnalyProvocativeCaricaturePartlyGrabbedFromIrcChatYesterday>


Well..
    in ngl I face a missing primitive : think of stream<<str, implemented
from stl to mfc,
    If you feel I'm the 'one person that, one day, would try to mix basic
types and string parsing'
    (yuck! what an odd attitude.) this is beacause when I asked about -
nglString serialisation - (not text files
    parsing) you answered "use the force of ReadLine" not "yeah, nglString
misses an operator".
    Btw, I don't have the feeling to ask for a full flegged XML parser here,
I know there is one in NUI
    (and meeloo claims it's reeaally neet ;).

So... If you want to talk politics let's talk politics... ;)

Preamble :

Is really '\0' an end of 'Line' construct or rather an end of 'String' one
(witch would imply the end of current line) ?

Manifesto :

 - We modern coders need to address binary as well as text files.
 - If We modern coders need to exchange data with other application /
environement we shall use a wellknown existing generic exchange format
(say... XML for text files or RIFF for binaries) 'cause we don't bother
reinventing the wheel.
 - Then if We modern coders feel we can make a mutch better format intended
for some specific data exchange we specify it, document it, and proudly
promote the use of it.
 - Though We modern coders believe that not every single file has a 'format'
(read : specified, documented, and publicly intended for data exchange), we
think of some files as 'local data storage that allows a computer to be
turned off' and believe nobody cares about those files...
 - For that purpose modern coders sometimes need to dump data from a struct
or class witch eventually contains an nglString, and be able to read it back
to memory without having to build up a full serialisation subsystem.
 - We modern coders, and proud users of high level API's sutch as ngl don't
want to deal with temporary buffers any time a nglString shall be
serialized, as Real coders used to do before the aparition of OO semantics
and data encapsulation concept.

Apendix :

 - When we modern coders use some public tool, we DO rely on them provided
that it fullfills the present manifesto or pass the tushang peng untill
eternal oblivion.
 - When we modern coders make some public tool, we shall not look in the
users panties and say "ah, too baaad, your thing is hanging along the wrong
leg", but make the tool in order that whatever side it usually bends toward,
it can be used properly.

Hypothesis :

For the purpose of making ngl a - Modern coder complient - tool, I believe
that a string object sutch as nglString needs an appropriate operator :
    nglSize nglIStream::Read(nglString&);
    nglSize nglOStream::Write(nglString&);
witch would be the correct syntax (relative to streams),
or the reciproque :
    nglSize nglString::Recall(nglIStream&);
    nglSize nglString::Store(nglOStream&);
witch has the advantage to be completely self-contained (appropriate
management of the resulting boundaries without breaking encapsulation) and
not to clutter nglSteam interface with specialized APIs.
(TTimo : this is where stdio << & >> operators are nice, despite you hate
them, a simple overload inside your object and you've got an iostream
complient object that is sintactically identical to any other primitive
type..., but I wont be that picky for ngl ;)

Statements :

 - nglSteam / nglString friendship's only intent is store / recall raw data
to/from the stream.
 - nglString knows (and will ever know) about his own boundaries and thus is
fully qualified to store / recall data to/from a stream.
 - Since we (as modern coders ;) do rely on ngl, we don't care about what
nglString raw data looks like provided that forth and back serialisation is
possible.
 - In the process of recalling raw data from a stream, nglString has some
expectation about the bytes it will recieve, as well as the float operator
would (could this only be a terminating /0 or the pascal way, but whatever
will do).
 - If the expectations are not met : data is said "misaligned", and it is
NOT nglString's concern to build an unbreakable file format.

To conclude, I still wait for an example where this would fail or bother ...

Truly yours,
    Lo

PS:

If you think that in nglIStream_shr.cpp line 135 you can replace :

rLine += '\n';

by

if(last line character was not '\0') rLine += '\n';

the issue ends here.

btw :
> ReadLine() was provided as a mean to really stream input, ie. read &
process
> progressively.

So why do you Wipe() the target at the begining of each call?






> Hello,
>
>   Lorenzo raised some issues about text handling in nglStream. Just for
record, let me
> start with some implicit design issues in those streams.
>
> nglI/OStream are meant to be higher level than the classical POSIX read(),
this is why
> you find a bunch of methods other than Read() in the same scope. We have
choosen to go
> as high as we could with full interoperability. The issues :
>
> * For simple C types (ints & floats), we already need to provide a switch
(byte
> ordering) to keep interoperabity possible. And of course we let the user
choose the
> convention, and provide the 'expected' default. While int storage is
obvious (nobody
> thought about bit shuffling yet :)), floats are not trivially represented.
The
> documentation clearly states that NGL will only read and write IEEE754
floating point
> representations. I made sure that the majority of mainstream processors
could do that
> (even HPPA Risc and Sun's SPARC), and if we ever found one that would not
support this
> format, we would have to implement a software translator.
>
> * String support has also been added in the same scope, because there is a
well
> established description of what is a 'text file'. We have to provide two
switches for
> interoperability (encoding and line ending convention). ReadLine() only
assumes that
> parsing till the end of line is handy, which few people would deny I
guess.
>
> What is clearly misleading, is that nothing prevents you from mixing calls
to basic
> types and string parsing. This is a design compromise, the first nglFile
> implementation was splited in nglTextFile and nglBinaryFile with an
abstract nglFile,
> consuming a lot of interface and code only to bother the user. It was also
expected
> that someone, one day, would try to mix basic types and string parsing.
>
> ReadLine() was provided as a mean to really stream input, ie. read &
process
> progressively. All human readable text has a very regular apparition of
newlines,
> that's why every sane API implements ReadLine(). Side note: when we say
'new line', it
> really writes '\n' when programming in NGL (this is the C lexical
convention for ALL
> platforms; MSVC compiler will NOT translate this to \r\n); NGL will take
care of doing
> the right conversion from/to file when reading/writing.
>
> Now in the case of a mixed binary/text file, you must obviously explain
what is the
> boundary of a string. The current API can't do better than reading through
the next
> new line or the end of the file. Otherwise you must go back to the Read()
roots. What
> can we do about it ?
>
>
> a) nglSize ReadText(nglString& rText, nglSize Bytes)
>
> Reads `Bytes' bytes, fill rText using current encoding and line ending
convention
> parsing. Returns number of bytes effectively read. This would be the
occasion for
> implementing a better ReadText(), the current one based on ReadLine() is
safe but
> ineffective.
>
>
> b) nglSize ReadText(nglString& rText, nglChar Separator)
>
> Reads till `Separator' or end of file. Sadly, this cannot be a
generalization of
> ReadLine (ie. ReadText(str, '\n')), because of the complex line ending
conversion
> code. This thing has to be rearchitected to share some code paths.
>
>
> Note that the b) case is pretty much hitting the design limit of NGL
streams, we're
> starting to cross the helper/protocol boundary. For instance, I wouldn't
be surprised
> to be asked to implement ReadText(nglString&, std::list<nglString>
SeparatorSet). And
> so on till the full fledge XML parser :). A great part of maintenance is
about
> explaining that APIs are not marshmallows ...
>
> Other note : I know I can't implement this till next week, and it needs
time and
> caution; I had a hard time getting ReadLine() correct with all aspects.
> Examples/stream must be updated and a better test suite should be set up,
else we'll
> still run into bugs 3 months later. Any code is welcome of course, but I
rate this
> 'tricky' and I'm a bitch about code quality. You've been warned.
>
>
>
>



Received: from zerodeux.net ([62.212.104.175])
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 1918Sw-00051T-00
        for <[EMAIL PROTECTED]>; Thu, 03 Apr 2003 09:25:31 -0800
Received: from zerodeux.net (localhost [127.0.0.1])
        by zerodeux.net (Postfix) with SMTP id 6448DB2DD
        for <[EMAIL PROTECTED]>; Thu,  3 Apr 2003 19:25:25 +0200 (CEST)
Received: from 62.4.19.30
        (SquirrelMail authenticated user zerodeux)
        by zerodeux.net with HTTP;
        Thu, 3 Apr 2003 19:25:25 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
Subject: Re: [NGL-devel] nglStream and text
From: "Vincent Caron" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
X-Mailer: SquirrelMail (version 1.2.10)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Thu Apr  3 09:31:05 2003
X-Original-Date: Thu, 3 Apr 2003 19:25:25 +0200 (CEST)

There's a lot of issues there, let's try to sort them.


> Is really '\0' an end of 'Line' construct or rather an end of 'String' one 
> (witch
> would imply the end of current line) ?

The interpretation of that zero depends on the context. In NGL, it happens to 
be the
string terminator for the internal in-memory storage of nglString; the user 
does not
have to know about this, only does he need to have GetChars() return a 
null-terminated
string, as documented (this is std::string::c_str()). As a design issue, 
nglString
does not accept zero as a valid character. This thing is maybe a bad idea, 
there are a
lot of thing about nglString implementation that still needs to be discussed.


> If you think that in nglIStream_shr.cpp line 135 you can replace :
>
> rLine += '\n';
>
> by
>
> if(last line character was not '\0') rLine += '\n';
>
> the issue ends here.

This the only other place in NGL where the null character is interpreted for 
the user.
It happens that some text protocols use zero as a separator because they need 
to be
conservative on all other characters ('find -print0' or [stupid] Flash XML 
protocol
for instance). That's why I added the eTextZero case : since it cannot be a 
string
character, I could either discard it or interpret it. I chose to interpret it 
in the
handiest way.

It would be OK for me to remove this eTextZero item, but we'll have to handle 
the
zeroes in another way : the most logical way is to allow embedded zeroes in 
nglString.
I'd like to know the status about this in std::string, then the UTF-8's opinion
(because I want to go UTF-8) and we should be set.


> For the purpose of making ngl a - Modern coder complient - tool, I believe 
> that a
> string object sutch as nglString needs an appropriate operator :
>     nglSize nglIStream::Read(nglString&);
>     nglSize nglOStream::Write(nglString&);
> witch would be the correct syntax (relative to streams),
> or the reciproque :
>     nglSize nglString::Recall(nglIStream&);
>     nglSize nglString::Store(nglOStream&);

You're asking for serialization support, and we did not understood that from the
beginning. In this case, we setup an arbitrary convention per serializable 
object, and
as long as there are Store and Recall methods, it can stay internal and 
undocumented.
I'm fine with these concepts. However ...

There is not a trace of serialization support in NGL, and I intend it to be 
that way.
Let me explain further :

- The Read/Write/Intxx/float are basic necessities for binary access, and fill 
the C++
gap which stupidly cannot treat basic types as objects (hence we can't overload
float::Store). I don't call this 'serialization' at all, however it's cleary 
the basis
support for what a real OO geek would call serialization.

- I have plenty experience on serialization, with C++ and other language (PHP),
including a very large scale project (NeL). I have a bunch of very good and live
reasons not to include serialization right into NGL.

- Now, as said earlier, I'm fine with serialization concepts and people who 
want to
use it. I'd be happy to see a libnglserialize companion project happening. I'd 
be
willing to help. But as a maintainer of NGL, I don't put one finger in this 
machine,
see previous item.


> (TTimo : this is where stdio << & >> operators are nice, despite you hate 
> them, a
> simple overload inside your object and you've got an iostream complient 
> object that
> is sintactically identical to any other primitive type..., but I wont be that 
> picky
> for ngl ;)

The << and >> operators are syntactic sugar. You can setup any other convention 
for
'store' and 'load' and be consistent with it, however this is STL's convention. 
The
most important fact, is that you can't write decent programs with these 
operators :
you cannot check errors nor partial read/write (besides heavyweight exception
handling). And I've never seen a serialization implementation that made this 
error
checking facultative. I've actually seen all of them miserably fail.

Meeloo and I are getting less and less religious about syntactic battles, most 
of our
goals are doing the thing right before making it look cool. When it's only cool 
and is
not right, it's definitively not a fit.

Now, this is the design choices and political believes of NGL maintainers that 
were
explained to you. This is not going from nowhere to nowhere, NGL has been 
driven by
different interests (including commercial ones) in 3 years, and it has explored 
a lot
of different ways and use cases. I've also quite an experience on maintenance, 
and
I've choosen to put quality expectations on a high level, and hence the entry 
level is
also high. It's not the first time people are pissed that I don't plug in NGL 
the
simplest ideas, but they often forget than they can still implement it by 
themselves.
If they're on the right direction, this will only make their point stronger. And
remember I'm really willing to do anything in NGL that will support your goal, 
but not
necessarily implement your goals. Tell me if something is lacking for 
serialisation
support.


> btw :
>> ReadLine() was provided as a mean to really stream input, ie. read &
> process
>> progressively.
>
> So why do you Wipe() the target at the begining of each call?

If I didn't call Wipe(), the method would not work as advertised. Then the 
question is
'why ReadLine() works that way' ? There is documentation, and examples 
scattered all
around in NGL and NUI, your turn to explain me why it should work otherwise.





Received: from logic.phpwebhosting.com ([66.33.1.213])
        by sc8-sf-list1.sourceforge.net with smtp (Exim 3.31-VA-mm2 #1 (Debian))
        id 191CaF-00008c-00
        for <[EMAIL PROTECTED]>; Thu, 03 Apr 2003 13:49:19 -0800
Received: (qmail 6902 invoked by uid 508); 3 Apr 2003 21:49:12 -0000
Received: from unknown (HELO FLYER) (212.194.3.122)
  by logic.phpwebhosting.com with SMTP; 3 Apr 2003 21:49:12 -0000
Message-ID: <[EMAIL PROTECTED]>
From: "Lorenzo Pastrana" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>        <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
Subject: Re: [NGL-devel] nglStream and text
Organization: Kinopsis
MIME-Version: 1.0
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Thu Apr  3 13:52:09 2003
X-Original-Date: Thu, 3 Apr 2003 23:51:14 +0200

> As a design issue, nglString
> does not accept zero as a valid character. This thing is maybe a bad idea,
there are a
> lot of thing about nglString implementation that still needs to be
discussed.

> It would be OK for me to remove this eTextZero item, but we'll have to
handle the
> zeroes in another way : the most logical way is to allow embedded zeroes
in nglString.

well ngl appears to be a C++ (should i say C+ ?) and thus using an inherited
C environnement, this would cut nglString from being assigned with a char*
:/

> I'd like to know the status about this in std::string, then the UTF-8's
opinion
> (because I want to go UTF-8) and we should be set.

sounds reasonable...

> You're asking for serialization support, and we did not understood that
from the
> beginning.

At last ...

> There is not a trace of serialization support in NGL, and I intend it to
be that way.
> Let me explain further :
>
> - The Read/Write/Intxx/float are basic necessities for binary access, and
fill the C++
> gap which stupidly cannot treat basic types as objects (hence we can't
overload
> float::Store). I don't call this 'serialization' at all, however it's
cleary the basis
> support for what a real OO geek would call serialization.

> Tell me if something is lacking for serialisation support.

yep! precisely : nglString::Store/Recall... nothing more.. and fill the C
gap which stupidly cannot treat strings as basic types.. ;)

> - I have plenty experience on serialization, with C++ and other language
(PHP),
> including a very large scale project (NeL). I have a bunch of very good
and live
> reasons not to include serialization right into NGL.

I'll be glad you share some experience here..

> - Now, as said earlier, I'm fine with serialization concepts and people
who want to
> use it. I'd be happy to see a libnglserialize companion project happening.
I'd be
> willing to help. But as a maintainer of NGL, I don't put one finger in
this machine,
> see previous item.

libnglserialize wouldn't live without a nglSerialisable interface (witch
would be a BAD thing inside nglString for we modern coders have taken the
habit not to code virtualz in basic objects) and will never be a companion
if you don't make a little room for it.... but you might have an alternative
patern handy?

> The << and >> operators are syntactic sugar.
> you cannot check errors nor partial read/write (besides heavyweight
exception

Yep... we all know that.. ;)

> It's not the first time people are pissed that I don't plug in NGL the
> simplest ideas, but they often forget than they can still implement it by
themselves.

but this is more a design issue than an effort one, I've spent mutch more
time writing a silly/dramatic mail than I would have writing a wrapper
serialisable class for nglString ... that's my way of getting involved here
if not another ...

Rrreealy Yours
Lo.



Received: from logic.phpwebhosting.com ([66.33.1.213])
        by sc8-sf-list1.sourceforge.net with smtp (Exim 3.31-VA-mm2 #1 (Debian))
        id 191OiK-0000lM-00
        for <[EMAIL PROTECTED]>; Fri, 04 Apr 2003 02:46:28 -0800
Received: (qmail 10373 invoked by uid 508); 4 Apr 2003 10:46:19 -0000
Received: from unknown (HELO FLYER) (212.194.46.153)
  by logic.phpwebhosting.com with SMTP; 4 Apr 2003 10:46:19 -0000
Message-ID: <[EMAIL PROTECTED]>
From: "Lorenzo Pastrana" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>        <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> 
<[EMAIL PROTECTED]>
Organization: Kinopsis
MIME-Version: 1.0
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Subject: [NGL-devel] "bridging the C gap that stupidly cannot treat strings as 
basic types"... nglString overload receptacle
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Fri Apr  4 02:47:15 2003
X-Original-Date: Fri, 4 Apr 2003 12:48:21 +0200

I had a look to the eventuality of a 'serializable wrapper class' for nglString 
this morning,
and there are a couple of issues that prevent nglString to be overloaded 
reasonably :

To be as compact & efficient as it could, the only methods a wrapper class 
would need to duplicate are the constructors
and the operators that can't be inherited, all other methods would be provided 
by nglString itself.
and that woud be +/- 20mn work .... :)

BUT !

There is still a problem regarding the return type of nglString's methods witch 
are legitimately nglString and
references to (when not other)... then at bootstrapping time, it will fail when 
in reference context :

ie:

nglSerialiszableString str = "write something kewl"; // a wrappers instance
void ProcessString(nglSerialiszableString &_str); // some reference asking 
function proto

try :

ProcessString(str.Extract(6)); // fails beacause of incompatible return type...

A naïve solution would be to duplicate every single method with appropriate 
conversion for references to 'this' or
reinstanciating when a full object is returned.. :/ sounds terrible...

So I thought of a method that would permit the insertion of serialisation 
mechanism in ngl without requiring a virtual
interface, keeping all privates you like to etc... It is derived from the 
method is use for some strucural (templated)
patterns in sphere... (would be a general overload bootstrap thing but let's 
stay on focus)

That is : replace all occurences of nglString inside nglString to a class 
template parameter defaulting to nglString.
et voila....

it won't change anything for the actual use of nglString and will allow a 
subclass to do the following

class Whatever : public nglString<Whatever>
{
    .... etc.

it solves the internal / return type pb,
but (since nglString isn't a 'pure' template class) it needs one more little 
trick regarding implementation and overload
type definition :

#if defined(NGLSTRING_OVERLOAD_INCLUDE)
#include NGLSTRING_OVERLOAD_INCLUDE
#endif

witch forces the overload to be unique (might not be that bad afterall)...

I believe there is no major caveat with this method (if you see some tell me), 
and it's quite transparent to the actual
design (it won't answer the zero's status issue though ;). Anyway it might 
sound a little odd to you (making nglString a
design singularity in ngl).

This said, as long as serialisation is concerned, I believe it would be 
muuuutch simpler to simply provide some store /
recall methods, being the only ones provided in ngl, and that would give some 
sort 'basic type' status to nglString
concerning relation to streams.

Serializably yours
Lo.




Received: from zerodeux.net ([62.212.104.175])
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 191R3P-0003Cc-00
        for <[EMAIL PROTECTED]>; Fri, 04 Apr 2003 05:16:23 -0800
Received: from zerodeux.net (localhost [127.0.0.1])
        by zerodeux.net (Postfix) with SMTP id 74B0CAFAD
        for <[EMAIL PROTECTED]>; Fri,  4 Apr 2003 15:16:15 +0200 (CEST)
Received: from 62.4.19.30
        (SquirrelMail authenticated user zerodeux)
        by zerodeux.net with HTTP;
        Fri, 4 Apr 2003 15:16:15 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
Subject: Re: [NGL-devel] serialization
From: "Vincent Caron" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
X-Mailer: SquirrelMail (version 1.2.10)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Fri Apr  4 05:17:04 2003
X-Original-Date: Fri, 4 Apr 2003 15:16:15 +0200 (CEST)

Lorenzo Pastrana said:
>
> I had a look to the eventuality of a 'serializable wrapper class' for 
> nglString this
> morning, and there are a couple of issues that prevent nglString to be 
> overloaded
> reasonably :

You didn't ask what where my 'bunch of reasons' to loathe serialization, but 
you just
bumped into a few I had. I'm fine with serialization as long as it's kept as an
independent problem from NGL implementation issues. Pro-serializers can then 
have fun
and run by themselves into their own problems without having me to say 'I told 
you'
:).

Let's go back to the very beginning : you want to serialize ? I want this task 
to
implemented as independently as NGL as possible ? They are solutions, here is 
one :


class nglISerializer
{
  nglISerializer(nglIStream& rInput);

  operator <<(int x);
  operator <<(const nglString&);
  operator <<(whatever thing you want to serialize);
};

And the same for nglOSerializer. Easy to use, STL syntax compliant, extensible,
orthogonal with NGL. If you can imagine that "objects can serialize to a 
stream" and
"streams can serialize objects" are the same concept, you're done.





Received: from logic.phpwebhosting.com ([66.33.1.213])
        by sc8-sf-list1.sourceforge.net with smtp (Exim 3.31-VA-mm2 #1 (Debian))
        id 191SG6-0005Rl-00
        for <[EMAIL PROTECTED]>; Fri, 04 Apr 2003 06:33:34 -0800
Received: (qmail 29754 invoked by uid 508); 4 Apr 2003 14:33:23 -0000
Received: from unknown (HELO FLYER) (212.194.46.153)
  by logic.phpwebhosting.com with SMTP; 4 Apr 2003 14:33:23 -0000
Message-ID: <[EMAIL PROTECTED]>
From: "Lorenzo Pastrana" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>        <[EMAIL PROTECTED]>        <[EMAIL 
PROTECTED]>        <[EMAIL PROTECTED]>        <[EMAIL PROTECTED]> <[EMAIL 
PROTECTED]>
Subject: Re: [NGL-devel] serialization
Organization: Kinopsis
MIME-Version: 1.0
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Fri Apr  4 06:35:24 2003
X-Original-Date: Fri, 4 Apr 2003 16:35:26 +0200

> You didn't ask what where my 'bunch of reasons' to loathe serialization, but 
> you just
> bumped into a few I had.

This was very-not a general serialisation problem !
It is related to the specific status of nglString and the grey zone it stands 
upon you say it's black I say it's
white...
Well keep nglString a non-overloadable non-stream-readable class i'll stick to 
my helper functions ...
Nobody will say I didn't try.. :/

This is ground control, end of nglString transmission ROGER.

> class nglISerializer
> {
>   nglISerializer(nglIStream& rInput);
>
>   operator <<(int x);
>   operator <<(const nglString&);
>   operator <<(whatever thing you want to serialize);
> };

This is typically the kind of design I try to avoid ...
-> every time you make a single move you keep on updating classes and classes, 
where your move needs to be aknowledged,
making every next move a little heavyer and error prone ... untill you don't 
make no move at all.

btw an object could need to serialize private data ...

So I tend to be a little more 'structural' than 'exhaustive' mainly using 
interfaces, of course they have theyr
limitations (typically in nglString kind of situation) but i'd like this one 
better :

class nglSerialisable
{
public:
    virtual nglSize Serialise(nglIStream& rArchive) = 0;
    virtual nglSize Serialise(nglOStream& rArchive) = 0;
};

... Self contained, opaque (can be used in a 'memento' pattern for undo/redo, 
macros record/playback), but also this is
why some types, where the interface won't fit, need to be natively streamables.

Cheers.
Lo.



Received: from zerodeux.net ([62.212.104.175])
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 191SY0-00006V-00
        for <[EMAIL PROTECTED]>; Fri, 04 Apr 2003 06:52:05 -0800
Received: from zerodeux.net (localhost [127.0.0.1])
        by zerodeux.net (Postfix) with SMTP id 23FE8AFAD
        for <[EMAIL PROTECTED]>; Fri,  4 Apr 2003 16:52:00 +0200 (CEST)
Received: from 192.168.1.3
        (SquirrelMail authenticated user zerodeux)
        by zerodeux.net with HTTP;
        Fri, 4 Apr 2003 16:52:00 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
Subject: Re: [NGL-devel] serialization
From: "Vincent Caron" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
X-Mailer: SquirrelMail (version 1.2.10)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Fri Apr  4 06:53:22 2003
X-Original-Date: Fri, 4 Apr 2003 16:52:00 +0200 (CEST)

Could we go on with this on monday ? I'm catching a train in 45min, and I'm off 
in the
mountains these next two days.

Have a nice WE!





Received: from logic.phpwebhosting.com ([66.33.1.213])
        by sc8-sf-list1.sourceforge.net with smtp (Exim 3.31-VA-mm2 #1 (Debian))
        id 191Ss3-0004Fx-00
        for <[EMAIL PROTECTED]>; Fri, 04 Apr 2003 07:12:47 -0800
Received: (qmail 6450 invoked by uid 508); 4 Apr 2003 15:12:36 -0000
Received: from unknown (HELO FLYER) (212.194.46.153)
  by logic.phpwebhosting.com with SMTP; 4 Apr 2003 15:12:36 -0000
Message-ID: <[EMAIL PROTECTED]>
From: "Lorenzo Pastrana" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>        <[EMAIL PROTECTED]>        <[EMAIL 
PROTECTED]>        <[EMAIL PROTECTED]>        <[EMAIL PROTECTED]>        
<[EMAIL PROTECTED]>        <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
Subject: Re: [NGL-devel] serialization
Organization: Kinopsis
MIME-Version: 1.0
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Fri Apr  4 07:14:44 2003
X-Original-Date: Fri, 4 Apr 2003 17:14:39 +0200

> Could we go on with this on monday ? I'm catching a train in 45min, and I'm 
> off in the
> mountains these next two days.

Hehe happy you.. 

> Have a nice WE!

Toi meme ! ;)



Received: from zerodeux.net ([62.212.104.175])
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 1932v9-0000LA-00
        for <[EMAIL PROTECTED]>; Tue, 08 Apr 2003 16:54:31 -0700
Received: from zerodeux.net (localhost [127.0.0.1])
        by zerodeux.net (Postfix) with SMTP id F41CDB6FB
        for <[EMAIL PROTECTED]>; Wed,  9 Apr 2003 01:54:30 +0200 (CEST)
Received: from 192.168.1.3
        (SquirrelMail authenticated user zerodeux)
        by zerodeux.net with HTTP;
        Wed, 9 Apr 2003 01:54:31 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
From: "Vincent Caron" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
X-Mailer: SquirrelMail (version 1.2.10)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_20030409015431_83559"
Subject: [NGL-devel] nglInputDevice proposal
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Tue Apr  8 16:55:07 2003
X-Original-Date: Wed, 9 Apr 2003 01:54:31 +0200 (CEST)

------=_20030409015431_83559
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

One of the last thing of the TODO's pending tasks was reviving the input device
support, aka joystick and such. Here is a header losely based on the nglInput.h 
in CVS
:

* renamed nglInput to less ubiquitous nglInputDevice (this is getting crowded, 
70
classes in NGL !)

* removed input type enum, added the more versatile GetName() string : as long 
as
sensible keywords are in there, that's cool. The Linux input driver sends pretty
accurate 'device model' strings (even for non-USB), all the better. It's easy to
generate a '%d axis, %d buttons joystick' or 'tablet' name a fallback.

* added GetPort() which should contain anything useful to physically locate the
joystick. This is mostly needed for game configuration saving, where user 
prefer to
configure binding for whatever is connected on 'game port 1' (à la 
Atari/Amiga). It's
of course also possible to save bindings relative to a specific device using 
GetName()
(unless two identical devices are plugged). To be adjusted for every platform 
and each
API, the output must only be reproductible.

* nglInputDevice is actually a proxy to a nglInputDeviceInstance class. Ref 
counting
had to be used somewhere (at least for Linux), this way it is transparent and 
we just
have to tell user to delete objects returned by Enum() when they don't want 
them. It
also allows me to cope with multiple APIs easily (XInput, Linux input, and 
legacy
joystick interface + FreeBSD variant), in my case nglInputDevice can hide 
several
nglInputDeviceIntance-based implementations.

* nglInputDeviceInstance is an internal class representing a physical device. 
The
Linux implementation can heritate both from this and nglEvent for a convenient 
device
node access.

* I removed IsConnected(), instead Update() returns false if the device is 
not/no more
present. We can have nglInputDevice object that represent input devices no 
longer
valid, that is also where the ref'counting is handy (again, true for Linux :)).

* This simple test works well here with my sample Linux joystick implementation 
:

  while ((dev = nglInputDevice::Enum(i++))) {
    dev->Dump();
    delete dev;
  }



------=_20030409015431_83559
Content-Type: application/octet-stream; name="nglInputDevice.h"
Content-Disposition: attachment; filename="nglInputDevice.h"
Content-Transfer-Encoding: base64

LyoKICBOR0wgLSBDKysgY3Jvc3MtcGxhdGZvcm0gZnJhbWV3b3JrIGZvciBPcGVuR0wgYmFzZWQg
YXBwbGljYXRpb25zCiAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgTkdMIFRlYW0KCiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCiAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAs
IEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoqLwoKLyohClxmaWxlICBuZ2xJbnB1dERldmlj
ZS5oClxicmllZiBJbnB1dCBkZXZpY2VzIGludGVyZmFjZSAobm90IG1vdXNlIG9yIGtleWJvYXJk
KQoqLwoKI2lmbmRlZiBfX25nbElucHV0RGV2aWNlX2hfXwojZGVmaW5lIF9fbmdsSW5wdXREZXZp
Y2VfaF9fCgojaW5jbHVkZSAibmdsLmgiCiNpbmNsdWRlICJuZ2xTdHJpbmcuaCIKCgovLyEgSW5w
dXQgZGV2aWNlcyBpbnRlcmZhY2UKLyohCkZJWE1FCiAqLwpjbGFzcyBuZ2xJbnB1dERldmljZQp7
CnB1YmxpYzoKICAvKiogQG5hbWUgRW51bWVyYXRpb24gKi8KICAvL0B7CiAgc3RhdGljIG5nbElu
cHV0RGV2aWNlKiBFbnVtICh1aW50IEluZGV4KTsKICAvL0B9CgogIC8qKiBAbmFtZSBMaWZlIGN5
Y2xlICovCiAgLy9AewogIHZpcnR1YWwgfm5nbElucHV0RGV2aWNlKCk7CiAgLy9AfQoKICAvKiog
QG5hbWUgU3RhdHVzIHBvbGxpbmcgKi8KICAvL0B7CiAgYm9vbCAgICAgIFVwZGF0ZSgpOwogIG5n
bFN0cmluZyBHZXRQb3J0KCk7CiAgbmdsU3RyaW5nIEdldE5hbWUoKTsKICB1aW50ICAgICAgR2V0
QnV0dG9uQ291bnQoKTsKICBib29sICAgICAgR2V0QnV0dG9uU3RhdGUgKHVpbnQgSW5kZXgpOwog
IHVpbnQgICAgICBHZXRBeGVDb3VudCgpOwogIGZsb2F0ICAgICBHZXRBeGVWYWx1ZSAodWludCBJ
bmRleCk7CiAgdm9pZCAgICAgIER1bXAgKGludCBMZXZlbCA9IDApIGNvbnN0OwogIC8vQH0KCnBy
aXZhdGU6CiAgY2xhc3MgbmdsSW5wdXREZXZpY2VJbnN0YW5jZSogbXBEZXZpY2U7CgogIG5nbElu
cHV0RGV2aWNlKGNsYXNzIG5nbElucHV0RGV2aWNlSW5zdGFuY2UqIHBEZXZpY2UpOwoKICBmcmll
bmQgY2xhc3MgbmdsSW5wdXREZXZpY2VJbnN0YW5jZTsKfTsKCiNlbmRpZiAvLyBfX25nbElucHV0
RGV2aWNlX2hfXwo=
------=_20030409015431_83559
Content-Type: application/octet-stream; name="nglInputDeviceInstance.h"
Content-Disposition: attachment; filename="nglInputDeviceInstance.h"
Content-Transfer-Encoding: base64

LyoKICBOR0wgLSBDKysgY3Jvc3MtcGxhdGZvcm0gZnJhbWV3b3JrIGZvciBPcGVuR0wgYmFzZWQg
YXBwbGljYXRpb25zCiAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgTkdMIFRlYW0KCiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCiAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAs
IEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoqLwoKI2lmbmRlZiBfX25nbElucHV0RGV2aWNl
SW5zdGFuY2VfaF9fCiNkZWZpbmUgX19uZ2xJbnB1dERldmljZUluc3RhbmNlX2hfXwoKI2luY2x1
ZGUgIm5nbC5oIgojaW5jbHVkZSAibmdsSW5wdXREZXZpY2UuaCIKI2luY2x1ZGUgPHZlY3Rvcj4K
CgpjbGFzcyBuZ2xJbnB1dERldmljZUluc3RhbmNlCnsKcHVibGljOgogIG5nbFN0cmluZyAgICAg
ICAgICBQb3J0OwogIG5nbFN0cmluZyAgICAgICAgICBOYW1lOwogIHN0ZDo6dmVjdG9yPGZsb2F0
PiBBeGVzOwogIHN0ZDo6dmVjdG9yPGJvb2w+ICBCdXR0b25zOwoKICBzdGF0aWMgbmdsSW5wdXRE
ZXZpY2UqIENyZWF0ZURldmljZShuZ2xJbnB1dERldmljZUluc3RhbmNlKiBtcERldmljZSk7Cgog
IG5nbElucHV0RGV2aWNlSW5zdGFuY2UoKTsKICB2aXJ0dWFsIH5uZ2xJbnB1dERldmljZUluc3Rh
bmNlKCk7CgogIHZpcnR1YWwgYm9vbCBVcGRhdGUoKTsKCiAgdm9pZCBJbmNSZWYoKTsKICB2b2lk
IERlY1JlZigpOwoKcHJpdmF0ZToKICB1aW50IG1SZWZDbnQ7Cn07CgojZW5kaWYgLy8gX19uZ2xJ
bnB1dERldmljZUluc3RhbmNlX2hfXwo=

------=_20030409015431_83559--



Received: from relay-1v.club-internet.fr ([194.158.96.112])
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 193CJ0-0006b6-00
        for <[EMAIL PROTECTED]>; Wed, 09 Apr 2003 02:55:46 -0700
Received: from meeloo.net (f12v-10-204.d1.club-internet.fr [213.44.181.204])
        by relay-1v.club-internet.fr (Postfix) with ESMTP id 5BABD16AC
        for <[EMAIL PROTECTED]>; Wed,  9 Apr 2003 11:55:10 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
From: Sebastien Metrot <[EMAIL PROTECTED]>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3) 
Gecko/20030312
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: [EMAIL PROTECTED]
Subject: Re: [NGL-devel] nglInputDevice proposal
References: <[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Wed Apr  9 02:57:04 2003
X-Original-Date: Wed, 09 Apr 2003 11:54:56 +0200

I'd add :
  nglString      GetButtonName(uint i);
  nglString      GetAxeName(uint i);
Any reason why some attributes are public?

Otherwise it's ok for me.

MeeLoo


Vincent Caron wrote:

>One of the last thing of the TODO's pending tasks was reviving the input device
>support, aka joystick and such. Here is a header losely based on the 
>nglInput.h in CVS
>:
>
>* renamed nglInput to less ubiquitous nglInputDevice (this is getting crowded, 
>70
>classes in NGL !)
>
>* removed input type enum, added the more versatile GetName() string : as long 
>as
>sensible keywords are in there, that's cool. The Linux input driver sends 
>pretty
>accurate 'device model' strings (even for non-USB), all the better. It's easy 
>to
>generate a '%d axis, %d buttons joystick' or 'tablet' name a fallback.
>
>* added GetPort() which should contain anything useful to physically locate the
>joystick. This is mostly needed for game configuration saving, where user 
>prefer to
>configure binding for whatever is connected on 'game port 1' (à la 
>Atari/Amiga). It's
>of course also possible to save bindings relative to a specific device using 
>GetName()
>(unless two identical devices are plugged). To be adjusted for every platform 
>and each
>API, the output must only be reproductible.
>
>* nglInputDevice is actually a proxy to a nglInputDeviceInstance class. Ref 
>counting
>had to be used somewhere (at least for Linux), this way it is transparent and 
>we just
>have to tell user to delete objects returned by Enum() when they don't want 
>them. It
>also allows me to cope with multiple APIs easily (XInput, Linux input, and 
>legacy
>joystick interface + FreeBSD variant), in my case nglInputDevice can hide 
>several
>nglInputDeviceIntance-based implementations.
>
>* nglInputDeviceInstance is an internal class representing a physical device. 
>The
>Linux implementation can heritate both from this and nglEvent for a convenient 
>device
>node access.
>
>* I removed IsConnected(), instead Update() returns false if the device is 
>not/no more
>present. We can have nglInputDevice object that represent input devices no 
>longer
>valid, that is also where the ref'counting is handy (again, true for Linux :)).
>
>* This simple test works well here with my sample Linux joystick 
>implementation :
>
>  while ((dev = nglInputDevice::Enum(i++))) {
>    dev->Dump();
>    delete dev;
>  }
>
>
>  
>



Received: from smtp-102-tuesday.nerim.net ([62.4.16.102] helo=kraid.nerim.net)
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 193DmS-0003Zu-00
        for <[EMAIL PROTECTED]>; Wed, 09 Apr 2003 04:30:16 -0700
Received: from zerodeux.net (mksp.net2.nerim.net [62.4.19.30])
        by kraid.nerim.net (Postfix) with ESMTP id 02A9C40F48
        for <[EMAIL PROTECTED]>; Wed,  9 Apr 2003 13:30:12 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
From: Vincent Caron <[EMAIL PROTECTED]>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021226 
Debian/1.2.1-9
MIME-Version: 1.0
To: [EMAIL PROTECTED]
Subject: Re: [NGL-devel] nglInputDevice proposal
References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Wed Apr  9 04:31:04 2003
X-Original-Date: Wed, 09 Apr 2003 13:30:12 +0200

Sebastien Metrot wrote:
> I'd add :
>  nglString      GetButtonName(uint i);
>  nglString      GetAxeName(uint i);

How can we fill these ? I can't do better than 'axis %d' and 'button %d' 
for Linux, what is the state for other APIs ?

> Any reason why some attributes are public?

They are public but in a private class (this header is internal, namely 
in src/input/), this way we don't have to code the Get/Set accessors for 
every field. The NGL user does not know about nglInputDeviceInstance.



Received: from relay-2m.club-internet.fr ([194.158.104.41])
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 193F6x-0003VT-00
        for <[EMAIL PROTECTED]>; Wed, 09 Apr 2003 05:55:31 -0700
Received: from meeloo.net (f12v-10-204.d1.club-internet.fr [213.44.181.204])
        by relay-2m.club-internet.fr (Postfix) with ESMTP id D95F8168C
        for <[EMAIL PROTECTED]>; Wed,  9 Apr 2003 14:54:56 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
From: Sebastien Metrot <[EMAIL PROTECTED]>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3) 
Gecko/20030312
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: [EMAIL PROTECTED]
Subject: Re: [NGL-devel] nglInputDevice proposal
References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Wed Apr  9 05:57:02 2003
X-Original-Date: Wed, 09 Apr 2003 14:54:53 +0200

Vincent Caron wrote:

> Sebastien Metrot wrote:
>
>> I'd add :
>>  nglString      GetButtonName(uint i);
>>  nglString      GetAxeName(uint i);
>
>
> How can we fill these ? I can't do better than 'axis %d' and 'button 
> %d' for Linux, what is the state for other APIs ?


I think there are APIs for this both in Win32 and Mac. I'll check asap.


>
>> Any reason why some attributes are public?
>
>
> They are public but in a private class (this header is internal, 
> namely in src/input/), this way we don't have to code the Get/Set 
> accessors for every field. The NGL user does not know about 
> nglInputDeviceInstance.
>
>
Hmmm... :-/

MeeLoo





Received: from zerodeux.net ([62.212.104.175])
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 198qUD-0000W9-00
        for <[EMAIL PROTECTED]>; Thu, 24 Apr 2003 16:50:42 -0700
Received: from zerodeux.net (localhost [127.0.0.1])
        by zerodeux.net (Postfix) with SMTP id 97179B3CC
        for <[EMAIL PROTECTED]>; Fri, 25 Apr 2003 01:50:41 +0200 (CEST)
Received: from 192.168.1.3
        (SquirrelMail authenticated user zerodeux)
        by zerodeux.net with HTTP;
        Fri, 25 Apr 2003 01:50:41 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
From: "Vincent Caron" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
X-Mailer: SquirrelMail (version 1.2.10)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Subject: [NGL-devel] Possible new font for NGL
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Thu Apr 24 16:51:05 2003
X-Original-Date: Fri, 25 Apr 2003 01:50:41 +0200 (CEST)

Bitstream and the Gnome project released a whole font family (sans, serif and 
mono
with slant/weight combinations) with a very cool license. They are very well 
designed
and hinted truetype fonts. I now use these fonts with antialising on my whole 
desktop,
and besides the lack of gamma correction, it's very slick and crisp all over the
place. Really impressive (at last!).

The mono face could replace our current one (also from Bitstream, a medium 
quality
hinted Postscript font). Here is a comparison with some comments :

  http://zerodeux.net/misc/ngl/fontcomp.html

Hard to make the choice, I like different features in both. I globally prefer 
Vera
because it looks lighter without the serifs. Non-alphanumeric characters are 
also much
nicer.

Comments ?





Received: from zerodeux.net ([62.212.104.175])
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 198rfJ-0007Nn-00
        for <[EMAIL PROTECTED]>; Thu, 24 Apr 2003 18:06:13 -0700
Received: from zerodeux.net (localhost [127.0.0.1])
        by zerodeux.net (Postfix) with SMTP id E8558B3CC
        for <[EMAIL PROTECTED]>; Fri, 25 Apr 2003 03:06:12 +0200 (CEST)
Received: from 192.168.1.3
        (SquirrelMail authenticated user zerodeux)
        by zerodeux.net with HTTP;
        Fri, 25 Apr 2003 03:06:13 +0200 (CEST)
Message-ID: <[EMAIL PROTECTED]>
From: "Vincent Caron" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
X-Mailer: SquirrelMail (version 1.2.10)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Subject: [NGL-devel] NGL (very) short-term status
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Thu Apr 24 18:07:05 2003
X-Original-Date: Fri, 25 Apr 2003 03:06:13 +0200 (CEST)

A quick list of what's pending in my working repository :


* autoconf/automake support : fully implemented and tested for Linux, will be a 
hell
of a commit technically speaking. Will break the Carbon build until someone 
finds it
cool to debug M4 under MacOSX. Will break the NUI build until it also goes
autoconf/automake.

The was a tedious job (autoconf is _evil_), but maintenance has become a 
thrill. Now
install/uninstall, source and doc packaging (gz/bz2/zip) and package testing
(package,extract,build,install,uninstall,check leftovers) is fully automated.
Configuration is also easier (and more standard), and dependencies are 
automatically
detected and used (ie. libpng on/off, freetype on/off, ccache, etc). Running
'./configure' spits a lot of things and then :

  Host family      : unix
  Build            : debug
  Compiler         : ccache g++ (g++ (GCC) 3.2.3 20030415 (Debian prerelease))
  Display          : X11
  Extensions       : XF86VidMode
  Text conv.       : iconv
  PNG support      : yes
  JPEG support     : yes
  FreeType support : yes

As for automake, this is hopefully simple and efficient. Makefiles have the same
number of lines than whith the home-grown build scheme. You get static+dynamic
libraries, wrapper for running examples against DLL, deep dependency tracking
(including automake files themselves), parallel build and a handful of nice 
thingies
which all come virtually for free. Example for release mode :

-rwxr-xr-x    1 zerodeux zerodeux    20604 Apr 25 02:59 
examples/gears/.libs/gears
-rwxr-xr-x    1 zerodeux zerodeux   465668 Apr 25 02:59 
src/.libs/libngl.so.0.0.0


* input device : I've written a documentation on the internals, and a nice 
interactive
demo is almost finished (~1h work). The question of axis & buttons naming is 
pending,
waiting until we have more info (or an implementation) for other platforms than 
Linux.


* fonts : the metrics demo needs to be finished, and 
nglGlyphLayout::GetGlyphAt()
should be implemented and demonstrated (several hours, this is boring and 
delicate).
At this point, the actual nglFont will be deprecated.

To keep some time for adaptation in NUI, I proposed to rename all classes with 
their
final names in NGL, using 'nglFont1' for the to-be-depracated class. This way 
NGL can
finalize its API immediatly and NUI implements the new font backend 
progressively and
in parallel of the old one. Can be commited at any time, this is secretary work.


* streams : I'm about to merge input and output streams into their own single
bidirectionnal class. It should mean that removing the 'I' and 'O' in your code 
should
be sufficient, since the new API will be the union of input & output streams. 
This
move is mandatory for network support IMHO. This job will be mostly easy, needs 
more
work on the memory stream classes which are currently not bidirectionnal-ready 
at all.


* I've got other things about nglConsole, nglString and nglImage, but I don't
explicitely require them for the release (and I don't expect much API breakage 
there).
Since I'd like to do some polishing (doc like INSTALL is outdated) and a test 
release
before going public, there's enough work for the next weeks. What about setting 
a
release date to help the motivation ? Since Thursday May 15 is the Matrix 
Reloaded
release (USA & Cannes), that could be a match :).





Received: from meeloo.net ([62.4.18.112])
        by sc8-sf-list1.sourceforge.net with esmtp 
        (Cipher TLSv1:DES-CBC3-SHA:168) (Exim 3.31-VA-mm2 #1 (Debian))
        id 198wt1-0005Me-00
        for <[EMAIL PROTECTED]>; Thu, 24 Apr 2003 23:40:44 -0700
Received: from [10.1.1.131] (helo=meeloo.net ident=HydraIRC)
        by meeloo.net with esmtp (Exim 3.35 #1 (Debian))
        id 198wsR-0002JC-00
        for <[EMAIL PROTECTED]>; Fri, 25 Apr 2003 08:40:07 +0200
Message-ID: <[EMAIL PROTECTED]>
From: Sebastien Metrot <[EMAIL PROTECTED]>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3) 
Gecko/20030312
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:  [EMAIL PROTECTED]
Subject: Re: [NGL-devel] Possible new font for NGL
References: <[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Thu Apr 24 23:42:12 2003
X-Original-Date: Fri, 25 Apr 2003 08:40:03 +0200

I agree: Vera is very nice. I vote for its inclusion in ngl :).
Nice comparison too :).

Meeloo

Vincent Caron wrote:

>Bitstream and the Gnome project released a whole font family (sans, serif and 
>mono
>with slant/weight combinations) with a very cool license. They are very well 
>designed
>and hinted truetype fonts. I now use these fonts with antialising on my whole 
>desktop,
>and besides the lack of gamma correction, it's very slick and crisp all over 
>the
>place. Really impressive (at last!).
>
>The mono face could replace our current one (also from Bitstream, a medium 
>quality
>hinted Postscript font). Here is a comparison with some comments :
>
>  http://zerodeux.net/misc/ngl/fontcomp.html
>
>Hard to make the choice, I like different features in both. I globally prefer 
>Vera
>because it looks lighter without the serifs. Non-alphanumeric characters are 
>also much
>nicer.
>
>Comments ?
>
>
>  
>



Received: from meeloo.net ([62.4.18.112])
        by sc8-sf-list1.sourceforge.net with esmtp 
        (Cipher TLSv1:DES-CBC3-SHA:168) (Exim 3.31-VA-mm2 #1 (Debian))
        id 198x3a-0001Vk-00
        for <[EMAIL PROTECTED]>; Thu, 24 Apr 2003 23:51:39 -0700
Received: from [10.1.1.131] (helo=meeloo.net ident=HydraIRC)
        by meeloo.net with esmtp (Exim 3.35 #1 (Debian))
        id 198x31-0002MK-00
        for <[EMAIL PROTECTED]>; Fri, 25 Apr 2003 08:51:03 +0200
Message-ID: <[EMAIL PROTECTED]>
From: Sebastien Metrot <[EMAIL PROTECTED]>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3) 
Gecko/20030312
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:  [EMAIL PROTECTED]
Subject: Re: [NGL-devel] NGL (very) short-term status
References: <[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Thu Apr 24 23:53:03 2003
X-Original-Date: Fri, 25 Apr 2003 08:51:00 +0200

As May 16th is my 31 birthday let's say I'd love to get this as a 
present :D.
Sorry for not being able to help much at the moment, my new job is quite 
overwhelming (we are in release mode too).
I've been toying with changing some big stuff in NUI last week end: i'm 
trying to get partial rendering working on opengl and software. It's 
almost ok but still needs some work (i'll have to break down 
nuiMainWindow as Vincent predicted for quite a while :).
I'll try to look into the current pending ngl issues for win32/OSX as 
soon as I can (may be this week end...).

MeeLoo

Vincent Caron wrote:

>A quick list of what's pending in my working repository :
>
>
>* autoconf/automake support : fully implemented and tested for Linux, will be 
>a hell
>of a commit technically speaking. Will break the Carbon build until someone 
>finds it
>cool to debug M4 under MacOSX. Will break the NUI build until it also goes
>autoconf/automake.
>
>The was a tedious job (autoconf is _evil_), but maintenance has become a 
>thrill. Now
>install/uninstall, source and doc packaging (gz/bz2/zip) and package testing
>(package,extract,build,install,uninstall,check leftovers) is fully automated.
>Configuration is also easier (and more standard), and dependencies are 
>automatically
>detected and used (ie. libpng on/off, freetype on/off, ccache, etc). Running
>'./configure' spits a lot of things and then :
>
>  Host family      : unix
>  Build            : debug
>  Compiler         : ccache g++ (g++ (GCC) 3.2.3 20030415 (Debian prerelease))
>  Display          : X11
>  Extensions       : XF86VidMode
>  Text conv.       : iconv
>  PNG support      : yes
>  JPEG support     : yes
>  FreeType support : yes
>
>As for automake, this is hopefully simple and efficient. Makefiles have the 
>same
>number of lines than whith the home-grown build scheme. You get static+dynamic
>libraries, wrapper for running examples against DLL, deep dependency tracking
>(including automake files themselves), parallel build and a handful of nice 
>thingies
>which all come virtually for free. Example for release mode :
>
>-rwxr-xr-x    1 zerodeux zerodeux    20604 Apr 25 02:59 
>examples/gears/.libs/gears
>-rwxr-xr-x    1 zerodeux zerodeux   465668 Apr 25 02:59 
>src/.libs/libngl.so.0.0.0
>
>
>* input device : I've written a documentation on the internals, and a nice 
>interactive
>demo is almost finished (~1h work). The question of axis & buttons naming is 
>pending,
>waiting until we have more info (or an implementation) for other platforms 
>than Linux.
>
>
>* fonts : the metrics demo needs to be finished, and 
>nglGlyphLayout::GetGlyphAt()
>should be implemented and demonstrated (several hours, this is boring and 
>delicate).
>At this point, the actual nglFont will be deprecated.
>
>To keep some time for adaptation in NUI, I proposed to rename all classes with 
>their
>final names in NGL, using 'nglFont1' for the to-be-depracated class. This way 
>NGL can
>finalize its API immediatly and NUI implements the new font backend 
>progressively and
>in parallel of the old one. Can be commited at any time, this is secretary 
>work.
>
>
>* streams : I'm about to merge input and output streams into their own single
>bidirectionnal class. It should mean that removing the 'I' and 'O' in your 
>code should
>be sufficient, since the new API will be the union of input & output streams. 
>This
>move is mandatory for network support IMHO. This job will be mostly easy, 
>needs more
>work on the memory stream classes which are currently not bidirectionnal-ready 
>at all.
>
>
>* I've got other things about nglConsole, nglString and nglImage, but I don't
>explicitely require them for the release (and I don't expect much API breakage 
>there).
>Since I'd like to do some polishing (doc like INSTALL is outdated) and a test 
>release
>before going public, there's enough work for the next weeks. What about 
>setting a
>release date to help the motivation ? Since Thursday May 15 is the Matrix 
>Reloaded
>release (USA & Cannes), that could be a match :).
>
>  
>



Received: from smtp-105-friday.nerim.net ([62.4.16.105] helo=kraid.nerim.net)
        by sc8-sf-list1.sourceforge.net with esmtp (Exim 3.31-VA-mm2 #1 
(Debian))
        id 199040-0004Ap-00
        for <[EMAIL PROTECTED]>; Fri, 25 Apr 2003 03:04:16 -0700
Received: from vincent (mksp.net2.nerim.net [62.4.19.30])
        by kraid.nerim.net (Postfix) with ESMTP id CB6D240F84
        for <[EMAIL PROTECTED]>; Fri, 25 Apr 2003 12:04:11 +0200 (CEST)
From: Vincent Caron <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: Re: [NGL-devel] NGL (very) short-term status
Message-ID: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
Mime-Version: 1.0
Content-Type: text/plain; format=flowed; charset=ISO-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <[EMAIL PROTECTED]>; from [EMAIL PROTECTED] on Fri, Apr 25, 2003 
at 08:51:00 +0200
X-Mailer: Balsa 2.0.10
Lines: 6
Sender: [EMAIL PROTECTED]
Errors-To: [EMAIL PROTECTED]
X-BeenThere: [EMAIL PROTECTED]
X-Mailman-Version: 2.0.9-sf.net
Precedence: bulk
Reply-To: [EMAIL PROTECTED]
List-Help: <mailto:[EMAIL PROTECTED]>
List-Post: <mailto:[EMAIL PROTECTED]>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Id: NGL developers discussion list <ngl-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/ngl-devel>,
        <mailto:[EMAIL PROTECTED]>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=ngl-devel>
Date: Fri Apr 25 03:05:06 2003
X-Original-Date: Fri, 25 Apr 2003 12:04:12 +0200

On 2003.04.25 08:51, Sebastien Metrot wrote:
> As May 16th is my 31 birthday let's say I'd love to get this as a present 
> :D.

Cool, 16th is also the Matrix release in french public theaters, 200% geeky 
:).

Reply via email to