#include <stdlib.h>
#include <stdio.h>
#include <dos/dos.h>
#include <proto/dos.h>
#include <exec/exec.h>
#include <proto/exec.h>


#include <Xm/LTconfig.h>
#include <Xm/Xm.h>
#include <Xm/BaseClassP.h>
#include <Xm/PushB.h>

int AMIWIN_Vendor(void);
int AMIWIN_ArrowB(void);
int AMIWIN_ArrowBG(void);
int AMIWIN_BulletinBoard(void);
int AMIWIN_CascadeB(void);
int AMIWIN_CascadeBG(void);
int AMIWIN_ComboBox(void);
int AMIWIN_Command(void);
int AMIWIN_DialogS(void);
int AMIWIN_Display(void);
int AMIWIN_DragC(void);
int AMIWIN_DragIcon(void);
int AMIWIN_DragOverS(void);
int AMIWIN_DrawingArea(void);
int AMIWIN_DrawnB(void);
int AMIWIN_DropSMgr(void);
int AMIWIN_DropTrans(void);
int AMIWIN_ExtObject(void);
int AMIWIN_FileSB(void);
int AMIWIN_Form(void);
int AMIWIN_Frame(void);
int AMIWIN_Gadget(void);
int AMIWIN_GrabShell(void);
int AMIWIN_Label(void);
int AMIWIN_LabelG(void);
int AMIWIN_List(void);
int AMIWIN_MainW(void);
int AMIWIN_Manager(void);
int AMIWIN_MenuShell(void);
int AMIWIN_MessageB(void);
int AMIWIN_Notebook(void);
int AMIWIN_PanedW(void);
int AMIWIN_Primitive(void);
int AMIWIN_PushB(void);
int AMIWIN_PushBG(void);
int AMIWIN_RowColumn(void);
int AMIWIN_Sash(void);
int AMIWIN_Scale(void);
int AMIWIN_Screen(void);
int AMIWIN_ScrollBar(void);
int AMIWIN_ScrolledW(void);
int AMIWIN_SelectionBox(void);
int AMIWIN_SeparatoG(void);
int AMIWIN_Separator(void);
int AMIWIN_ShellExt(void);
int AMIWIN_SpinBox(void);
int AMIWIN_TearOffB(void);
int AMIWIN_Text(void);
int AMIWIN_TextF(void);
int AMIWIN_ToggleB(void);
int AMIWIN_ToggleBG(void);



void INIT_AMIWIN_MOTIF(int *p_argc,char **argv)
{
struct Task *task;
task=FindTask(0);
if (((LONG)task->tc_SPUpper-(LONG)task->tc_SPLower)<(300000-500))
  {
  printf("This program needs at least 300000 bytes of stack!(current size=%ld)\n",((LONG)task->tc_SPUpper-(LONG)task->tc_SPLower));
  exit(1);
  }


AMIWIN_Vendor();
AMIWIN_ArrowB();
AMIWIN_ArrowBG();
AMIWIN_BulletinBoard();
AMIWIN_CascadeB();
AMIWIN_CascadeBG();
AMIWIN_ComboBox();
AMIWIN_Command();
AMIWIN_DialogS();
AMIWIN_Display();
AMIWIN_DragC();
AMIWIN_DragIcon();
AMIWIN_DragOverS();
AMIWIN_DrawingArea();
AMIWIN_DrawnB();
AMIWIN_DropSMgr();
AMIWIN_DropTrans();
AMIWIN_ExtObject();
AMIWIN_FileSB();
AMIWIN_Form();
AMIWIN_Frame();
AMIWIN_Gadget();
AMIWIN_GrabShell();
AMIWIN_Label();
AMIWIN_LabelG();
AMIWIN_List();
AMIWIN_MainW();
AMIWIN_Manager();
AMIWIN_MenuShell();
AMIWIN_MessageB();
AMIWIN_Notebook();
AMIWIN_PanedW();
AMIWIN_Primitive();
AMIWIN_PushB();
AMIWIN_PushBG();
AMIWIN_RowColumn();
AMIWIN_Sash();
AMIWIN_Scale();
AMIWIN_Screen();
AMIWIN_ScrollBar();
AMIWIN_ScrolledW();
AMIWIN_SelectionBox();
AMIWIN_SeparatoG();
AMIWIN_Separator();
AMIWIN_ShellExt();
AMIWIN_SpinBox();
AMIWIN_TearOffB();
AMIWIN_Text();
AMIWIN_TextF();
AMIWIN_ToggleB();
AMIWIN_ToggleBG();


XmRegisterConverters();

if (getenv("HOME")==0)
  putenv("HOME=x11:");


/*************************************************************/
{
  Widget toplevel, one;
  XtAppContext app;

  toplevel = XtVaAppInitialize(&app, "amiwinXMinit", NULL, 0,
			       p_argc, argv, NULL, NULL);

  XtVaCreateManagedWidget("Button1", 
                                 xmPushButtonWidgetClass, toplevel, 
XtNwidth,10,
XtNheight,10,
				 NULL);
  XtRealizeWidget(toplevel);
  XtDestroyWidget(toplevel);
}
/*************************************************************/

}


int AMIGALT_getpid(void)
{
return(1);
}

int AMIGALT_sleep(int sec)
{
Delay(sec*50);
return(0);
}

void *AmigaMalloc(int size)
{
void *pmem=malloc(size);
if (pmem==0)
 {fprintf(stderr,"malloc(%d) failed\n",size);fflush(stderr);}
else
 memset(pmem,0,size);
return(pmem);
}

void *AmigaCalloc(int nelem,int nelsize)
{
void *pmem=calloc(nelem,nelsize);
if (pmem==0)
 {fprintf(stderr,"calloc(%d,%d) failed\n",nelem,nelsize);fflush(stderr);}
else
 memset(pmem,0,nelem*nelsize);
return(pmem);
}

void *AmigaRealloc(void *old,int size)
{
void *pmem=realloc(old,size);
if (pmem==0)
{fprintf(stderr,"realloc(%d) failed\n",size);fflush(stderr);}
return(pmem);
}

void AmigaFree(void *mem)
{
if (mem!=0) free(mem);
else printf("warning: tried to free NULL-pointer\n");
}

