📄 compile.h
字号:
/* compile.h * * $Id: compile.h,v 1.13 2004/01/11 09:47:42 whamann Exp $ * * Notice: This header file contains declarations of functions and types that * are just used internally. All library functions and types that are supposed * to be publicly accessable are defined in ./src/ming.h. */#ifndef SWF_COMPILE_H_INCLUDED#define SWF_COMPILE_H_INCLUDED#include "ming.h"typedef struct _buffer *Buffer;/* shut up bison.simple */void yyerror(char *msg);int yylex();#ifndef max #define max(x,y) (((x)>(y))?(x):(y))#endifenum{ PUSH_STRING = 0, PUSH_PROPERTY = 1, PUSH_NULL = 2, PUSH_UNDEF = 3, PUSH_REGISTER = 4, PUSH_BOOLEAN = 5, PUSH_DOUBLE = 6, PUSH_INT = 7, PUSH_CONSTANT = 8, PUSH_CONSTANT16 = 9};typedef enum{ FUNCTION_RANDOM, FUNCTION_LENGTH, FUNCTION_TIME, FUNCTION_INT, FUNCTION_CONCAT, FUNCTION_DUPLICATECLIP} SWFActionFunction;typedef enum{ GETURL_METHOD_NOSEND = 0, GETURL_METHOD_GET = 1, GETURL_METHOD_POST = 2} SWFGetUrl2Method;#define GETURL_LOADMOVIE 0x40#define GETURL_LOADVARIABLES 0x80#define MAGIC_CONTINUE_NUMBER 0x7FFE#define MAGIC_BREAK_NUMBER 0x7FFF#define MAGIC_CONTINUE_NUMBER_LO 0xFE#define MAGIC_CONTINUE_NUMBER_HI 0x7F#define MAGIC_BREAK_NUMBER_LO 0xFF#define MAGIC_BREAK_NUMBER_HI 0x7F#define BUFFER_INCREMENT 128struct _buffer{ byte *buffer; byte *pos; int buffersize; int free; byte *pushloc;};#define BUFFER_SIZE sizeof(struct _buffer)struct switchcase{ Buffer cond, action; int condlen, actlen, isbreak;};struct switchcases{ struct switchcase *list; int count;};enum ctx{ CTX_FUNCTION = 1, CTX_LOOP, CTX_FOR_IN, CTX_SWITCH, CTX_BREAK, CTX_CONTINUE};void addctx(enum ctx val);void delctx(enum ctx val);int chkctx(enum ctx val);void checkByteOrder();/* This is the only function needs be visible: */SWFAction compileSWFActionCode(const char *script);/* create/destroy buffer object */Buffer newBuffer();void destroyBuffer(Buffer out);int bufferConcat(Buffer a, Buffer b); /* destroys b. */int bufferWriteBuffer(Buffer a, Buffer b); /* doesn't. *//* utilities for writing */void bufferGrow(Buffer out);void bufferCheckSize(Buffer out, int bytes);int bufferLength(Buffer out);/* constant pool stuff */int addConstant(const char *s);int bufferWriteConstants(Buffer out);#define MAXCONSTANTPOOLSIZE 65533/* write data to buffer */int bufferWriteOp(Buffer out, int data);int bufferWritePushOp(Buffer out);int bufferWriteU8(Buffer out, int data);int bufferWriteS16(Buffer out, int data);int bufferWriteData(Buffer out, const byte *buffer, int bytes);int bufferWriteHardString(Buffer out, byte *string, int length);int bufferWriteConstantString(Buffer out, byte *string, int length);int bufferWriteString(Buffer out, byte *string, int length);#ifdef __cplusplus/* helper function to avoid many casts */inline int bufferWriteString(Buffer out, char *string, int length) { return bufferWriteString(out,(byte*) string, length); }#endifint bufferWriteInt(Buffer out, int i);int bufferWriteDouble(Buffer out, double d);int bufferWriteNull(Buffer out);int bufferWriteBoolean(Buffer out, int val);int bufferWriteRegister(Buffer out, int num);int bufferWriteSetRegister(Buffer out, int num);int bufferWriteGetProperty(Buffer out, char *string);int bufferWriteSetProperty(Buffer out, char *string);int bufferWriteWTHITProperty(Buffer out);/* concat b to a, destroy b */char *stringConcat(char *a, char *b);/* resolve magic number standins to relative offsets */void bufferResolveJumps(Buffer out);void bufferResolveSwitch(Buffer buffer, struct switchcases *slp);/* rather than setting globals... */void swf4ParseInit(const char *string, int debug);void swf5ParseInit(const char *string, int debug);int swf4parse(void *b);int swf5parse(void *b);#endif /* SWF_COMPILE_H_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -