Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Feature Requests
 Proper understanding of namespaces
 New Topic  Reply to Topic
 Printer Friendly
Author  Topic Next Topic  

KRG
Senior Member

USA
43 Posts

Posted - Oct 15 2025 :  1:20:01 PM  Show Profile  Reply with Quote
I filed a ticket on this around 3+ years ago and I'm still waiting. It would be great if VAX could understand namespaces and nested namespaces.

if I have something like this:


namespace Some::Nested::Namespace
{
    struct Foo
    {
        enum class Bar
        {
            A,
            B,
            C
        };

        Bar GetBar() const;
    };
}


then if I generate an implementation for GetBar, I end up with this mess:


namespace Some::Nested::Namespace
{
    Some::Nested::Namespace::Foo::Bar Foo::GetBar() const
    {

    }
}


If I try to autogenerate a switch statement for the enum, then I get this mess:


namespace Some::Nested::Namespace
{
    Some::Nested::Namespace::Foo::Bar Foo::GetBar() const
    {
        Bar varBar;

        switch ( varBar )
        {
            case Some::Nested::Namespace::Foo::Bar::A:
            break;
            case Some::Nested::Namespace::Foo::Bar::B:
            break;
            case Some::Nested::Namespace::Foo::Bar::C:
            break;
            default:
            break;
        }
    }
}


VAX obviously has some understanding of namespaces as it will create the definition of the function in the correct namespace block but it seems to fail when generating the types within those blocks.

what I would like is this:


namespace Some::Nested::Namespace
{
    Foo::Bar Foo::GetBar() const
    {
        Bar varBar;

        switch ( varBar )
        {
            case Bar::A:
            break;
            case Bar::B:
            break;
            case Bar::C:
            break;
            default:
            break;
        }
    }
}

feline
Whole Tomato Software

United Kingdom
19233 Posts

Posted - Oct 16 2025 :  11:48:01 AM  Show Profile  Reply with Quote
Which IDE and version of VA are you using?

Just starting with the first bit, I am assuming you are triggering Create Implementation on the class member function "GetBar" in the header file, and the cpp file already contains the empty nested namespace block. In this situation, VA is generating the expected code:

namespace Some::Nested::Namespace
{

	Bar Foo::GetBar() const
	{

	}

}

for me. This is testing using VS2022 and VA 2568.0

zen is the art of being at one with the two'ness
Go to Top of Page

KRG
Senior Member

USA
43 Posts

Posted - Oct 17 2025 :  8:22:59 PM  Show Profile  Reply with Quote
Latest visual studio and latest VAX.

And it's absolutely not doing that for me:

here's a video of what it does for me: https://youtu.be/ts_Bx_Lyufg
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19233 Posts

Posted - Oct 20 2025 :  11:59:06 AM  Show Profile  Reply with Quote
So... I have one pair of files where VA works as expected, and one pair of files where VA completely ignores the namespace in the cpp file. In neither case do I get what you get. Off to experiment with something further up the file having an effect on things.

Is this a small test solution, or did you add these files to an existing solution? If this is a test solution, would you be able to send me a copy?

Also can you please export your VA and IDE settings and send them to me:

VA Options -> Advanced -> Logging and Recovery -> Export Settings
IDE tools menu -> Import and Export Settings -> Export selected environment settings

I can then import them here and see if I can reproduce the problem. Not sure where to look for the triggers that must exist to explain the different effects in different places.

Please send me the files via email:

[email protected]

including this thread ID or URL in the description, so we can match it up.

zen is the art of being at one with the two'ness

Edited by - feline on Oct 20 2025 11:59:22 AM
Go to Top of Page

KRG
Senior Member

USA
43 Posts

Posted - Oct 20 2025 :  5:04:39 PM  Show Profile  Reply with Quote
Sent you and email with the requested files.

Thanks!
Go to Top of Page
   Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000