#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>


struct repl
{
	int params; /* not required */
	char *src;
	char *dst;
};

struct repl ObjectReplace[] =
{
	{ 0, "MenustripObject"      , "(void *)MUI_NewObject(MUIC_Menustrip"        },
	{ 0, "MenuObject"           , "(void *)MUI_NewObject(MUIC_Menu"             },
	{ 0, "MenuitemObject"       , "(void *)MUI_NewObject(MUIC_Menuitem"         },
	{ 0, "WindowObject"         , "(void *)MUI_NewObject(MUIC_Window"           },
	{ 0, "ImageObject"          , "(void *)MUI_NewObject(MUIC_Image"            },
	{ 0, "BitmapObject"         , "(void *)MUI_NewObject(MUIC_Bitmap"           },
	{ 0, "BodychunkObject"      , "(void *)MUI_NewObject(MUIC_Bodychunk"        },
	{ 0, "NotifyObject"         , "(void *)MUI_NewObject(MUIC_Notify"           },
	{ 0, "ApplicationObject"    , "(void *)MUI_NewObject(MUIC_Application"      },
	{ 0, "TextObject"           , "(void *)MUI_NewObject(MUIC_Text"             },
	{ 0, "RectangleObject"      , "(void *)MUI_NewObject(MUIC_Rectangle"        },
	{ 0, "BalanceObject"        , "(void *)MUI_NewObject(MUIC_Balance"          },
	{ 0, "ListObject"           , "(void *)MUI_NewObject(MUIC_List"             },
	{ 0, "PropObject"           , "(void *)MUI_NewObject(MUIC_Prop"             },
	{ 0, "StringObject"         , "(void *)MUI_NewObject(MUIC_String"           },
	{ 0, "ScrollbarObject"      , "(void *)MUI_NewObject(MUIC_Scrollbar"        },
	{ 0, "ListviewObject"       , "(void *)MUI_NewObject(MUIC_Listview"         },
	{ 0, "RadioObject"          , "(void *)MUI_NewObject(MUIC_Radio"            },
	{ 0, "VolumelistObject"     , "(void *)MUI_NewObject(MUIC_Volumelist"       },
	{ 0, "FloattextObject"      , "(void *)MUI_NewObject(MUIC_Floattext"        },
	{ 0, "DirlistObject"        , "(void *)MUI_NewObject(MUIC_Dirlist"          },
	{ 0, "CycleObject"          , "(void *)MUI_NewObject(MUIC_Cycle"            },
	{ 0, "GaugeObject"          , "(void *)MUI_NewObject(MUIC_Gauge"            },
	{ 0, "ScaleObject"          , "(void *)MUI_NewObject(MUIC_Scale"            },
	{ 0, "NumericObject"        , "(void *)MUI_NewObject(MUIC_Numeric"          },
	{ 0, "SliderObject"         , "(void *)MUI_NewObject(MUIC_Slider"           },
	{ 0, "NumericbuttonObject"  , "(void *)MUI_NewObject(MUIC_Numericbutton"    },
	{ 0, "KnobObject"           , "(void *)MUI_NewObject(MUIC_Knob"             },
	{ 0, "LevelmeterObject"     , "(void *)MUI_NewObject(MUIC_Levelmeter"       },
	{ 0, "BoopsiObject"         , "(void *)MUI_NewObject(MUIC_Boopsi"           },
	{ 0, "ColorfieldObject"     , "(void *)MUI_NewObject(MUIC_Colorfield"       },
	{ 0, "PenadjustObject"      , "(void *)MUI_NewObject(MUIC_Penadjust"        },
	{ 0, "ColoradjustObject"    , "(void *)MUI_NewObject(MUIC_Coloradjust"      },
	{ 0, "PaletteObject"        , "(void *)MUI_NewObject(MUIC_Palette"          },
	{ 0, "GroupObject"          , "(void *)MUI_NewObject(MUIC_Group"            },
	{ 0, "RegisterObject"       , "(void *)MUI_NewObject(MUIC_Register"         },
	{ 0, "VirtgroupObject"      , "(void *)MUI_NewObject(MUIC_Virtgroup"        },
	{ 0, "ScrollgroupObject"    , "(void *)MUI_NewObject(MUIC_Scrollgroup"      },
	{ 0, "PopstringObject"      , "(void *)MUI_NewObject(MUIC_Popstring"        },
	{ 0, "PopobjectObject"      , "(void *)MUI_NewObject(MUIC_Popobject"        },
	{ 0, "PoplistObject"        , "(void *)MUI_NewObject(MUIC_Poplist"          },
	{ 0, "PopaslObject"         , "(void *)MUI_NewObject(MUIC_Popasl"           },
	{ 0, "PendisplayObject"     , "(void *)MUI_NewObject(MUIC_Pendisplay"       },
	{ 0, "PoppenObject"         , "(void *)MUI_NewObject(MUIC_Poppen"           },
	{ 0, "AboutmuiObject"       , "(void *)MUI_NewObject(MUIC_Aboutmui"         },
	{ 0, "ScrmodelistObject"    , "(void *)MUI_NewObject(MUIC_Scrmodelist"      },
	{ 0, "KeyentryObject"       , "(void *)MUI_NewObject(MUIC_Keyentry"         },
	{ 0, "VGroup"               , "(void *)MUI_NewObject(MUIC_Group"     },
	{ 0, "VGroupV"              , "(void *)MUI_NewObject(MUIC_Virtgroup" },
	{ 0, "HGroup"               , "(void *)MUI_NewObject(MUIC_Group,MUIA_Group_Horiz,TRUE"     },
	{ 0, "HGroupV"              , "(void *)MUI_NewObject(MUIC_Virtgroup,MUIA_Group_Horiz,TRUE" },
	{ 0, "PageGroup"            , "(void *)MUI_NewObject(MUIC_Group,MUIA_Group_PageMode,TRUE"  },
	{ 0, "PageGroupV"           , "(void *)MUI_NewObject(MUIC_Virtgroup,MUIA_Group_PageMode,TRUE"  },

	{ 1, "ColGroup"             , "(void *)MUI_NewObject(MUIC_Group,MUIA_Group_Columns,"      },
	{ 1, "RowGroup"             , "(void *)MUI_NewObject(MUIC_Group,MUIA_Group_Rows,"         },
	{ 1, "ColGroupV"            , "(void *)MUI_NewObject(MUIC_Virtgroup,MUIA_Group_Columns,"  },
	{ 1, "RowGroupV"            , "(void *)MUI_NewObject(MUIC_Virtgroup,MUIA_Group_Rows,"     },
	{ 1, "RegisterGroup"        , "(void *)MUI_NewObject(MUIC_Register,MUIA_Register_Titles," },
	{ 1, "MenuObjectT"          , "(void *)MUI_NewObject(MUIC_Menu,MUIA_Menu_Title,"          },

	{ 0, "End"                  , "TAG_DONE)"                           },

	{ 0, NULL, NULL }
};


#define isc(c) (isalnum(c) || ((c)=='_'))

int main(int argc,char *argv[])
{
	static char line[5000];
	struct repl *r;

	if (argc!=1)
	{
		fprintf(stderr,"usage: %s <infile >outfile\n");
		exit(20);
	}

	while (fgets(line,sizeof(line),stdin))
	{
again:
		for (r=ObjectReplace;r->src;r++)
		{
			char *x;

			if (x=strstr(line,r->src))
			{
				int sl = strlen(r->src);
				int dl = strlen(r->dst);

				if ((x==line || !isc(*(x-1))) && !isc(*(x+sl)))
				{
					memmove(x,x+sl,strlen(x+sl)+1);
					memmove(x+dl,x,strlen(x)+1);
					strncpy(x,r->dst,dl);
					goto again;
				}
			}
		}

		printf("%s",line);
	}

	exit(0);
}
