亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c-smile.h

?? c-smile 一個語法類似與JS 又有點像C++的 編譯器
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*
*
* c-smile.h
*
* Copyright (c) 2001, 2002
* Andrew Fedoniouk - andrew@terra-informatica.org
* Portions: Serge Kuznetsov - kuznetsov@deeptown.org
*
* See the file "COPYING" for information on usage 
* and redistribution of this file
*
*/

#ifndef __cs_H
#define __cs_H

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "tool.h"
#include "sym_table.h"

namespace c_smile
{

#define BANNER    ("c-smile v1.0 - Copyright (c) 2001-2002,  by Andrew Fedoniuk") 
#define MAGIC     ("c-smileC") 
#define VERSION   ("1000") 

  // limits
#define SMAX		1000	          // runtime stack size
#define ERROR_HANDLER_SMAX 64   // try catch stack size
#define SYNCHRO_SMAX 32         // synchonized stack size

  // useful definitions
#define TRUE		1
#define FALSE		0

  class archive;

#define set_null(s) ( (s)->v_type = DT_NULL ) 

  class THING;
  class CLASS;
  class OBJECT;
  class ARRAY;
  class STRING;
  class IOSTREAM;
  class CODE;

  class io_stream;

  // data types
#define _DTMIN		        0

#define DT_NULL		        0
#define DT_STRING         1
#define DT_FLOAT	      	2
#define DT_INTEGER	    	3

#define DT_CLASS	        4
#define DT_OBJECT	        5
#define DT_ARRAY	        6

#define DT_CODE			      7

#define DT_VAR		        8

#define DT_EXT		      	9
#define DT_SYMBOL	        10

#define DT_OBJECT_METHOD	11

#define _DTMAX			      11

  // symbol types
#define ST_CLASS      1		// class definition
#define ST_DATA       2		// data member
#define ST_SDATA      3		// static data member
#define ST_FUNCTION	  4		// function member
#define ST_SFUNCTION  5		// static function member
#define ST_PROPERTY	  6		// property function member
#define ST_SPROPERTY  7		// static property function member
#define ST_CONST      8		// static property function member

  class VALUE;
  class VM;
#define mark_thing(th) if ( ( th ) && ! ( th )->marked () )  ( th )->mark ();
  //used to be: void _mark_thing_ ( THING **th );

  typedef VALUE ( BUILTIN_FUNC ) ( int argc, VALUE *argv );

  class VM;

  class THING
  {
  protected:
    // block flags
#define MARK	1

  public:
    byte    flags;

    bool
      marked () 
    {
      return ( flags & MARK ) != 0;
    }

    void
      clear_mark () 
    {
      flags = 0;
    }

    THING () : flags ( 0 ) 
    {
    }

    virtual
      ~THING () 
    {
    }

    virtual size_t allocated_size () = 0;

    void* operator new ( size_t size );
    void* operator new ( size_t size, int moresize );
    void  operator delete ( void* p );
    void  operator delete ( void* p, int moresize );

    virtual void
      mark () 
    {
      flags |= MARK;
    }

    virtual operator VALUE ();

    virtual CLASS *get_class () = 0;
    virtual bool instance_of ( CLASS *cls );

    virtual io_stream *
      get_stream () 
    {
      return 0;
    }
    // create stream based on this object ( if possible ) 

  };



  // member of class reference
  struct ENTRY
  {
    int     index;
    CLASS*  klass;

    VALUE *   value ();
    symbol_t 	symbol () const;
    symbol_t& symbol ();
    int&      type ();

    bool is_valid ();

    void mark ();

    static ENTRY
      undefined () 
    {
      ENTRY e;
      e.index = 0;
      e.klass = 0;
      return e;
    }

  };

#pragma pack ( push, 2 ) 

  // value descriptor structure
  class VALUE
  {

  public:
    struct OBJECT_METHOD
    {
      THING * thing;
      CODE  * code;
      void    mark ();
    };
  public:
    short int       v_type;    // data type
    union V
    {
      // value
      // gc things
      CLASS *       v_class;		  //   klass
      OBJECT *      v_object;		  //   object
      ARRAY *       v_vector;		  //   vector
      STRING *      v_string;     //   string

      THING *       v_thing;		  //   DT_EXT
      CODE *        v_code;	      //

      ENTRY         v_var;        //   class.variable reference
      OBJECT_METHOD v_om;         //   object.method reference

      // not gc things
      symbol_t          v_symbol;     //   symbol ( id ) 
      int			          v_integer;	  //   integer
      double	          v_float;	    //   float
      qword				      data;	        //   all data

    }
    v;


    VALUE () : v_type ( DT_NULL ) 
    {
      v.data = 0;
    }
    VALUE ( int i ) : v_type ( DT_INTEGER ) 
    {
      v.data = 0;
      v.v_integer = i;
    }
    VALUE ( long l ) : v_type ( DT_INTEGER ) 
    {
      v.data = 0;
      v.v_integer = l;
    }
    VALUE ( double d ) : v_type ( DT_FLOAT ) 
    {
      v.data = 0;
      v.v_float = d;
    }
    VALUE ( bool b ) : v_type ( DT_INTEGER ) 
    {
      v.data = 0;
      v.v_integer = b ? TRUE : FALSE;
    }

    VALUE ( const char *c );
    VALUE ( const string& s );

    VALUE ( ENTRY& de ) : v_type ( DT_VAR ) 
    {
      v.data = 0;
      v.v_var = de;
    }

    VALUE ( OBJECT *ob ) : v_type ( DT_OBJECT ) 
    {
      v.data = 0;
      v.v_object = ob;
    }
    VALUE ( CLASS *cl ) : v_type ( DT_CLASS ) 
    {
      v.data = 0;
      v.v_class = cl;
    }
    VALUE ( ARRAY *ve ) : v_type ( DT_ARRAY ) 
    {
      v.data = 0;
      v.v_vector = ve;
    }
    VALUE ( STRING *st ) : v_type ( DT_STRING ) 
    {
      v.data = 0;
      v.v_string = st;
    }
    VALUE ( THING *s ) : v_type ( DT_EXT ) 
    {
      v.data = 0;
      v.v_thing = s;
    }

    VALUE ( const VALUE& copy ) : v_type ( copy.v_type ) 
    {
      v.data = copy.v.data;
    }

    VALUE &
      operator= ( const VALUE& copy ) 
    {
      init ();
      v_type = copy.v_type;
      v.data = copy.v.data;
      return *this;
    }

    VALUE &
      operator= ( CLASS *cl ) 
    {
      init (); if ( cl ) 
      {
        v_type = DT_CLASS; v.v_class = cl;
      }
      return *this;
    }

    VALUE &
      operator= ( ARRAY *ve ) 
    {
      init (); if ( ve ) 
      {
        v_type = DT_ARRAY; v.v_vector = ve;
      }
      return *this;
    }

    VALUE &
      operator= ( STRING *st ) 
    {
      init (); if ( st ) 
      {
        v_type = DT_STRING; v.v_string = st;
      }
      return *this;
    }

    VALUE &
      operator= ( OBJECT *ob ) 
    {
      init (); if ( ob ) 
      {
        v_type = DT_OBJECT; v.v_object = ob;
      }
      return *this;
    }

    VALUE &
      operator= ( THING *ex ) 
    {
      init ();
      if ( ex ) 
      {
        v_type = DT_EXT; v.v_thing = ex;
      }
      return *this;
    }

    VALUE &
      operator= ( CODE *bc ) 
    {
      init ();
      if ( bc ) 
      {
        v_type = DT_CODE; v.v_code = bc;
      }
      return *this;
    }

    VALUE &
      operator= ( int i ) 
    {
      init ();
      v_type = DT_INTEGER;
      v.v_integer = i;
      return *this;
    }

    VALUE &
      operator= ( long i ) 
    {
      init ();
      v_type = DT_INTEGER;
      v.v_integer = i;
      return *this;
    }

    VALUE &
      operator= ( double d ) 
    {
      init ();
      v_type = DT_FLOAT;
      v.v_float = d;
      return *this;
    }

    VALUE &
      operator= ( bool b ) 
    {
      init ();
      v_type = DT_INTEGER;
      v.v_integer = b?TRUE:FALSE;
      return *this;
    }

    void
      set_symbol ( symbol_t sym ) 
    {
      init ();
      v_type = DT_SYMBOL;
      v.v_symbol = sym;
    }

    void
      set_method ( THING *th, CODE *method ) 
    {
      init ();
      v_type = DT_OBJECT_METHOD;
      v.v_om.thing = th;
      v.v_om.code = method;
    }

    void mark ();

    void
      init () 
    {
      v_type = DT_NULL;
      v.data = 0;
    }

    bool
      is_null () const
    {
      return v_type == DT_NULL;
    }

    bool
      is_thing () const
    {
      return ( v_type == DT_CLASS || v_type == DT_OBJECT ||
               v_type == DT_ARRAY || v_type == DT_CODE ||
               v_type == DT_STRING || v_type == DT_EXT );
    }

    bool
      is_number () const
    {
      return ( v_type == DT_INTEGER || v_type == DT_FLOAT || v_type == DT_NULL );
    }

    bool
      is_string () const
    {
      return ( v_type == DT_STRING );
    }

    bool
      is_int () const
    {
      return ( v_type == DT_INTEGER );
    }

    bool
      is_float () const
    {
      return ( v_type == DT_FLOAT );
    }

    bool
      is_array () const
    {
      return ( v_type == DT_ARRAY );
    }

    bool
      is_class () const
    {
      return ( v_type == DT_CLASS );
    }

    bool
      is_object () const
    {
      return ( v_type == DT_OBJECT );
    }

    bool is_bytecode () const;
    bool is_nativecode () const;

    bool
      is_method () const
    {
      return ( v_type == DT_OBJECT_METHOD );
    }

    bool
      is_code () const
    {
      return ( v_type == DT_CODE ) || ( v_type == DT_OBJECT_METHOD );
    }

    bool
      is_ext_object () const
    {
      return ( v_type == DT_EXT );
    }

    operator int () const
    {
      if ( v_type == DT_INTEGER )
        return v.v_integer;
      else if ( v_type == DT_FLOAT )
        return int ( v.v_float );
      else
        return 0;
    }

    operator double () const
    {
      if ( v_type == DT_INTEGER )
        return double ( v.v_integer );
      else if ( v_type == DT_FLOAT )
        return v.v_float;
      else
        return 0.0;
    }

    operator bool () const;

    operator  string () const;    // may call bytecode
    STRING *  to_STRING () const; // may call bytecode
    string    to_string () const; // will not call any bytecode

    THING *   ext ( CLASS *klass ) const;

  };

#pragma pack ( pop ) 

  bool operator == ( const VALUE& vl, const VALUE& vr );


  class DICTIONARY;
  class PACKAGE;

  class archive;

  class CLASS: public THING
  {

  protected:

    CLASS () : instance_size ( 0 ), name ( undefined_symbol ), base ( 0 ),
               members ( 0 ), package ( 0 ), 
               ctor_function ( 0 ), 
               item_function ( 0 ), 
               dtor_function ( 0 ), 
               cast_function ( 0 ) 
    {
    }

    CLASS ( symbol_t t ) : instance_size ( 0 ), name ( t ), base ( 0 ),
                           members ( 0 ), package ( 0 ), 
                           ctor_function ( 0 ), 
                           item_function ( 0 ), 
                           dtor_function ( 0 ), 
                           cast_function ( 0 ) 
    {
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品一区二区三区四区| 亚洲国产wwwccc36天堂| 色妞www精品视频| 国产成人无遮挡在线视频| 美腿丝袜亚洲综合| 麻豆国产欧美日韩综合精品二区| 无吗不卡中文字幕| 日本不卡一二三区黄网| 六月丁香综合在线视频| 精品一区精品二区高清| 国产精品影视在线观看| 国产不卡视频在线播放| www.成人在线| 欧美三级乱人伦电影| 91麻豆精品国产91久久久久| 日韩一区二区精品| 久久嫩草精品久久久久| 欧美激情一区二区三区| 亚洲同性gay激情无套| 一区二区三区波多野结衣在线观看| 一区二区三区精品视频| 免费不卡在线观看| 丁香一区二区三区| 欧美日韩一区二区三区免费看 | 日韩免费电影网站| 精品日韩av一区二区| 国产欧美一区二区精品秋霞影院| 亚洲欧美视频在线观看视频| 日韩在线一二三区| 国产99久久久国产精品潘金| 色婷婷av一区二区三区大白胸| 欧美日韩午夜精品| 国产丝袜在线精品| 日一区二区三区| 岛国精品在线播放| 欧美一级高清大全免费观看| 国产精品欧美精品| 亚洲国产精品久久久久秋霞影院 | 《视频一区视频二区| 午夜日韩在线电影| 成人99免费视频| 日韩精品一区二| 亚洲一区二区三区美女| 国产精品456| 日韩亚洲欧美在线| 一区二区三区波多野结衣在线观看| 久久99久久99| 欧美日韩精品欧美日韩精品| 国产精品美女久久久久久久网站| 日韩国产高清影视| 一本色道久久综合亚洲aⅴ蜜桃 | 国产精品一区二区无线| 欧美日韩中文字幕一区二区| 国产精品日韩成人| 国产成人在线免费观看| 日韩午夜av电影| 亚洲r级在线视频| 色吧成人激情小说| 成人欧美一区二区三区视频网页 | 欧美韩国日本不卡| 免费精品视频最新在线| 欧美日韩高清一区二区| 亚洲一区二区在线免费看| 91小视频免费看| 国产精品久久久久久亚洲毛片 | 亚洲乱码中文字幕| 成人精品高清在线| 欧美激情在线观看视频免费| 国产一区91精品张津瑜| 26uuuu精品一区二区| 九色|91porny| 久久免费看少妇高潮| 精品在线视频一区| 日韩免费观看高清完整版| 琪琪一区二区三区| 欧美一级久久久| 国产真实乱偷精品视频免| 精品国产青草久久久久福利| 国内欧美视频一区二区| 中文字幕的久久| 色综合久久久久综合体桃花网| 国产精品国产三级国产普通话99 | 91久久精品国产91性色tv| 亚洲美女视频在线| 色老头久久综合| 亚洲a一区二区| 欧美成人激情免费网| 久久91精品久久久久久秒播| 2021国产精品久久精品| 国产不卡高清在线观看视频| 18成人在线观看| 欧美日本韩国一区二区三区视频| 日韩av在线免费观看不卡| 欧美不卡123| 国产一区二区三区久久久| 亚洲欧美在线视频观看| 在线免费一区三区| 日韩成人一区二区| 久久精品一区二区三区av| 91视频在线看| 欧美aa在线视频| 中文字幕成人网| 欧美日韩国产高清一区二区三区| 看电视剧不卡顿的网站| 欧美激情一区二区三区四区| 欧美性猛片xxxx免费看久爱| 久久草av在线| 一区二区三区视频在线观看| 日韩久久久精品| 91麻豆自制传媒国产之光| 日本sm残虐另类| 中文字幕一区二区视频| 91精品国产综合久久久久| 成人一道本在线| 五月开心婷婷久久| 国产精品毛片高清在线完整版 | 久久国产夜色精品鲁鲁99| 日本一区二区三区在线不卡| 欧美色综合网站| 国产成人综合在线| 视频一区二区三区在线| 亚洲视频一二区| 精品日韩一区二区三区免费视频| 日本韩国一区二区三区| 国产成人av自拍| 精品一区二区三区免费毛片爱| 夜夜精品浪潮av一区二区三区 | 色婷婷亚洲综合| 国产成人福利片| 精一区二区三区| 五月激情综合网| 亚洲国产美女搞黄色| 国产精品色噜噜| 国产午夜亚洲精品羞羞网站| 欧美一区二区日韩一区二区| 欧美性生交片4| 在线欧美日韩国产| 97超碰欧美中文字幕| 国产成人综合亚洲网站| 国产麻豆精品95视频| 久久国产精品第一页| 奇米四色…亚洲| 美女尤物国产一区| 青青草国产成人99久久| 亚洲成a人v欧美综合天堂下载| 亚洲色图欧美偷拍| 亚洲免费在线电影| 亚洲精品久久嫩草网站秘色| 亚洲美女一区二区三区| 亚洲欧美电影院| 亚洲免费av高清| 亚洲高清免费一级二级三级| 亚洲综合精品久久| 亚洲成人动漫av| 亚洲电影中文字幕在线观看| 亚洲成人tv网| 美女任你摸久久| 九九久久精品视频| 国产一区999| av电影一区二区| 色琪琪一区二区三区亚洲区| 在线观看国产一区二区| 欧美性淫爽ww久久久久无| 欧美日韩日日骚| 日韩一级大片在线| 欧美精彩视频一区二区三区| 中文字幕一区二| 一区二区三区四区国产精品| 日韩福利电影在线| 国产精品亚洲人在线观看| 成人黄色小视频| 91福利精品视频| 日韩免费观看高清完整版在线观看| 久久综合一区二区| 国产精品久久久久久久久搜平片 | 亚洲免费在线视频一区 二区| 亚洲综合一区二区精品导航| 亚洲成在人线免费| 精品一区二区三区久久| 99re这里只有精品6| 91精品国产全国免费观看 | 一本大道久久a久久综合婷婷| 欧美又粗又大又爽| www国产成人免费观看视频 深夜成人网 | 久久99国产精品成人| 成人丝袜高跟foot| 欧美日本韩国一区| 国产欧美综合在线观看第十页| 亚洲日本在线天堂| 日本美女视频一区二区| 成人在线一区二区三区| 欧美三级日韩在线| 国产精品看片你懂得| 天堂成人免费av电影一区| 不卡的看片网站| 91精品国产欧美一区二区18| 中文字幕亚洲不卡| 激情综合色综合久久| 在线看一区二区| 国产日韩成人精品|