PHP Classes

File: phpcf-src/ext/php_phpcf.h

Recommend this page to a friend!
  Classes of Alex Krash   PHP Code formatter   phpcf-src/ext/php_phpcf.h   Download  
File: phpcf-src/ext/php_phpcf.h
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: PHP Code formatter
Reformat PHP code according to standard options
Author: By
Last change:
Date: 9 years ago
Size: 7,131 bytes
 

Contents

Class file image Download
/* +----------------------------------------------------------------------+ | PHPCF code formatter | +----------------------------------------------------------------------+ */ /* $Id$ */ #ifndef PHP_PHPCF_H #define PHP_PHPCF_H extern zend_module_entry phpcf_module_entry; #define phpext_phpcf_ptr &phpcf_module_entry #ifdef ZTS #include "TSRM.h" #endif #define PHPCF_VERSION_STRING "1.0.0" #ifdef ZTS #define PHPCF_G(v) TSRMG(phpcf_globals_id, zend_phpcf_globals *, v) #else #define PHPCF_G(v) (phpcf_globals.v) #endif /** * Constants */ #define PHPCF_DEFAULT_MAX_LINE_LENGTH 120 // Custom tokens #define T_STRING_CONTENTS 10000 #define T_HEREDOC_CONTENTS 10001 #define T_SINGLE_LINE_COMMENT 10002 #define T_SINGLE_LINE_COMMENT_ALONE 10003 #define T_ANONFUNC 10004 #define T_ANONFUNC_LONG 10005 #define T_WHITESPACE_ALIGNED 10006 #define T_FUNCTION_NAME 10007 #define T_TERNARY_GLUED 10008 #define T_EMPTY_BODY_OPEN 10009 #define T_ARRAY_SHORT 10010 #define T_ARRAY_SHORT_ML 10011 #define T_ARRAY_HINT 10012 #define PHPCF_INDENT " " // Control constants #define PHPCF_KEY_ALL 1 #define PHPCF_KEY_LEFT 2 #define PHPCF_KEY_RIGHT 3 #define PHPCF_KEY_TYPE 4 #define PHPCF_KEY_CODE 5 #define PHPCF_KEY_TEXT 6 #define PHPCF_KEY_LINE 7 #define PHPCF_KEY_SEQUENCE 8 #define PHPCF_KEY_TOKEN_LENGTH 9 #define PHPCF_KEY_DESCR_LEFT 10 #define PHPCF_KEY_DESCR_RIGHT 11 #define PHPCF_EX_DO_NOT_TOUCH_ANYTHING 100 #define PHPCF_EX_CHECK_NL_STRONG 101 #define PHPCF_EX_DELETE_SPACES_STRONG 102 #define PHPCF_EX_SHRINK_SPACES_STRONG 103 #define PHPCF_EX_SHRINK_NLS_STRONG 104 // shrink to two lines (if any) #define PHPCF_EX_SHRINK_NLS_2 105 #define PHPCF_EX_SHRINK_NLS 106 #define PHPCF_EX_CHECK_NL 107 #define PHPCF_EX_DELETE_SPACES 108 #define PHPCF_EX_SHRINK_SPACES 109 // accept either new line or space as whitespace #define PHPCF_EX_NL_OR_SPACE 110 #define PHPCF_EX_INCREASE_INDENT 200 #define PHPCF_EX_DECREASE_INDENT 201 /** * Macros */ #define TOK_IS_LONG(tok) (tok & 1 << 24) #define TOK_IS_NL(tok) (tok & 1 << 23) #define TOK_IS_UNARY(tok) (tok & 1 << 22) #define TOK_IS_LEFT(tok) (tok & 1 << 21) #define TOK_IS_RIGHT(tok) (tok & 1 << 20) #define TOK_IS_INLINE(tok) (tok & 1 << 19) #define TOK_IS_EMPTY(tok) (tok & 1 << 18) #define TOK_LONG(tok) (tok | 1 << 24) #define TOK_NL(tok) (tok | 1 << 23) #define TOK_UNARY(tok) (tok | 1 << 22) #define TOK_LEFT(tok) (tok | 1 << 21) #define TOK_RIGHT(tok) (tok | 1 << 20) #define TOK_INLINE(tok) (tok | 1 << 19) #define TOK_EMPTY(tok) (tok | 1 << 18) #define SHOULD_IGNORE_TOKEN(type) ((type) == T_COMMENT || (type) == T_WHITESPACE) #define TOKEN_HOOK_ARGS frm, stokens, scur, scnt, tokens, cur, buf #define TOKEN_HOOK(name) static void name(Formatter *frm, phpcf_token *stokens, int *scur, int scnt, phpcf_token *tokens, int *cur, char **buf) /** * Structures */ // Formatter options typedef struct { int max_line_length; // number of characters to mark line as long char *indent; // your indent zend_bool sniff; // sniff messages zend_bool debug; // debug fsm } phpcf_options; // Rewrote token typedef struct { int type; int line; char *val; } phpcf_token; // Operation typedef struct { char *descr_left; char *descr_right; int ex_left; int ex_indent_left; int ex_right; int ex_indent_right; } phpcf_control_rule; #define CTX_RULE_TYPE_FLAT 1 #define CTX_RULE_TYPE_POP 2 #define CTX_RULE_TYPE_PUSH 3 #define CTX_RULE_TYPE_DELAYED 4 #define CTX_RULE_TYPE_REPLACE 5 // Context rule typedef struct { int type; int now_type; // only set for "delayed" and "replace" int now_ctx; // just int for pop, for others it is ctx_id int delayed_type; // only set for "delayed" int delayed_ctx; // only set for "delayed" int replace_type; // only set for "replace" int replace_ctx; // only set for "replace" } phpcf_ctx_rule; // Execution rules #define EXEC_SEQ_TYPE_TOKEN 1 #define EXEC_SEQ_TYPE_EXEC_RULE 2 #define EXEC_SEQ_ORIGIN_LEFT 1 #define EXEC_SEQ_ORIGIN_RIGHT 2 typedef struct { int ex_indent; int ex; char *descr; } phpcf_exec_rule; typedef struct { int type; int origin; int tok_idx; union { phpcf_token *tok; phpcf_exec_rule rule; } seq_data; } phpcf_exec_seq; typedef struct { int len; int contexts[100]; } phpcf_fsm_stack; // Hash table typedef struct { int key; void *val; } _phpcf_hashtable_entry; typedef struct { int cap; int len; _phpcf_hashtable_entry *entries; } phpcf_hashtable; typedef struct { HashTable *user_lines; HashTable *sniff; int last_long_position; int delayed_rule_type; int delayed_rule_ctx; phpcf_hashtable *rules; } formatting_ctx; typedef struct { int counter; int first_ctx; zval *indexes; phpcf_hashtable *inverted_indexes; } phpcf_context_registry; // Formatter typedef struct { zend_object std; phpcf_hashtable *ctx_rules; phpcf_hashtable *format_rules; phpcf_fsm_stack *fsm_stack; phpcf_options *options; zval *string_filter; formatting_ctx *ctx; phpcf_context_registry *ctx_registry; } Formatter; /** * Signatures */ PHP_MINIT_FUNCTION(phpcf); PHP_MINFO_FUNCTION(phpcf); PHP_METHOD(phpcf, format); // Formatting method, returning string PHP_METHOD(phpcf, setStringFilter); // method to install callback for string tokens PHP_METHOD(phpcf, setMaxLineLength); // max line length installation PHP_METHOD(phpcf, setTabSequence); // spaces, tabs, all you want PHP_METHOD(phpcf, setSniffMessages); // sniff mode toggle PHP_METHOD(phpcf, setDebugEnabled); // debug output activator PHP_METHOD(phpcf, getIssues); // collect wrong formatting info PHP_FUNCTION(phpcf_get_version); // retrieve version info /** * Hook signatures */ TOKEN_HOOK(token_hook_open_tag); TOKEN_HOOK(token_hook_close_tag); TOKEN_HOOK(token_hook_whitespace); TOKEN_HOOK(token_hook_function); TOKEN_HOOK(token_hook_tstring); TOKEN_HOOK(token_hook_comment); TOKEN_HOOK(token_hook_classdef); TOKEN_HOOK(token_hook_else); TOKEN_HOOK(token_hook_increment); TOKEN_HOOK(token_hook_static); TOKEN_HOOK(token_hook_heredoc); TOKEN_HOOK(token_hook_binary); TOKEN_HOOK(token_hook_str); TOKEN_HOOK(token_hook_open_brace); TOKEN_HOOK(token_hook_check_unary); TOKEN_HOOK(token_hook_comma); TOKEN_HOOK(token_hook_ternary_begin); TOKEN_HOOK(token_hook_curly_brace); TOKEN_HOOK(token_hook_square_brace); TOKEN_HOOK(token_hook_variable); TOKEN_HOOK(token_hook_array); static int phpcf_rewrite_tokens(Formatter *frm, phpcf_token *source_tokens, int source_tokens_cnt, phpcf_token *tokens, char *buf); static int _get_context_idx(char *name, phpcf_context_registry *registry); #endif /* PHP_PHPCF_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */