#ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include "php_sourcehighlight.h" #include #include #include extern "C" { static function_entry sourcehighlight_functions[] = { PHP_FE(sourcehighlight, NULL) {NULL, NULL, NULL} }; zend_module_entry sourcehighlight_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif PHP_SOURCEHIGHLIGHT_EXTNAME, sourcehighlight_functions, NULL, NULL, NULL, NULL, NULL, #if ZEND_MODULE_API_NO >= 20010901 PHP_SOURCEHIGHLIGHT_VERSION, #endif STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_SOURCEHIGHLIGHT ZEND_GET_MODULE(sourcehighlight) #endif } PHP_FUNCTION(sourcehighlight) { char* text; int text_len; char* lang; int lang_len; char* outlang = "xhtml"; int outlang_len = strlen(outlang); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|s", &text, &text_len, &lang, &lang_len, &outlang, &outlang_len ) == FAILURE) { RETURN_STRING("parameter error", 1); } const std::string outputLang = std::string(outlang, outlang_len) + ".outlang"; srchilite::SourceHighlight sourceHighlight(outputLang); const std::string inputLang = std::string(lang, lang_len) + ".lang"; std::istringstream i(text); std::ostringstream o(""); sourceHighlight.highlight(i, o, inputLang); const std::string result = o.str(); char* cstr = (char*) emalloc(result.size()+1); strcpy((char*) cstr, result.c_str()); RETURN_STRING(cstr, 0); }