Подключите модуль «code2html.php» и вызывайте функцию CppConvert ( $Code, $Format ). С помощью значения «pre» параметра $Format, можно указать, что обрабатываемый код необходимо разместить в отдельном абзаце с применением элемента <pre>. Для синтаксического оформления функция CppConvert выделяет лексемы языка С++ и обрамляет их элементами:
В структуре $c2hConf перечислены все ключевые слова и заданы стили оформления каждого из перечисленных элементов. Поэтому необходимо вызвать метод BuildCode2htmlStyle (), который сформирует стилевое описание для ключевых слов.
В php-документе пишем строки:
<?php include_once ( "code2html.php" ); print = BuildCode2htmlStyle () . CppConvert ( " // Шаблонный прототип свойства с доступом чтение/запись template < class Owner, class T, T (Owner::*Getter) ( ), void (Owner::*Setter) ( T ) > struct PropertyRW_ { Property ( Owner & owner ): owner_ ( owner ) {} operator T () { return (owner_.*Getter) (); } T operator () () { return (owner_.*Getter) (); } void operator = ( T value ) { (owner_.*Setter) ( value ); } Owner & owner_; int id ( 0x0 ); }; // Макрос свойства с доступом чтение/запись</code> #define PropertyRW ( Name, Owner, T, Setter, Getter ) PropertyRW_<Owner, T, &Owner::Setter, &Owner::Getter> Name () { return PropertyRW_<Owner, T, &Owner::Setter, &Owner::Getter> (*this); } ", "pre" ); ?>
В итоге получаем на выходе следующий размеченный текст:
// Шаблонный прототип свойства с доступом чтение/запись template <class Owner,class T, T (Owner::*Getter) ( ),void (Owner::*Setter) ( T ) >struct PropertyRW_ { Property ( Owner & owner ): owner_ ( owner ) {}operator T () {return (owner_.*Getter) (); } Toperator () () {return (owner_.*Getter) (); }void operator = ( T value ) { (owner_.*Setter) ( value ); } Owner & owner_;int id (0x0 ); };// Макрос свойства с доступом чтение/запись #define PropertyRW ( Name, Owner, T, Setter, Getter ) PropertyRW_<Owner, T, &Owner::Setter, &Owner::Getter> Name () {return PropertyRW_<Owner, T, &Owner::Setter, &Owner::Getter> (*this ); }
Благодаря такому небольшому сценарию, очень удобно сопровождать материалы статей в формате HTML. Поначалу все фрагменты кода на C++ на данном сайте были оформлены с помощью code2html. Но я рекомендую использовать промышленно признанный пакет GeSHi, который содержит цветовые схемы для более чем 50 формальных языков.