public void GenerateStronglyTypedEnums(RegistryContext ctx, string path, EnumerantGroupFilterDelegate filter)
        {
            if (path == null)
            {
                throw new ArgumentNullException("path");
            }

            if (_Registry.Groups.Count == 0)
            {
                return;
            }

            Console.WriteLine("Generate registry enums (strognly typed) to {0}.", path);

            using (SourceStreamWriter sw = new SourceStreamWriter(path, false)) {
                GenerateLicensePreamble(sw);

                sw.WriteLine("// Disable \"'token' is obsolete\" warnings");
                sw.WriteLine("#pragma warning disable 618");
                sw.WriteLine();

                sw.WriteLine("using System;");
                sw.WriteLine();

                sw.WriteLine("namespace {0}", Namespace);
                sw.WriteLine("{");
                sw.Indent();

                foreach (EnumerantGroup enumerantGroup in _Registry.Groups)
                {
                    if ((filter != null) && (filter(enumerantGroup) == false))
                    {
                        continue;
                    }

                    enumerantGroup.GenerateSource(sw, ctx);
                    sw.WriteLine();
                }

                sw.Unindent();

                sw.WriteLine("}");
            }
        }
		public void GenerateStronglyTypedEnums(RegistryContext ctx, string path, EnumerantGroupFilterDelegate filter)
		{
			if (path == null)
				throw new ArgumentNullException("path");

			if (mRegistry.Groups.Count == 0)
				return;

			Console.WriteLine("Generate registry enums (strognly typed) to {0}.", path);

			using (SourceStreamWriter sw = new SourceStreamWriter(path, false)) {
				GenerateLicensePreamble(sw);

				sw.WriteLine("// Disable \"'token' is obsolete\" warnings");
				sw.WriteLine("#pragma warning disable 618");

				sw.WriteLine("using System;");
				sw.WriteLine();

				sw.WriteLine("namespace OpenGL");
				sw.WriteLine("{");
				sw.Indent();

				foreach (EnumerantGroup enumerantGroup in mRegistry.Groups) {
					if ((filter != null) && (filter(enumerantGroup) == false))
						continue;

					enumerantGroup.GenerateSource(sw, ctx);
					sw.WriteLine();
				}

				sw.WriteLine();
				sw.WriteLine("}");
			}
		}