protected void GenProRegionH(ProRegion pr)
        {
            string ffname = String.Format("Pro_{0}", pr.RegionName);

            try
            {
                MakeOutputFile(path_root_, ffname + ".h");

                GenHFileHeaderB(ffname);

                cur_stream_.WriteString(ExportCConst.IncludeFiles1, 0);
                cur_stream_.WriteString(ExportCConst.IncludeFilesOfProtocol, 0);
                cur_stream_.WriteEmptyLine();

                //defined under one namespace
                cur_stream_.WriteString("PROTOCOL_NAMESPACE_BEGIN", 0);
                cur_stream_.WriteEmptyLine();

                foreach (ProMeta pm in pr.ProMetas)
                {
                    OutputHOfProtocol(pm);
                }

                cur_stream_.WriteString("PROTOCOL_NAMESPACE_END", 0);
            }
            finally
            {
                GenHFileHeaderE(ffname);
                cur_stream_.FinishGenerate();
            }
        }
        protected void GenProRegionCPP(ProRegion pr)
        {
            string ffname = String.Format("Pro_{0}", pr.RegionName);

            try
            {
                MakeOutputFile(path_root_, ffname + ".cpp");

                cur_stream_.WriteString(ExportCConst.IncludeFiles1, 0);
                cur_stream_.WriteString(ExportCConst.IncludeFilesOfProtocol, 0);
                cur_stream_.WriteString(String.Format("#include <prolib/gen/Pro_{0}_pid.h>", pr.RegionName), 0);
                cur_stream_.WriteString(String.Format("#include <prolib/gen/Pro_{0}.h>", pr.RegionName), 0);
                cur_stream_.WriteEmptyLine();

                //defined under one namespace
                cur_stream_.WriteString("PROTOCOL_NAMESPACE_BEGIN", 0);
                cur_stream_.WriteEmptyLine();

                foreach (ProMeta pm in pr.ProMetas)
                {
                    OutputCPPOfProtocol(pm);
                }

                cur_stream_.WriteString("PROTOCOL_NAMESPACE_END", 0);
            }
            finally
            {
                cur_stream_.FinishGenerate();
            }
        }
        protected void GenProRegionId(ProRegion pr)
        {
            string ffname = String.Format("Pro_{0}_pid", pr.RegionName);

            try
            {
                MakeOutputFile(path_root_, ffname + ".h");

                GenHFileHeaderB(ffname);

                cur_stream_.WriteEmptyLine();

                string rn = pr.RegionName;
                cur_stream_.WriteString(String.Format("enum TPRO_{0}", rn.ToUpper()), 0);
                cur_stream_.WriteString("{", 0);

                foreach (ProMeta pm in pr.ProMetas)
                {
                    if (!AppUtil.IsEmptyString(pm.Desc))
                    {
                        cur_stream_.WriteComment(pm.Desc, 1);
                    }

                    cur_stream_.WriteString(String.Format("{0} = {1}, ", pm.ProID, pm.ProIDValue), 1);
                }
            }
            finally
            {
                cur_stream_.WriteString("};", 0);

                GenHFileHeaderE(ffname);
                cur_stream_.FinishGenerate();
            }
        }