PCP: C++ Preprocessor
|
ユーザーが使用できるAPI群 [詳解]
関数 | |
array_first_key (array $a) | |
配列の先頭要素 [詳解] | |
autolink ($library) | |
オートリンク情報の生成 [詳解] | |
char_literal (string $c) | |
文字リテラルのコード生成 [詳解] | |
check (bool $exp, string $message) | |
式が偽の場合にエラーを発生させる。 [詳解] | |
clamp ($value, $min, $max) | |
値を範囲内に収める。 [詳解] | |
clause (... $args) | |
句の生成 [詳解] | |
constant (string $name) | |
-Dオプションで定義した値の取得 [詳解] | |
convert_to_encoding (string $data, string $encoding) | |
指定したエンコーディングへの変換 [詳解] | |
convert_to_ucn (string $data) | |
国際文字名への変換 [詳解] | |
convert_to_utf8 (string $data) | |
UTF-8への変換 [詳解] | |
convert_to_xdigit (string $data) | |
16進エスケープシーケンスへの変換 [詳解] | |
enum (array $sig, bool $incomplete=false, bool $omit_semicolon=false) | |
列挙体定義の生成 [詳解] | |
error (string $message) | |
ユーザーエラーを発生させる。 [詳解] | |
escape_char (string $c) | |
文字のエスケープ [詳解] | |
fn (array $sig, $mode=false) | |
関数頭部の生成 [詳解] | |
get_ini (string $name) | |
ini情報を取得 [詳解] | |
import (string $file) | |
前処理対象ソースファイルの取り込み [詳解] | |
include_guard_macro (string $path) | |
インクルードガード用のマクロ名 [詳解] | |
indent (string $code, int $indent_level=1) | |
コードのインデント [詳解] | |
is_cplusplus () | |
C++かどうかの判定 [詳解] | |
is_debug_mode () | |
デバッグモードの判定 [詳解] | |
pascal_case (string $name, bool $camel=false) | |
パスカルケースの識別子 [詳解] | |
print_r ($exp, bool $return=false) | |
print_rの結果を標準エラーに出力 [詳解] | |
set_ini (string $name, $value) | |
ini情報の設定 [詳解] | |
single_line (string $code) | |
複数行のコードを1行化 [詳解] | |
snake_case (string $name, bool $tolower=true) | |
スネークケースの識別子 [詳解] | |
space_to_tab (string $code, int $indent) | |
空白を水平タブに変換 [詳解] | |
static_assert (string $exp, ?string $message=null) | |
静的アサーション [詳解] | |
string_literal (string $s) | |
文字列リテラルのコード生成 [詳解] | |
struct (array $sig, bool $incomplete=false, bool $omit_semicolon=false) | |
構造体定義の生成 [詳解] | |
tab_to_space (string $code, int $indent) | |
水平タブから空白への変換 [詳解] | |
type ($sig) | |
型名の取得 [詳解] | |
union (array $sig, bool $incomplete=false, bool $omit_semicolon=false) | |
共用体定義の生成 [詳解] | |
var_dump (... $exp) | |
var_dumpの結果を標準エラーに出力 [詳解] | |
warning (string $message) | |
警告メッセージを出力する。 [詳解] | |
ユーザーが使用できるAPI群
pcp\array_first_key | ( | array | $a | ) |
配列の先頭要素
[in] | $a | 配列 |
pcp\autolink | ( | $library | ) |
オートリンク情報の生成
[in] | $library | ライブラリ名 |
Visual C++の場合は #pragma comment(lib, "$library") を埋め込む。 それ以外はオートリンク情報ファイルにライブラリ名を追記する。
pcp\char_literal | ( | string | $c | ) |
文字リテラルのコード生成
[in] | $c | 文字 |
pcp\check | ( | bool | $exp, |
string | $message | ||
) |
式が偽の場合にエラーを発生させる。
[in] | $exp | 評価する式 |
[in] | $message | エラーメッセージ |
pcp\clamp | ( | $value, | |
$min, | |||
$max | |||
) |
値を範囲内に収める。
[in] | $value | 値 |
[in] | $min | 最小値 |
[in] | $max | 最大値 |
pcp\clause | ( | $args | ) |
句の生成
[in] | ...$args | 句を構成する字句 |
...$argsで指定した字句のうち、文字列または数値だけを抽出し、空白で区切った文字列を生成する。
pcp\constant | ( | string | $name | ) |
-Dオプションで定義した値の取得
[in] | $name | 定義値の名前 |
pcp\convert_to_encoding | ( | string | $data, |
string | $encoding | ||
) |
指定したエンコーディングへの変換
[in] | $data | 変換対象の文字列 |
[in] | $encoding | エンコーディング |
pcp\convert_to_ucn | ( | string | $data | ) |
国際文字名への変換
[in] | $data | 変換対象の文字列 |
pcp\convert_to_utf8 | ( | string | $data | ) |
UTF-8への変換
[in] | $data | 変換対象の文字列 |
pcp\convert_to_xdigit | ( | string | $data | ) |
16進エスケープシーケンスへの変換
[in] | $data | 変換対象の文字列 |
pcp\enum | ( | array | $sig, |
bool | $incomplete = false , |
||
bool | $omit_semicolon = false |
||
) |
列挙体定義の生成
[in] | $sig | シグニチャ情報 |
[in] | $incomplete | 不完全宣言を生成する場合はtrueを指定する。 |
[in] | $omit_semicolon | 末尾のセミコロンを省略する。 |
シグニチャには以下の仕様の配列を指定する。
キー | 値 |
---|---|
'enum' | タグ名 , [タグ名], [ タグ名, 'class', 型名 ] or [ タグ名, null, 型名 ] |
0 | [ 列挙子 or 列挙子 => 定数式, ... ] |
タグ名にnullを指定すれば、タグ名が省略される。 ただし、$incompleteにtrueを指定した場合には、タグ名がnullであってはならない。
配列を用いてタグ名を指定する場合、2番目の要素に 'class' を指定すると、enum class が生成される。 3番目の要素に型名を指定すると、enum : 型名が生成される。 'class'を省略して型名だけを指定する場合、必ず2番目の要素にはnullを指定すること。
なお、CまたはC++98を指定した場合は、'class'および型名は単に無視される。
列挙子は文字列で指定する。
定数式には、整数値または式を表す文字列を指定する。
例)
pcp\error | ( | string | $message | ) |
ユーザーエラーを発生させる。
[in] | $message | エラーメッセージ |
pcp\escape_char | ( | string | $c | ) |
文字のエスケープ
[in] | $c | 文字 |
制御文字や引用符等のエスケープを行う。
pcp\fn | ( | array | $sig, |
$mode = false |
|||
) |
関数頭部の生成
[in] | $sig | シグニチャ |
[in] | $mode | セミコロンの有無を指定するboolean値、または宣言を出力するファイル名 |
シグニチャには以下の仕様の配列を指定する。
キー | 値 |
---|---|
'fn' | 関数名 or [ 関数名, 記憶クラス指定子, 関数指定子 ] |
'template' | [ [ テンプレート仮引数名 => 種別 or [ 種別, 省略時実引数 ], ... ] |
0 | [ [ 仮引数名 => 型名 or [ 型名, 省略時実引数 ], ... ] |
1 | 返却値型, 'auto', or [ 'auto', 返却値型 ] |
関数名にnullを指定すれば、関数名が省略される。 ただし、$omit_semicolonにfalseを指定した場合には、関数名がnullであってはならない。
記憶クラス指定子には'extern'、'static'、'constexpr'を指定することができる。 記憶クラス指定子は省略可能だが、関数指示子を指定する場合はnullを指定することで記憶クラス指定子がないことを表すこと。
関数指定子には'inline'、'virtual'、'explicit'を指定することができる。 関数指定子は省略することができる。
'template'キーに対応する配列には、テンプレート仮引数並びを指定する。 テンプレート仮引数並びにおける種別は、'class'、'typename'または型名を指定する。 種別の型名に 'template' => 配列を指定することで、テンプレートテンプレート仮引数を表現することができる。
返却値型は文字列で指定する。 なお、返却値型名の文字列中にsを含む場合、sの部分に関数宣言子とが入る。
には次のいずれかを指定する。
宣言を出力するファイル名を指定した場合、関数を定義すると同時に、関数宣言を別のファイルにに追記することができる。
pcp\get_ini | ( | string | $name | ) |
ini情報を取得
[in] | $name | パラメータ名 |
pcp\import | ( | string | $file | ) |
前処理対象ソースファイルの取り込み
[in] | $file | ソースファイル名 |
Exception::$pathがnullの場合に発生 | PCPの根幹となる関数。 import関数によってソースコードを取りこむことで、PHPによる前処理が可能になる。 また、元のソースコードがどんな文字エンコーディングを使用していた場合でも、いったん内部的にUTF-8に変換して扱う。 |
pcp\importではなく、PHPの言語構造であるincludeやrequireを用いた場合、前処理や文字エンコーディングの変換は行わない。 また、たとえ -M オプションを指定していた場合でも、依存情報の生成対象とならない。
pcp\include_guard_macro | ( | string | $path | ) |
インクルードガード用のマクロ名
[in] | $path | インクルードファイルのパス名 |
マクロ名は、INC_に続き、$pathを大文字に変換した文字列のうち英数字以外を下線に変換したものを連結し、末尾に下線を付加したものとする。
pcp\indent | ( | string | $code, |
int | $indent_level = 1 |
||
) |
コードのインデント
[in] | $code | 変換対象のコード |
[in] | $indent_level | インデントレベル |
pcp\is_cplusplus | ( | ) |
C++かどうかの判定
pcp\is_debug_mode | ( | ) |
デバッグモードの判定
pcp\pascal_case | ( | string | $name, |
bool | $camel = false |
||
) |
パスカルケースの識別子
[in] | $name | 識別子の元となる単語列 |
[in] | $camel | キャメルケースにする場合はtrueを指定する。 |
$nameに含まれる単語の先頭を大文字にして連結する。 $camelにtrueを指定した場合、識別子の最初の文字は小文字に変換する。 生成した識別子の先頭が数字の場合、先頭に下線を付加する。
pcp\print_r | ( | $exp, | |
bool | $return = false |
||
) |
print_rの結果を標準エラーに出力
[in] | $exp | 式 |
[in] | $return | 結果を返り値として返す場合はtrue |
pcp\set_ini | ( | string | $name, |
$value | |||
) |
ini情報の設定
[in] | $name | パラメータ名 |
[in] | $value | 設定する値 |
pcp\single_line | ( | string | $code | ) |
複数行のコードを1行化
[in] | $code | 元のコード |
pcp\snake_case | ( | string | $name, |
bool | $tolower = true |
||
) |
スネークケースの識別子
[in] | $name | 識別子の元となる単語列 |
[in] | $tolower | 大文字・小文字を維持する場合はfalseを指定する。 |
$nameに含まれる単語を下線で連結する。 $tolowerがtrueの場合、生成した文字列中の英字はすべて小文字になる。 $tolowerを省略した場合はtrueとして扱う。 生成した識別子の先頭が数字の場合、先頭に下線を付加する。
pcp\space_to_tab | ( | string | $code, |
int | $indent | ||
) |
空白を水平タブに変換
[in] | $code | 変換対象のコード |
[in] | $indent | インデント幅 |
pcp\static_assert | ( | string | $exp, |
?string | $message = null |
||
) |
静的アサーション
[in] | $exp | 評価する式 |
[in] | $message | メッセージ文字列 |
pcp\string_literal | ( | string | $s | ) |
文字列リテラルのコード生成
[in] | $s | 文字列 |
pcp\struct | ( | array | $sig, |
bool | $incomplete = false , |
||
bool | $omit_semicolon = false |
||
) |
構造体定義の生成
[in] | $sig | シグニチャ情報 |
[in] | $incomplete | 不完全宣言を生成する場合はtrueを指定する。 |
[in] | $omit_semicolon | 末尾のセミコロンを省略する。 |
シグニチャには以下の仕様の配列を指定する。
キー | 値 |
---|---|
'struct' | タグ名 or [ タグ名 ] |
0 | [ [ メンバ名 => 型名 ], ... ] |
タグ名にnullを指定すれば、タグ名が省略される。 ただし、$incompleteにtrueを指定した場合には、タグ名がnullであってはならない。
型名は文字列で指定する。 なお、型名の文字列中にsを含む場合、sの部分にメンバ名が入る形でフィールドが定義される。
pcp\tab_to_space | ( | string | $code, |
int | $indent | ||
) |
水平タブから空白への変換
[in] | $code | 変換対象のコード |
[in] | $indent | インデント幅 |
pcp\type | ( | $sig | ) |
型名の取得
[in] | $sig | 内部型名またはシグニチャ |
(内部表現ではない)実際のソースコードに埋め込む型名を取得する。
pcp\union | ( | array | $sig, |
bool | $incomplete = false , |
||
bool | $omit_semicolon = false |
||
) |
共用体定義の生成
[in] | $sig | シグニチャ情報 |
[in] | $incomplete | 不完全宣言を生成する場合はtrueを指定する。 |
[in] | $omit_semicolon | 末尾のセミコロンを省略する。 |
シグニチャには以下の仕様の配列を指定する。
キー | 値 |
---|---|
'union' | タグ名 or [ タグ名 ] |
0 | [ メンバ名 => 型名, ... ] |
タグ名にnullを指定すれば、タグ名が省略される。 ただし、$incompleteにtrueを指定した場合には、タグ名がnullであってはならない。
型名は文字列で指定する。 なお、型名の文字列中にsを含む場合、sの部分にメンバ名が入る形でフィールドが定義される。
pcp\var_dump | ( | $exp | ) |
var_dumpの結果を標準エラーに出力
[in] | ...$exp | 式の並び |
pcp\warning | ( | string | $message | ) |
警告メッセージを出力する。
[in] | $message | 警告メッセージ |