home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / VPR_DATA / DOGA / SOURCES / POLYEDIT.LZH / ML / TEST.CPP < prev    next >
C/C++ Source or Header  |  1996-01-08  |  2KB  |  113 lines

  1.  
  2. #include <owl\owlpch.h>
  3. #include <owl\applicat.h>
  4. #include <owl\framewin.h>
  5. #include <owl\dc.h>
  6. #include <stdio.h>
  7. #include <dos.h>
  8. #include <assert.h>
  9.  
  10. extern "C" {
  11.     #include "lib.h"
  12.     #include "matrix.h"
  13.     #include "ml.h"
  14.     void    test();
  15.     static    void    StreamInit();
  16.     static    int        StreamOutput( int, int, DataStruct* );
  17. };
  18.  
  19. #include "message.h"
  20.  
  21. static    TMessageWindow    *MessageOut ;
  22.  
  23. class TMyApp : public TApplication {
  24.   public:
  25.     TMyApp() : TApplication() {}
  26.  
  27.   protected:
  28.       BOOL    isidle ;
  29.     void    InitMainWindow();
  30.     BOOL    IdleAction( long );
  31. };
  32.  
  33. void TMyApp::InitMainWindow()
  34. {
  35.     isidle = TRUE ;
  36.     MessageOut = new TMessageWindow( "message window", 100 );
  37.     SetMainWindow( MessageOut->GetWindowPtr() );
  38. }
  39.  
  40. BOOL    TMyApp::IdleAction( long /* idleCount */ )
  41. {
  42. #if    1
  43.     if ( isidle )
  44.     {
  45.         test();
  46.  
  47.         isidle = FALSE ;
  48.     }
  49. #endif
  50.     return FALSE ;
  51. }
  52.  
  53.  
  54. int OwlMain(int /*argc*/, char* /*argv*/ [])
  55. {
  56.     if ( LibraryInit() < 0 )
  57.         return -1 ;
  58.  
  59.     return TMyApp().Run();
  60. }
  61.  
  62. void    test()
  63. {
  64.     int        pdebug = FALSE, edebug = FALSE ;
  65.  
  66.     MLInit();
  67.  
  68.     ParseInit();
  69.     StreamInit();
  70.  
  71.     DebugMode( pdebug, edebug );
  72.  
  73.     wprintf( "open %s\n", "test.ml" );
  74.     ParseSentenseAll( "test.ml" );
  75.  
  76. #if    1
  77.     /*    実行    */
  78.     ExecInit();
  79.     ExecSentenseAll();
  80.     ExecExit();
  81. #endif
  82.  
  83.     ParseExit();
  84. }
  85.  
  86. DataStruct    StreamOut ;
  87. int        StreamClassID ;
  88.  
  89. static    void    StreamInit()
  90. {
  91.     StreamClassID = NewClass( "Stream", 0 );
  92.     StreamOut.type = TYPE_OBJECT ;
  93.     StreamOut.od.ptr = ObjectAlloc( 0, StreamClassID );
  94.     NewConst( "cout", &StreamOut );
  95.  
  96.     NewOperator( StreamClassID, OPE_LSFT, StreamOutput );
  97. }
  98.  
  99. static    int        StreamOutput( ident, args, buf )
  100. int        ident ;
  101. int        args ;
  102. DataStruct    *buf ;
  103. {
  104.     assert( args == 2 );
  105.     ident = FunctionName( "print" );
  106.     assert( ident > 0 );
  107.     CallFunction( ident, 1, buf+1 );
  108.  
  109.     StackPush( &buf[0] );
  110.  
  111.     return RETURN_RETURN ;
  112. }
  113.