Farid Zaripov wrote: >Subject: Re: do we still need rwstderr.rc? > >I agree that if gencat would accept .msg files instead of .rc files it >would be great improvement. But then we need to decide how to deal >with possible multiple sets in .msg file. The .rc file doesn't have >the sets. We can encode set number and message number to ID in .rc >file (0 <= ID <= 0xffff): > >ID = set * 0x100 + msg - 256 sets by 256 messages per set, or >ID = set * 0x1000 + msg - 16 sets by 4096 messages per set >
This is a little off topic, but since it was just brought it up I figure I should mention it. IMO, there is actually a pretty annoying compatibility problem with this behavior. On windows, you cannot use std::messages<>::get() as you would on non-windows platforms because the set number is ignored on windows. You can see evidence of this issue in the tests [22.locale.messages.cpp and 22.locale.messages.mt.cpp]. Those tests create a message catalog with 5 sets of 5 messages. On a non-windows system, msgs.get (cat, 5, 5, "") returns the fifth message in the fifth set, but on windows systems it returns the fifth message in the _first_ set. The tests skirt around this issue with a function named msg_id(). It takes a set number and a message number and returns the actual message number using the scheme mentioned above. If there is only one message set in the catalog, there is no problem. The other frustrating thing is that I wasn't able to find anything in the documentation that mentioned this limitation, or the workaround. The example sidesteps the issue in another way, by giving each message a unique id. Is this wrong, or am I just misinformed or confused? Travis > BTW, I see that currently rwstderr.rc file is not used in build >process. > >Farid. >