/// <summary>
        /// Path to glapitemp.h file
        /// </summary>
        public FunctionNameDictionary Parse(string path)
        {
            StreamReader           sr        = File.OpenText(path);
            FunctionNameDictionary functions = new FunctionNameDictionary();

            string line     = null;
            int    matchpos = -1;

            while ((line = sr.ReadLine()) != null)
            {
                if ((matchpos = line.IndexOf("KEYWORD2 NAME(")) >= 0)
                {
                    int    closingbracketpos = line.IndexOf(")", matchpos);
                    string fname             = "gl" + line.Substring(matchpos + 14, closingbracketpos - 14 - matchpos);

                    if (fname.IndexOf("_dispatch_stub") >= 0)
                    {
                        continue;                         /* Trash not needed */
                    }
                    if (!functions.ContainsKey(fname))
                    {
                        functions.Add(fname, null);
                    }
                }
            }

            return(functions);
        }
        public void RemoveFunctionsExceptFor(FunctionNameDictionary functions)
        {
            FunctionList toBeRemoved = new FunctionList();

            foreach (Function f in this)
            {
                if (!functions.ContainsKey(f.Name))
                {
                    toBeRemoved.Add(f);
                }
                else
                {
                    functions.MarkAsMatched(f.Name);
                }
            }

            foreach (Function f in toBeRemoved)
            {
                this.Remove(f);
            }
        }
        /// <summary>
        /// Path to glapioffsets.h file
        /// </summary>
        public FunctionNameDictionary Parse(string path)
        {
            StreamReader           sr        = File.OpenText(path);
            FunctionNameDictionary functions = new FunctionNameDictionary();

            string line = null;

            while ((line = sr.ReadLine()) != null)
            {
                if (line.IndexOf("#define _gloffset_") >= 0)
                {
                    string part  = line.Substring(18, line.Length - 18);
                    string fname = "gl" + (part.Split(' ')[0].Trim());
                    if (!functions.ContainsKey(fname))
                    {
                        functions.Add(fname, null);
                    }
                }
            }

            return(functions);
        }