home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / b / b430 / 1.ddi / UTILS / EXTERNAL / MYDLL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-15  |  1.8 KB  |  110 lines

  1. #include "windows.h"
  2. #define numfuncs    3
  3.  
  4. #include "wztools.h"
  5.  
  6. ROUT  rout;
  7. char  multname[]  = "\04mult";
  8. char  addname[]   = "\03add";
  9. char  reverse[]   = "\07reverse";
  10. char    buf[256];
  11. int    _fltused;
  12.  
  13. WZFUNC rev(pret,parg)
  14. PVAL  pret;
  15. PVAL  parg;
  16. {
  17. int   i,j;
  18.  
  19. if (parg[0].flag == STRING)
  20.    {
  21.    pret->flag = STRING;
  22.    buf[0] = parg[0].val.string[0];
  23.  
  24.    for (i = parg[0].val.string[0],j = 1; i > 0 ; i--,j++)
  25.       buf[j] = parg[0].val.string[i];
  26.    pret->val.string = buf;
  27.  
  28.    }
  29. else
  30.    {
  31.    pret->flag = 2;
  32.    pret->val.err = 12;       /* argument is bad */
  33.    }
  34. }
  35.  
  36. WZFUNC add2args(pret,parg)
  37. PVAL  pret;
  38. PVAL  parg;
  39. {
  40.  
  41. if (!parg[0].flag && !parg[1].flag)
  42.    {
  43.    pret->flag = 0;
  44.    pret->val.numeric = parg[0].val.numeric + parg[1].val.numeric;
  45.    }
  46. else
  47.    {
  48.    pret->flag = 2;
  49.    pret->val.err = 12;       /* argument is bad */
  50.    }
  51. }
  52.  
  53. WZFUNC mult2args(pret,parg)
  54. PVAL  pret;
  55. PVAL  parg;
  56. {
  57.  
  58. if (!parg[0].flag && !parg[1].flag)
  59.    {
  60.    pret->flag = 0;
  61.    pret->val.numeric = parg[0].val.numeric * parg[1].val.numeric;
  62.    }
  63. else
  64.    {
  65.    pret->flag = 2;
  66.    pret->val.err = 12;       /* argument is bad */
  67.    }
  68. }
  69.  
  70.  
  71. WZMAINFUNC  main()
  72. {
  73.  
  74. rout.nrout = numfuncs;
  75. rout.exitfunc = 0;
  76. rout.relts[1].pfunc = add2args;
  77. rout.relts[1].name  = addname;
  78. rout.relts[1].narg  = 2;
  79.  
  80. rout.relts[0].pfunc = mult2args;
  81. rout.relts[0].name  = multname;
  82. rout.relts[0].narg  = 2;
  83.  
  84. rout.relts[2].pfunc = rev;
  85. rout.relts[2].name  = reverse;
  86. rout.relts[2].narg  = 1;
  87.  
  88. return(&rout);
  89.  
  90. }
  91.  
  92.  
  93. /*
  94. int near pascal LibMain(hModule, wDataSeg, cbHeapSize, lpszCmdLine)
  95. HANDLE  hModule;
  96. WORD    wDataSeg;
  97. WORD    cbHeapSize;
  98. LPSTR   lpszCmdLine;
  99. {
  100.     return 1;
  101. }
  102.  
  103. VOID FAR PASCAL WEP (bSystemExit)
  104. int  bSystemExit;
  105. {
  106.     return;
  107. }
  108. */
  109.  
  110.