[bt-devel] namespace problems

Joachim Ansorg bt-devel@crosswire.org
Sun, 20 Oct 2002 21:02:23 +0200


Hi Nicolay!
It's nice to read something of you again! How are you?

I think the current namespace solution is ways better than these ugly #defines 
:)
But I'm open for any better solution which is translator and developer 
friendly.
Any ideas?

Joachim

>  Joachim, are you sure this namespace based approach is good way to do
> i18n and resources management? I feel it's not. Maybe resourse file
> +resouse manager would be better?
>
>  Nikolay.
>
> On Sat, 19 Oct 2002, Joachim Ansorg wrote:
> > David White, I think this eMail is especially for you because you know
> > the namespaces well.
> >
> > You pointed me into the direction to use namespaces for the treelike
> > structure I wanted.
> >
> > Now I have something like
> >
> > namespace CResMgr {
> >   inline const QString makeToolTip( const QString& text ) {
> >     return text;
> >   };
> >   inline const QString makeWhatsThis( const QString& title, const
> > QString& description )  {
> >     return
> > QString::fromLatin1("<center><B>%1</B></center><HR>%2").arg(title).arg(de
> >scription); };
> >
> >   namespace mainMenu { //Main menu
> >     namespace file { //Main menu->File
> >       namespace clearQueue {
> >         const QString tooltip     = makeToolTip( i18n("Clear the printing
> > queue") );
> >         const QString whatsthis   = makeWhatsThis( tooltip, i18n("Clear
> > the print queue of BibleTime. All items will be removed from the list and
> > the print button will be disabled.") );
> >         const QString icon        = QString::fromLatin1("queue");
> >         const KShortcut accel     = KShortcut();
> >         const char* actionName    = "fileClearQueue_action";
> >       }
> >       namespace print { //a standard action
> >         const QString tooltip     = makeToolTip( i18n("Open the
> > printerdialog") );
> >         const QString whatsthis   = makeWhatsThis( tooltip, i18n("Open
> > the printer dialog of BibleTime.  Here you can edit the print queue and
> > assign styles to the items.") );
> >       }
> >       namespace quit { //a standard action
> >         const QString tooltip     = makeToolTip( i18n("Close BibleTime")
> > ); const QString whatsthis   = makeWhatsThis( tooltip, i18n("Close
> > BibleTime and save the settings.") );
> >       }
> >     }
> > }
> > etc.
> >
> > But compiling BibleTime with this header included in two or more places I
> > get the following compiler warnings about multiple symbol definitions:
> >
> > ./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x0):
> > multiple definition of `CResMgr::mainMenu::file::clearQueue::actionName'
> > bibletime_init.o(.data+0x0): first defined here
> > ./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x4):
> > multiple definition of
> > `CResMgr::mainMenu::view::showMainIndex::actionName'
> > bibletime_init.o(.data+0x4): first defined here
> > ./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x8):
> > multiple definition of `CResMgr::mainMenu::mainIndex::search::actionName'
> > bibletime_init.o(.data+0x8): first defined here
> > ./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0xc):
> > multiple definition of
> > `CResMgr::mainMenu::window::loadProfile::actionName'
> > bibletime_init.o(.data+0xc): first defined here
> >
> > How can I avoid these problems? I have no idea.
> > Thank you very much for any help!

-- 
Joachim Ansorg
www.bibletime.de
www.ansorgs.de