亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩国产精品久久久| 91麻豆6部合集magnet| 99国产精品久久久久久久久久 | 精品福利一区二区三区免费视频| 日本一区二区三区高清不卡| 日韩精品电影一区亚洲| 91在线丨porny丨国产| 久久综合久久综合亚洲| 午夜电影一区二区| 色婷婷av久久久久久久| 国产精品免费免费| 国产成人自拍网| 精品少妇一区二区三区在线视频| 亚洲一区二区视频在线观看| 99精品欧美一区| 国产精品伦一区| 成人a区在线观看| 久久精品视频免费观看| 精品亚洲国产成人av制服丝袜| 欧美精选一区二区| 自拍偷拍亚洲激情| 97精品超碰一区二区三区| 国产精品你懂的在线| 国产精品一区在线观看乱码| 精品国产污污免费网站入口 | 日韩欧美激情在线| 日韩国产欧美三级| 欧美一级久久久| 青青草一区二区三区| 在线播放中文一区| 日韩国产高清影视| 日韩欧美一区二区免费| 久久精品二区亚洲w码| 精品国产麻豆免费人成网站| 久久99日本精品| 精品精品欲导航| 国产乱码精品一区二区三区av| 久久久99久久| 99热精品一区二区| 亚洲女同一区二区| 欧美日韩一区二区三区免费看| 午夜精品成人在线视频| 日韩精品在线一区二区| 国产在线一区二区综合免费视频| 国产亚洲一区二区三区四区| 粉嫩一区二区三区性色av| 亚洲丝袜美腿综合| 91精品一区二区三区久久久久久| 日本中文字幕不卡| 久久久噜噜噜久久人人看| 国产.欧美.日韩| 亚洲欧美精品午睡沙发| 欧美老肥妇做.爰bbww| 久久9热精品视频| 国产精品伦一区二区三级视频| 91免费视频网址| 丝袜美腿成人在线| 久久久777精品电影网影网| 色综合久久88色综合天天免费| 亚洲丶国产丶欧美一区二区三区| 欧美一区二区三区人| 国产成人自拍网| 亚洲一区二区三区四区五区中文 | 欧美极品aⅴ影院| 色综合色狠狠综合色| 美日韩一区二区三区| 国产精品久久综合| 欧美日韩二区三区| 成人午夜免费av| 天堂资源在线中文精品| 亚洲国产经典视频| 欧美日产在线观看| 播五月开心婷婷综合| 免费成人你懂的| 亚洲色图视频网| 国产视频在线观看一区二区三区| 欧美日韩一区高清| www.一区二区| 激情欧美一区二区三区在线观看| 亚洲激情自拍视频| 国产日韩综合av| 欧美大度的电影原声| 欧美亚洲动漫精品| a亚洲天堂av| 国模少妇一区二区三区| 石原莉奈在线亚洲二区| 亚洲精品久久7777| 国产精品免费久久久久| 欧美成人乱码一区二区三区| 在线观看91精品国产入口| 成人性生交大片免费| 国内成+人亚洲+欧美+综合在线| 一区二区欧美精品| 亚洲图片你懂的| 中文字幕 久热精品 视频在线 | 欧美一级一区二区| 在线视频你懂得一区| www.在线成人| 成人永久看片免费视频天堂| 精品在线一区二区三区| 蜜桃av一区二区三区| 日韩av一区二| 午夜视频一区在线观看| 亚洲成av人片| 亚洲成a人片综合在线| 亚洲精品视频在线看| 综合欧美一区二区三区| 国产精品久久三区| 国产精品国产三级国产三级人妇| 久久久www免费人成精品| 精品成人一区二区三区四区| 日韩欧美激情四射| 亚洲精品一区二区三区蜜桃下载| 91精品国产福利在线观看| 欧美裸体一区二区三区| 欧美美女视频在线观看| 欧美福利电影网| 欧美一卡二卡在线| 日韩女优毛片在线| 国产亚洲污的网站| 亚洲欧洲另类国产综合| 亚洲精品亚洲人成人网在线播放| 亚洲精品少妇30p| 亚洲狠狠爱一区二区三区| 天天色图综合网| 捆绑紧缚一区二区三区视频| 久久黄色级2电影| 国产成人在线免费| 91亚洲资源网| 69堂亚洲精品首页| 亚洲精品一区二区三区在线观看 | 欧美一区二区大片| 久久精品一区二区三区四区| 国产精品免费人成网站| 亚洲一区av在线| 免费高清视频精品| 成人精品国产一区二区4080| 日本韩国精品在线| 91精品国模一区二区三区| 精品裸体舞一区二区三区| 中文字幕在线免费不卡| 丝袜美腿亚洲综合| 国产成人99久久亚洲综合精品| 色综合色狠狠天天综合色| 欧美一区二区三区婷婷月色| 国产女主播一区| 亚洲成人免费视| 国产精品一区专区| 欧美色爱综合网| 亚洲国产成人午夜在线一区| 亚洲一区二区综合| 高清视频一区二区| 在线播放亚洲一区| 国产精品国产馆在线真实露脸| 丝袜美腿亚洲色图| 99re这里都是精品| 欧美白人最猛性xxxxx69交| 亚洲丝袜美腿综合| 国内精品伊人久久久久av一坑 | 不卡欧美aaaaa| 欧美一区二区三区喷汁尤物| 国产精品乱码人人做人人爱 | 99热精品国产| 精品动漫一区二区三区在线观看| 一区二区三区久久久| 国产一区二三区| 8x福利精品第一导航| 亚洲男女毛片无遮挡| 国产综合久久久久久鬼色| 日韩精品专区在线影院重磅| 亚洲色图制服丝袜| 国产成人精品三级麻豆| 日韩欧美国产wwwww| 亚洲一区在线看| 99亚偷拍自图区亚洲| 久久久久高清精品| 久久精品噜噜噜成人88aⅴ| 欧美在线视频日韩| 亚洲美女在线国产| 成人性生交大片免费看中文| 亚洲精品在线免费播放| 青青草成人在线观看| 日本韩国一区二区| 亚洲欧美视频一区| 成人国产精品免费观看动漫| 久久久久国产成人精品亚洲午夜 | 成人丝袜高跟foot| 精品国产乱码久久久久久影片| 丝袜国产日韩另类美女| 欧美天天综合网| 一二三四社区欧美黄| 色噜噜偷拍精品综合在线| 亚洲欧美另类久久久精品2019| 99久久精品国产网站| 国产精品婷婷午夜在线观看| 国产乱码精品一区二区三区五月婷| 精品久久一区二区三区| 国产在线精品国自产拍免费| 欧美r级电影在线观看| 久久精品国产第一区二区三区|