#ifexists This_Namespace if (This_Namespace == "NS3") { if (current_namespace () != "NS3") { failed ("evalfile in NS3"); } } else implements (This_Namespace); %vmessage ("Loading ..."); % From this point on, define and variable defaults to static private variable NS = This_Namespace; define func () { return NS; } #else variable This_Namespace; _debug_info = 1; () = evalfile ("inc.sl"); testing_feature ("more NameSpace routines"); This_Namespace = "NS1"; loop (3) () = evalfile (__FILE__); This_Namespace = "NS2"; () = evalfile (__FILE__); This_Namespace = "NS3"; () = evalfile (__FILE__, "NS3"); use_namespace ("NS1"); if (func () != "NS1") failed ("use_namespace 1, found %s", func()); use_namespace ("NS2"); if (func () != "NS2") failed ("use_namespace 2"); use_namespace ("Global"); if (is_defined ("func")) failed ("use_namespace Global"); if (NS1->func () != "NS1") failed ("NS1->func"); if (NS2->func () != "NS2") failed ("NS2->func"); if ("NS1" != eval ("func", "NS1")) failed ("eval in NS1"); if ("NS2" != eval ("func", "NS2")) failed ("eval in NS2"); if ("NS3" != eval ("func", "NS3")) failed ("eval in NS3"); if ("NS4" != eval ("current_namespace()", "NS4")) failed ("eval in NS4"); implements ("foo"); variable X = "foo"; implements ("bar"); variable X = "bar"; if (foo->X != "foo") failed ("foo"); if (bar->X != "bar") failed ("bar"); print ("Ok\n"); exit (0); #endif