nlib
nn::nlib 名前空間

共通して使われる機能やプラットフォームへの依存度が高い機能が実装されます。 nlib Platform APIs も御覧ください。nlib_nsはエイリアスです。 [詳解]

名前空間

 binary_reader
 BinaryReaderクラスでユーザー定義クラスに読み込むために利用する関数が定義されています。
 
 binary_writer
 BinaryWriterクラスでユーザー定義クラスを書きこむために利用する関数が定義されています。
 
 exi
 バイナリXMLパーサー(とXMLパーサー)が実装されています。
 
 handle_maker
 HandleMakerクラスをカスタマイズするための関数テンプレートが定義されている名前空間です。
 
 heap
 heapライブラリの名前空間です。nmalloc(), nfree()等はグローバル名前空間に定義されています。
 
 msgpack
 MessagePackのシリアライザ及びJSONパーサー/ライター, CSVパーサーが実装されています。
 
 oss
 オープンソース・ソフトウェア(OSS), OSS派生コード, 及びOSSにアクセスするためのライブラリが実装されています。
 
 simd
 整数、単精度浮動小数点数のSIMD演算を行うためのクラスや関数が実装されています。
 
 succinct
 ビットベクトルに関する簡潔データ構造クラスのライブラリが実装されています。
 
 testing
 C++のコードをテストするためのフレームワークです。testingライブラリの機能一覧 の説明も御覧ください。
 
 threading
 スレッド関連のクラスや関数が実装されています。
 
 unicode
 ユニコード関連の機能が実装されています。
 

クラス

class  Base64InputStream
 Base64でエンコードされたデータを読み込むためのクラスです。 [詳解]
 
class  Base64OutputStream
 データをBase64でエンコードして書きこむためのクラスです。 [詳解]
 
class  BinaryReader
 ストリーム(InputStream)からバイナリを読み込むクラスです。 [詳解]
 
class  BinaryWriter
 ストリーム(OutputStream)にバイナリを書き込むクラスです。 [詳解]
 
class  ConsoleOutputStream
 nlib_printfを利用して文字列としてコンソールに出力するストリームを作成します。 [詳解]
 
class  ConstructorForLockFree
 オブジェクトを初期化するためのクラステンプレートです。特殊化して利用します。 [詳解]
 
class  Crc32
 データ(ストリーム)のCRC-32を計算するためのクラスです。 [詳解]
 
class  DateTime
 日時を表すクラスです。 [詳解]
 
struct  DateTimeParams
 日時情報をDateTimeに設定したりDateTimeから取得するための構造体です。 [詳解]
 
class  DestructorForLockFree
 オブジェクトをデストラクトするためのクラステンプレートです。特殊化して利用します。 [詳解]
 
class  DynamicAlignedStorage
 アラインされたメモリを得るためのクラスです。 [詳解]
 
class  FileInputStream
 ファイルの入力ストリームです。 [詳解]
 
struct  FileInputStreamSettings
 ファイルストリームの設定情報を格納する構造体です。 [詳解]
 
class  FileOutputStream
 ファイルの出力ストリームです。 [詳解]
 
struct  FileOutputStreamSettings
 ファイルストリームの設定情報を格納する構造体です。 [詳解]
 
class  FileStyleUri
 fileスキームを用いたURIをパースしたりURI文字列を構築したりするためのクラスです。 [詳解]
 
class  HandleAccess
 ハンドル実体に対してポインタのようにアクセスできるアクセサクラスです。HandlerMakerクラスにより設定されて利用可能になります。 [詳解]
 
class  HandleMaker
 32bit整数値を持つハンドルの実装を支援するクラスです。 [詳解]
 
struct  HandleTable
 HandlerMakerクラスが利用するハンドルの実体への参照テーブルです。 [詳解]
 
class  HttpStyleUri
 http/httpsスキームを用いたURIをパースしたりURI文字列を構築したりするためのクラスです。 [詳解]
 
class  InputConverterStream
 内部でデータ変換を行う InputStream のように振る舞うクラスの基底です。 [詳解]
 
class  InputConverterStreamTempl
 InputTransformの派生クラスを保持するためのクラスです。 [詳解]
 
class  InputStream
 入力ストリームの基底クラスです。このクラスを実体化することはできません。 [詳解]
 
class  LockFreeBroadcastQueue
 指定された数のリスナーがキューから要素を取得できます。全てのリスナーが取得後、要素はキューから削除されます。 [詳解]
 
class  LockFreePipe
 データの送り手側のスレッドと受け手側のスレッドがそれぞれ1つずつの場合、このクラスを用いてロックフリーにデータの受け渡しを行うことができます。 [詳解]
 
class  LockFreePriorityQueue
 ロックフリーな優先度つきキューを実装したクラスで、nlib_mqをラップしています。 [詳解]
 
class  LockFreeQueue
 ロックフリーなキューを実装しているクラスです。 [詳解]
 
class  LockFreeStack
 ロックフリーなスタックを実装しているクラスです。 [詳解]
 
class  LockFreeUnitHeap
 固定メモリサイズの領域を確保・解放をロックフリーで行うことのできるプールアロケータです。 [詳解]
 
class  MemoryInputStream
 メモリを使用する入力ストリームを作成します。 [詳解]
 
class  MemoryOutputStream
 メモリを使用する出力ストリームを作成します。 [詳解]
 
struct  move_tag
 空の構造体で、関数の引数をムーブすべきことを示すために利用されます。 [詳解]
 
class  NativePathMapper
 機種依存しないURIによるパス記述からネイティブのパス文字列を得るためのクラスです。 [詳解]
 
class  Nflags
 コマンドラインフラグをパースするためのクラスです。 [詳解]
 
class  Nlist
 std::vectorに似た、コピーコンストラクタを持たないオブジェクトを格納可能なコンテナ類似クラスです。 [詳解]
 
class  Nqueue
 std::queueに似た、コピーコンストラクタを持たないオブジェクトを格納可能なコンテナ類似クラスです。 [詳解]
 
class  NullInputStream
 常に0を読み込むストリームです。 [詳解]
 
class  NullOutputStream
 実際の書き込み動作を行わないOutputStreamです。 [詳解]
 
class  OutputConverterStream
 内部でデータ変換を行うOutputStreamのように振る舞うクラスの基底です。 [詳解]
 
class  OutputConverterStreamTempl
 OutputTransformの派生クラスを保持するためのクラスです。 [詳解]
 
class  OutputStream
 出力ストリームの基底クラスです。このクラスを実体化することはできません。 [詳解]
 
class  ReallocCstringVec
 C文字列のベクタをreallocベースで実装しています。 [詳解]
 
class  ReallocOutputStream
 nlib_realloc()等のrealloc関数を利用して拡張するメモリ領域に書きこむ出力ストリームです。 [詳解]
 
class  ReallocQueue
 PODを要素に持つキューをreallocベースで実装しています。 [詳解]
 
class  ReallocVec
 PODを要素に持つベクタをreallocベースで実装しています。 [詳解]
 
class  SimpleSingleton
 main関数の実行前にstatic変数により暗黙的にインスタンスを構築するタイプのシングルトンです。 [詳解]
 
class  Singleton
 最初に利用されるときにオブジェクトが初期化されるシングルトンです。 [詳解]
 
class  SmartBitmap
 Rank/Select操作つきのビットデータを保持するデータ構造です。 [詳解]
 
class  SmartBitmapCrtp
 Rank/Select操作つきのビットデータを保持するデータ構造です。 [詳解]
 
class  SmartBitmapPtr
 Rank/Select操作つきのビットデータを保持するデータ構造です。 [詳解]
 
class  StringView
 std::stringが持つメソッドをstd::stringを構築せずに利用するためのクラスです。 [詳解]
 
class  TaggedTextParser
 XML風タグ付きテキストをパースする簡単なパーサーです。 [詳解]
 
class  TextReader
 ストリームからテキストを読み込むクラスです。 [詳解]
 
class  TextWriter
 ストリームにテキストを書き込むクラスです。 [詳解]
 
class  TimeSpan
 時間を表すクラスです。 [詳解]
 
class  TimeValue
 64bitの符号付き整数をラップするクラスです。 [詳解]
 
class  UniquePtr
 UniquePtrはポインタの所有権を保持し、UniquePtrがスコープから出るときにデストラクタでポインタをDELで指定した方法により解放します。 [詳解]
 
class  Uri
 一般的なURIをパースしたり構築したりするためのクラスです。 [詳解]
 
class  UriTemplate
 URI Template(RFC 6570, Level3)をサポートします。 [詳解]
 
class  Utf16InputStream
 UTF-16の文字列ストリームをUTF-8にして読み込むためのクラスです。 [詳解]
 
class  Utf32InputStream
 UTF-32の文字列ストリームをUTF-8にして読み込むためのクラスです。 [詳解]
 
class  WcharInputStream
 ワイド文字(wchar_t, UTF-16/UTF-32)の文字列ストリームをUTF-8にして読み込むためのクラスです。 [詳解]
 
class  ZlibInputStream
 zlibを用いて圧縮したデータを読み込むためのストリームクラスです。 [詳解]
 
struct  ZlibInputStreamSettings
 ZlibInputStreamの各種設定が格納されている構造体です。 コンストラクト時にはデフォルトの設定が格納されています。 [詳解]
 
class  ZlibOutputStream
 zlibを用いてデータを圧縮してストリームに書き込みます。 [詳解]
 
struct  ZlibOutputStreamSettings
 ZlibOutputStreamの各種設定が格納されている構造体です。コンストラクト時にはデフォルトの設定が格納されています。 [詳解]
 

型定義

typedef nlib_utf16_t utf16_t
 UTF16の文字に対する型です。 nlib_utf16_ttypedefされています。
 
typedef nlib_utf32_t utf32_t
 UTF32の文字に対する型です。 nlib_utf32_ttypedefされています。
 

関数

size_t StrLen (const char *str) noexcept
 nlib_strlen()をラップします。
 
size_t StrLen (const nlib_utf16_t *str) noexcept
 nlib_utf16len()をラップします。
 
size_t StrLen (const nlib_utf32_t *str) noexcept
 nlib_utf32len()をラップします。
 
size_t StrLen (const wchar_t *str) noexcept
 nlib_wcslen()をラップします。
 
errno_t CodePointCount (const char *str, size_t *count) noexcept
 nlib_strcplen()をラップします。
 
errno_t CodePointCount (const nlib_utf16_t *str, size_t *count) noexcept
 nlib_utf16cplen()をラップします。
 
errno_t CodePointCount (const nlib_utf32_t *str, size_t *count) noexcept
 nlib_utf32cplen()をラップします。
 
errno_t CodePointCount (const wchar_t *str, size_t *count) noexcept
 nlib_wcscplen()をラップします。
 
int StrCmp (const char *s1, const char *s2) noexcept
 strcmp()をラップします。
 
int StrCmp (const wchar_t *s1, const wchar_t *s2) noexcept
 wcscmp()をラップします。
 
int StrCmp (const nlib_utf16_t *s1, const nlib_utf16_t *s2) noexcept
 UTF-16文字列をstrcmp()と同様に比較します。
 
int StrCmp (const nlib_utf32_t *s1, const nlib_utf32_t *s2) noexcept
 UTF-32文字列をstrcmp()と同様に比較します。
 
int StrNcmp (const char *s1, const char *s2, size_t n) noexcept
 strncmp()をラップします。
 
int StrNcmp (const wchar_t *s1, const wchar_t *s2, size_t n) noexcept
 wcsncmp()をラップします。
 
int StrNcmp (const nlib_utf16_t *s1, const nlib_utf16_t *s2, size_t n) noexcept
 UTF-16文字列をstrncmp()と同様に比較します。
 
int StrNcmp (const nlib_utf32_t *s1, const nlib_utf32_t *s2, size_t n) noexcept
 UTF-32文字列をstrncmp()と同様に比較します。
 
errno_t StrCpy (char *dest, size_t destSize, const char *src) noexcept
 nlib_strcpy()をラップします。
 
errno_t StrCpy (nlib_utf16_t *dest, size_t destSize, const nlib_utf16_t *src) noexcept
 nlib_utf16cpy()をラップします。
 
errno_t StrCpy (nlib_utf32_t *dest, size_t destSize, const nlib_utf32_t *src) noexcept
 nlib_utf32cpy()をラップします。
 
errno_t StrCpy (wchar_t *dest, size_t destSize, const wchar_t *src) noexcept
 nlib_wcscpy()をラップします。
 
template<class T , size_t N>
errno_t StrCpy (T(&dest)[N], const T *src) noexcept
 内部でStrCpy(&dest[0], N, src)を呼び出します。 [詳解]
 
errno_t StrNcpy (char *dest, size_t destSize, const char *src, size_t maxNumCopyWithoutNull) noexcept
 nlib_strncpy()をラップします。
 
errno_t StrNcpy (nlib_utf16_t *dest, size_t destSize, const nlib_utf16_t *src, size_t maxNumCopyWithoutNull) noexcept
 nlib_utf16ncpy()をラップします。
 
errno_t StrNcpy (nlib_utf32_t *dest, size_t destSize, const nlib_utf32_t *src, size_t maxNumCopyWithoutNull) noexcept
 nlib_utf32ncpy()をラップします。
 
errno_t StrNcpy (wchar_t *dest, size_t destSize, const wchar_t *src, size_t maxNumCopyWithoutNull) noexcept
 nlib_wcsncpy()をラップします。
 
template<class T , size_t N>
errno_t StrNcpy (T(&dest)[N], const T *src, size_t maxNumCopyWithoutNull) noexcept
 内部でStrNcpy(&dest[0], N, src, maxNumCopyWithoutNull)を呼び出します。 [詳解]
 
errno_t MemCpy (void *dest, size_t destSize, const void *src, size_t srcSize) noexcept
 nlib_memcpy()をラップします。
 
errno_t MemMove (void *dest, size_t destSize, const void *src, size_t srcSize) noexcept
 nlib_memmove()をラップします。
 
errno_t StrCat (char *dest, size_t destSize, const char *src) noexcept
 nlib_strcat()をラップします。
 
errno_t StrCat (wchar_t *dest, size_t destSize, const wchar_t *src) noexcept
 nlib_wcscat()をラップします。
 
template<class T , size_t N>
errno_t StrCat (T(&dest)[N], const T *src) noexcept
 内部でStrCat(&dest[0], N, src)を呼び出します。 [詳解]
 
errno_t StrNcat (char *dest, size_t destSize, const char *src, size_t maxNumCopyWithoutNull) noexcept
 nlib_strncat()をラップします。
 
errno_t StrNcat (wchar_t *dest, size_t destSize, const wchar_t *src, size_t maxNumCopyWithoutNull) noexcept
 nlib_wcsncat()をラップします。
 
template<class T , size_t N>
errno_t StrNcat (T(&dest)[N], const T *src, size_t maxNumCopyWithoutNull) noexcept
 内部でStrNcat(&dest[0], N, src, maxNumCopyWithoutNull)を呼び出します。 [詳解]
 
int IsAlnum (int c) noexcept
 std::isalnum(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsAlpha (int c) noexcept
 std::isalpha(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsCntrl (int c) noexcept
 std::iscntrl(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsDigit (int c) noexcept
 std::isdigit(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsGraph (int c) noexcept
 std::isgraph(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsLower (int c) noexcept
 std::islower(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsPrint (int c) noexcept
 std::isprint(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsPunct (int c) noexcept
 std::ispunct(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsSpace (int c) noexcept
 std::isspace(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsUpper (int c) noexcept
 std::isupper(static_cast<unsigned char>(c))を返します。 [詳解]
 
int IsXdigit (int c) noexcept
 std::isxdigit(static_cast<unsigned char>(c))を返します。 [詳解]
 
int ToUpper (int c) noexcept
 std::toupper(static_cast<unsigned char>(c))を返します。 [詳解]
 
int ToLower (int c) noexcept
 std::tolower(static_cast<unsigned char>(c))を返します。 [詳解]
 
int VsnPrintfFallback (char *buf, size_t size, const char *fmt, va_list args) noexcept
 VsnPrintfのフォールバックです。ワイド文字版も実装されています。 [詳解]
 
int VsnPrintf (char *buf, size_t size, const char *fmt, va_list args) noexcept
 vsnprintf()を実行します。 [詳解]
 
template<size_t N>
int VsnPrintf (char(&buf)[N], const char *fmt, va_list args) noexcept
 内部でVsnPrintf(buf, N, fmt, args)を実行します。 [詳解]
 
int SnPrintf (char *buf, size_t size, const char *fmt,...) noexcept
 内部でVsnPrintf()を呼び出す以外はsnprintf相当の動作をします。 [詳解]
 
template<size_t N>
int SnPrintf (char(&buf)[N], const char *fmt,...) noexcept
 内部でVsnPrintf()を実行します。 [詳解]
 
int VsnPrintf (wchar_t *buf, size_t size, const wchar_t *fmt, va_list args) noexcept
 vsnprintfを実行します。 [詳解]
 
template<size_t N>
int VsnPrintf (wchar_t(&buf)[N], const wchar_t *fmt, va_list args) noexcept
 内部でVsnPrintf(buf, N, fmt, args)を実行します。 [詳解]
 
int SnPrintf (wchar_t *buf, size_t size, const wchar_t *fmt,...) noexcept
 内部でVsnPrintf()を呼び出す以外はsnwprintf相当の動作をします。 [詳解]
 
template<size_t N>
int SnPrintf (wchar_t(&buf)[N], const wchar_t *fmt,...) noexcept
 内部でVsnPrintf()を実行します。 [詳解]
 
errno_t GetNintendoTime (int64_t *t) noexcept
 2000/01/01を起点とした経過時間をミリ秒単位で返します。 [詳解]
 
uint64_t GetTickTime () noexcept
 システムを起動した後の経過時間をミリ秒単位で返します。 [詳解]
 
bool operator== (const TimeValue &lhs, const TimeValue &rhs) noexcept
 比較演算子です。
 
bool operator< (const TimeValue &lhs, const TimeValue &rhs) noexcept
 比較演算子です。
 
bool operator!= (const TimeValue &lhs, const TimeValue &rhs) noexcept
 比較演算子です。
 
bool operator> (const TimeValue &lhs, const TimeValue &rhs) noexcept
 比較演算子です。
 
bool operator<= (const TimeValue &lhs, const TimeValue &rhs) noexcept
 比較演算子です。
 
bool operator>= (const TimeValue &lhs, const TimeValue &rhs) noexcept
 比較演算子です。
 
TimeValue operator+ (const TimeValue &lhs, const TimeValue &rhs) noexcept
 加算します。
 
TimeValue operator- (const TimeValue &lhs, const TimeValue &rhs) noexcept
 減算します。
 
TimeSpan operator+ (const TimeSpan &lhs, const TimeSpan &rhs) noexcept
 加算します。
 
TimeSpan operator- (const TimeSpan &lhs, const TimeSpan &rhs) noexcept
 減算します。
 
TimeSpan operator* (int i, const TimeSpan &rhs) noexcept
 rhsi 倍します。
 
TimeSpan operator* (double d, const TimeSpan &rhs) noexcept
 rhsd 倍します。
 
TimeSpan operator* (const TimeSpan &lhs, int i) noexcept
 rhsi 倍します。
 
TimeSpan operator* (const TimeSpan &lhs, double d) noexcept
 rhsd 倍します。
 
DateTime operator+ (const DateTime &lhs, const TimeSpan &rhs) noexcept
 lhs から rhs だけ未来の時刻を返します。
 
DateTime operator- (const DateTime &lhs, const TimeSpan &rhs) noexcept
 lhs から rhs だけ過去の時刻を返します。
 
TimeSpan operator- (const DateTime &lhs, const DateTime &rhs) noexcept
 時刻rhs から時刻lhs までの時間を返します。
 
template<class T >
errno_t LockFreeInit (T **ptr) noexcept
 スレッドセーフにオブジェクトの構築を行います。 [詳解]
 
template<class T , class AL1 , class AL2 >
bool operator== (const Nlist< T, AL1 > &lhs, const Nlist< T, AL2 > &rhs) noexcept
 2つのリストが等価かどうか調べます。
 
template<class T , class AL1 , class AL2 >
bool operator!= (const Nlist< T, AL1 > &lhs, const Nlist< T, AL2 > &rhs) noexcept
 2つのリストが等価かどうか調べます。
 
template<class T , class AL1 , class AL2 >
bool operator< (const Nlist< T, AL1 > &lhs, const Nlist< T, AL2 > &rhs) noexcept
 2つのリストを辞書順で比較します。
 
template<class T , class AL1 , class AL2 >
bool operator> (const Nlist< T, AL1 > &lhs, const Nlist< T, AL2 > &rhs) noexcept
 2つのリストを辞書順で比較します。
 
template<class T , class AL1 , class AL2 >
bool operator<= (const Nlist< T, AL1 > &lhs, const Nlist< T, AL2 > &rhs) noexcept
 2つのリストを辞書順で比較します。
 
template<class T , class AL1 , class AL2 >
bool operator>= (const Nlist< T, AL1 > &lhs, const Nlist< T, AL2 > &rhs) noexcept
 2つのリストを辞書順で比較します。
 
bool operator== (const StringView &lhs, const StringView &rhs) noexcept
 文字列が一致するかどうか比較します。
 
bool operator!= (const StringView &lhs, const StringView &rhs) noexcept
 文字列が一致するかどうか比較します。
 
bool operator< (const StringView &lhs, const StringView &rhs) noexcept
 文字列を辞書順で比較します。
 
bool operator> (const StringView &lhs, const StringView &rhs) noexcept
 文字列を辞書順で比較します。
 
bool operator<= (const StringView &lhs, const StringView &rhs) noexcept
 文字列を辞書順で比較します。
 
bool operator>= (const StringView &lhs, const StringView &rhs) noexcept
 文字列を辞書順で比較します。
 
errno_t StrTo (const char *s, int base, int32_t *v) noexcept
 文字列sint32_t型の整数に変換します。 [詳解]
 
errno_t StrTo (const char *s, int base, int64_t *v) noexcept
 文字列sint64_t型の整数に変換します。 [詳解]
 
errno_t StrTo (const char *s, int base, uint32_t *v) noexcept
 文字列suint32_t型の整数に変換します。 [詳解]
 
errno_t StrTo (const char *s, int base, uint64_t *v) noexcept
 文字列suint64_t型の整数に変換します。 [詳解]
 
errno_t StrTo (const char *s, double *v) noexcept
 文字列sdouble型に変換します。 [詳解]
 
errno_t StrTo (const char *s, float *v) noexcept
 文字列sをfloat型に変換します。 [詳解]
 
errno_t StrTo (const char *s, int base, int8_t *v) noexcept
 文字列sint8_t型の整数に変換します。 [詳解]
 
errno_t StrTo (const char *s, int base, int16_t *v) noexcept
 文字列sint16_t型の整数に変換します。 [詳解]
 
errno_t StrTo (const char *s, int base, uint8_t *v) noexcept
 文字列suint8_t型の整数に変換します。 [詳解]
 
errno_t StrTo (const char *s, int base, uint16_t *v) noexcept
 文字列suint16_t型の整数に変換します。 [詳解]
 
template<class T1 , class D1 , class T2 , class D2 >
bool operator== (const UniquePtr< T1, D1 > &rhs, const UniquePtr< T2, D2 > &lhs) noexcept
 同じポインタを保持していていればtrueを返します。
 
template<class T1 , class D1 >
bool operator== (const UniquePtr< T1, D1 > &lhs, nullptr_t) noexcept
 lhsNULLであればtrueを返します。
 
template<class T1 , class D1 >
bool operator== (nullptr_t, const UniquePtr< T1, D1 > &rhs) noexcept
 rhsNULLであればtrueを返します。
 
template<class T1 , class D1 , class T2 , class D2 >
bool operator!= (const UniquePtr< T1, D1 > &rhs, const UniquePtr< T2, D2 > &lhs) noexcept
 同じポインタを保持していなければtrueを返します。
 
template<class T1 , class D1 >
bool operator!= (const UniquePtr< T1, D1 > &lhs, nullptr_t) noexcept
 lhsNULLでなければtrueを返します。
 
template<class T1 , class D1 >
bool operator!= (nullptr_t, const UniquePtr< T1, D1 > &rhs) noexcept
 rhsNULLでなければtrueを返します。
 

詳解

共通して使われる機能やプラットフォームへの依存度が高い機能が実装されます。 nlib Platform APIs も御覧ください。nlib_nsはエイリアスです。

説明
nn::nlib名前空間にはスレッドやストリーム関連のクラス、及びuriパーサーといったユーティリティが実装されています。
  • InputStream, OutputStreamを基底クラスとする、各種ストリームクラス
    • Base64及びzlibでの読み書きサポートされている。
    • エンディアンを考慮したバイナリデータの読み書き(BinaryReader, BinaryWriter)
    • UTF-8文字列のストリームでの読み書きの対応(TextReader, TextWriter)
  • DateTime, TimeSpanクラス。
    • 西暦1年から西暦9999年までの日時や時間を100ns単位でサポート
    • W3CDTFとRFC2822の日付表記をサポートしたパーサー
  • その他
以下に参考資料へのリンクを記載します。
RFC等
ソフトウェア

関数詳解

nn::nlib::GetNintendoTime ( int64_t *  t)
inlinenoexcept

2000/01/01を起点とした経過時間をミリ秒単位で返します。

引数
[out]t経過時間が格納されるポインタ
戻り値
0以外の場合はエラー。ポインタが無効な場合はEINVALを返します。

DateTime.h17 行目に定義があります。

nn::nlib::GetTickTime ( )
inlinenoexcept

システムを起動した後の経過時間をミリ秒単位で返します。

戻り値
システムを起動した後の経過時間
各種例:
heap/cachedheap/cachedheap.cpp, heap/nmalloc_simple/nmalloc_simple.cpp, msgpack/msgpack2/msgpack2.cpp.

DateTime.h28 行目に定義があります。

nn::nlib::IsAlnum ( int  c)
inlinenoexcept

std::isalnum(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::isalnum()の戻り値

Cstring.h197 行目に定義があります。

nn::nlib::IsAlpha ( int  c)
inlinenoexcept

std::isalpha(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::isalpha()の戻り値

Cstring.h198 行目に定義があります。

nn::nlib::IsCntrl ( int  c)
inlinenoexcept

std::iscntrl(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::iscntrl()の戻り値

Cstring.h201 行目に定義があります。

nn::nlib::IsDigit ( int  c)
inlinenoexcept

std::isdigit(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::isdigit()の戻り値
各種例:
msgpack/jsonrpc/jsonrpc.cpp, msgpack/jsonrpc/server.cpp.

Cstring.h202 行目に定義があります。

nn::nlib::IsGraph ( int  c)
inlinenoexcept

std::isgraph(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::isgraph()の戻り値

Cstring.h203 行目に定義があります。

nn::nlib::IsLower ( int  c)
inlinenoexcept

std::islower(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::islower()の戻り値

Cstring.h204 行目に定義があります。

nn::nlib::IsPrint ( int  c)
inlinenoexcept

std::isprint(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::isprint()の戻り値

Cstring.h206 行目に定義があります。

nn::nlib::IsPunct ( int  c)
inlinenoexcept

std::ispunct(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::ispunct()の戻り値

Cstring.h207 行目に定義があります。

nn::nlib::IsSpace ( int  c)
inlinenoexcept

std::isspace(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::isspace()の戻り値

Cstring.h208 行目に定義があります。

nn::nlib::IsUpper ( int  c)
inlinenoexcept

std::isupper(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::isupper()の戻り値

Cstring.h209 行目に定義があります。

nn::nlib::IsXdigit ( int  c)
inlinenoexcept

std::isxdigit(static_cast<unsigned char>(c))を返します。

引数
[in]cテストする文字
戻り値
std::isxdigit()の戻り値

Cstring.h211 行目に定義があります。

template<class T >
nn::nlib::LockFreeInit ( T **  ptr)
inlinenoexcept

スレッドセーフにオブジェクトの構築を行います。

テンプレート引数
T初期化するオブジェクトの型
引数
[out]ptr初期化されたオブジェクトへのポインタ
戻り値
0成功した場合
EAGAINコンストラクタ関数(ConstructorForLockFree<T>()())がNULLを返した場合
説明
ConstructorForLockFree<T>()()を実行して作成されたオブジェクトへのポインタを*ptrに代入します。 この際にmutexによる排他が行われることはなく、CAS(Compare-and-Swap)によりスレッドセーフに1回だけオブジェクトへのポインタが設定されます。 このため、複数のスレッドで同時にConstructorForLockFree<T>()()が実行される場合があり、利用されないオブジェクトはDestructorForLockFree<T>()()を実行して削除されます。 なお、*ptrは静的にNULLに初期化しておく必要があります。
コード例
class MyObj {
....
};
static MyObj* myobj = NULL;
NLIB_NAMESPACE_BEGIN
// Specializes nlib_ns::ConstructorForLockFree<T>
template<>
class ConstructorForLockFree<MyObj> {
public:
MyObj* operator()() NLIB_NOEXCEPT {
return new (std::nothrow) MyObj();
}
};
// Specializes nlib_ns::DestructorForLockFree<T>
template<>
class DestructorForLockFree<MyObj> {
public:
void operator()(MyObj* p) { delete p; }
};
NLIB_NAMESPACE_END
....
{
....
if (e != 0) {
// error, you can try again
}
// now you can use myobj
}

LockFree.h602 行目に定義があります。

nn::nlib::SnPrintf ( char *  buf,
size_t  size,
const char *  fmt,
  ... 
)
inlinenoexcept

内部でVsnPrintf()を呼び出す以外はsnprintf相当の動作をします。

引数
[out]buf文字列の格納バッファ
[in]sizeバッファ・サイズ(文字数)
[in]fmt書式の指定
戻り値
VsnPrintf()の戻り値を返します。
説明
内部で以下のコードが実行されます。
va_list args;
va_start(args, fmt);
int rval = VsnPrintf(buf, size, fmt, args);
va_end(args);
return rval;
各種例:
msgpack/jsonrpc/server.cpp.

Cstring.h266 行目に定義があります。

template<size_t N>
nn::nlib::SnPrintf ( char(&)  buf[N],
const char *  fmt,
  ... 
)
inlinenoexcept

内部でVsnPrintf()を実行します。

テンプレート引数
Nバッファ・サイズ(文字数)
引数
[out]buf文字列の格納バッファ
[in]fmt書式の指定
戻り値
VsnPrintf()の戻り値を返します。
説明
内部で以下のコードが実行されます。
va_list args;
va_start(args, fmt);
int rval = VsnPrintf(buf, N, fmt, args);
va_end(args);
return rval;

Cstring.h275 行目に定義があります。

nn::nlib::SnPrintf ( wchar_t *  buf,
size_t  size,
const wchar_t *  fmt,
  ... 
)
inlinenoexcept

内部でVsnPrintf()を呼び出す以外はsnwprintf相当の動作をします。

引数
[out]buf文字列の格納バッファ
[in]sizeバッファ・サイズ(文字数)
[in]fmt書式の指定
戻り値
VsnPrintf()の戻り値を返します。
説明
内部で以下のコードが実行されます。
va_list args;
va_start(args, fmt);
int rval = VsnPrintf(buf, size, fmt, args);
va_end(args);
return rval;

Cstring.h325 行目に定義があります。

template<size_t N>
nn::nlib::SnPrintf ( wchar_t(&)  buf[N],
const wchar_t *  fmt,
  ... 
)
inlinenoexcept

内部でVsnPrintf()を実行します。

テンプレート引数
Nバッファ・サイズ(文字数)
引数
[out]buf文字列の格納バッファ
[in]fmt書式の指定
戻り値
VsnPrintf()の戻り値を返します。
説明
内部で以下のコードが実行されます。
va_list args;
va_start(args, fmt);
int rval = VsnPrintf(buf, N, fmt, args);
va_end(args);
return rval;

Cstring.h334 行目に定義があります。

template<class T , size_t N>
nn::nlib::StrCat ( T(&)  dest[N],
const T *  src 
)
inlinenoexcept

内部でStrCat(&dest[0], N, src)を呼び出します。

テンプレート引数
Tchar, wchar_tのどれか
N追加先の文字列バッファのサイズ
引数
[in,out]destヌル文字で終わる追加先の文字列バッファ
[in]srcヌル文字で終わる追加先の文字列
戻り値
StrCat(&dest[0], N, src)の戻り値

Cstring.h168 行目に定義があります。

template<class T , size_t N>
nn::nlib::StrCpy ( T(&)  dest[N],
const T *  src 
)
inlinenoexcept

内部でStrCpy(&dest[0], N, src)を呼び出します。

テンプレート引数
Tchar,wchar_t,nlib_utf16_t,nlib_utf32_t のいずれか
Nコピー先のバッファ・サイズ
引数
[out]dest文字列のコピー先バッファ
[in]srcコピーされる文字列
戻り値
StrCpy(&dest[0], N, src)の戻り値

Cstring.h124 行目に定義があります。

template<class T , size_t N>
nn::nlib::StrNcat ( T(&)  dest[N],
const T *  src,
size_t  maxNumCopyWithoutNull 
)
inlinenoexcept

内部でStrNcat(&dest[0], N, src, maxNumCopyWithoutNull)を呼び出します。

テンプレート引数
Tchar, wchar_tのどれか
N追加先の文字列バッファのサイズ
引数
[in,out]destヌル文字で終わる追加先の文字列バッファ
[in]srcヌル文字で終わる追加先の文字列
[in]maxNumCopyWithoutNull追加する最大文字数(ヌル文字を除く)
戻り値
StrNcat(&dest[0], N, src, maxNumCopyWithoutNull)の戻り値

Cstring.h183 行目に定義があります。

template<class T , size_t N>
nn::nlib::StrNcpy ( T(&)  dest[N],
const T *  src,
size_t  maxNumCopyWithoutNull 
)
inlinenoexcept

内部でStrNcpy(&dest[0], N, src, maxNumCopyWithoutNull)を呼び出します。

テンプレート引数
Tchar,wchar_t,nlib_utf16_t,nlib_utf32_t のいずれか
Nコピー先のバッファ・サイズ
引数
[out]dest文字列のコピー先バッファ
[in]srcコピーされる文字列
[in]maxNumCopyWithoutNullコピーする最大文字数(ヌル文字を除く)
戻り値
StrNcpy(&dest[0], N, src, maxNumCopyWithoutNull)の戻り値

Cstring.h146 行目に定義があります。

nn::nlib::StrTo ( const char *  s,
int  base,
int32_t *  v 
)
noexcept

文字列sint32_t型の整数に変換します。

引数
[in]s変換対象となる文字列
[in]base基数
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL, sが空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtol()関数とは違い先頭に空白がある場合はエラー)
ERANGE値がint32_t型に入りきらない場合
説明
内部でstrtol()関数を呼び出しています。 strtol()関数を利用しないStrToFallback()も実装されていて、適切なstrtol()が実装されていない環境ではStrToFallback()が実行されます。
各種例:
exi/script/script.cpp, exi/simple1/simple1.cpp.
nn::nlib::StrTo ( const char *  s,
int  base,
int64_t *  v 
)
noexcept

文字列sint64_t型の整数に変換します。

引数
[in]s変換対象となる文字列
[in]base基数
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL, s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtoll()関数とは違い先頭に空白がある場合はエラー)
ERANGE値がint64_t型に入りきらない場合
説明
内部でstrtoll()関数を呼び出しています。 strtoll()関数を利用しないStrToFallback()も実装されていて、適切なstrtoll()が実装されていない環境ではStrToFallback()が実行されます。
nn::nlib::StrTo ( const char *  s,
int  base,
uint32_t *  v 
)
noexcept

文字列suint32_t型の整数に変換します。

引数
[in]s変換対象となる文字列
[in]base基数
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL, s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtol()関数とは違い先頭に空白がある場合はエラー)
ERANGE値がuint32_t型に入りきらない場合、先頭に'-'が見つかった場合
説明
内部でstrtoul()関数を呼び出しています。 strtoul()関数を利用しないStrToFallback()も実装されていて、適切なstrtoul()が実装されていない環境ではStrToFallback()が実行されます。
nn::nlib::StrTo ( const char *  s,
int  base,
uint64_t *  v 
)
noexcept

文字列suint64_t型の整数に変換します。

引数
[in]s変換対象となる文字列
[in]base基数
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL, s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtol()関数とは違い先頭に空白がある場合はエラー)
ERANGE値がuint64_t型に入りきらない場合、先頭に'-'が見つかった場合
説明
内部でstrtoull()関数を呼び出しています。 strtoull()関数を利用しないStrToFallback()も実装されていて、適切なstrtoull()が実装されていない環境ではStrToFallback()が実行されます。
nn::nlib::StrTo ( const char *  s,
double *  v 
)
noexcept

文字列sdouble型に変換します。

引数
[in]s変換対象となる文字列
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL, s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtod()関数とは違い先頭に空白がある場合はエラー)
ERANGEオーバーフロー又はアンダーフローの場合
説明
内部でstrtod()関数を呼び出しています。 strtod()関数を利用しないStrToFallback()も実装されていて、適切なstrtod()が実装されていない環境ではStrToFallback()が実行されます。
nn::nlib::StrTo ( const char *  s,
float *  v 
)
noexcept

文字列sをfloat型に変換します。

引数
[in]s変換対象となる文字列
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL, s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtod()関数とは違い先頭に空白がある場合はエラー)
ERANGEオーバーフロー又はアンダーフローの場合
説明
内部でstrtod()関数を呼び出しています。 strtod()関数を利用しないStrToFallback()も実装されていて、適切なstrtod()が実装されていない環境ではStrToFallback()が実行されます。
nn::nlib::StrTo ( const char *  s,
int  base,
int8_t *  v 
)
inlinenoexcept

文字列sint8_t型の整数に変換します。

引数
[in]s変換対象となる文字列
[in]base基数
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません。
EINVALs 又はvNULL, s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtol()関数とは違い先頭に空白がある場合はエラー)
ERANGE値がint8_t型に入りきらない場合
説明
内部でint32_t用のStrTo()関数を呼び出しています。

StrTo.h24 行目に定義があります。

nn::nlib::StrTo ( const char *  s,
int  base,
int16_t *  v 
)
inlinenoexcept

文字列sint16_t型の整数に変換します。

引数
[in]s変換対象となる文字列
[in]base基数
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL,s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtol()関数とは違い先頭に空白がある場合はエラー)
ERANGE値がint16_t型に入りきらない場合
説明
内部でint32_t用のStrTo()関数を呼び出しています。

StrTo.h34 行目に定義があります。

nn::nlib::StrTo ( const char *  s,
int  base,
uint8_t *  v 
)
inlinenoexcept

文字列suint8_t型の整数に変換します。

引数
[in]s変換対象となる文字列
[in]base基数
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL, s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtol()関数とは違い先頭に空白がある場合はエラー)
ERANGE値がuint8_t型に入りきらない場合、先頭に'-'が見つかった場合
説明
内部でuint32_t用のStrTo()関数を呼び出しています。

StrTo.h44 行目に定義があります。

nn::nlib::StrTo ( const char *  s,
int  base,
uint16_t *  v 
)
inlinenoexcept

文字列suint16_t型の整数に変換します。

引数
[in]s変換対象となる文字列
[in]base基数
[out]v変換された値が格納されるポインタ
戻り値
0エラーは発生していません
EINVALs 又はvNULL, s が空文字列の場合
EILSEQs に数値以外の文字が含まれた場合(strtol()関数とは違い先頭に空白がある場合はエラー)
ERANGE値がuint16_t型に入りきらない場合、先頭に'-'が見つかった場合
説明
内部でuint32_t用のStrTo()関数を呼び出しています。

StrTo.h54 行目に定義があります。

nn::nlib::ToLower ( int  c)
inlinenoexcept

std::tolower(static_cast<unsigned char>(c))を返します。

引数
[in]c変換する文字
戻り値
std::tolower()の戻り値
各種例:
testing/success/success.cpp.

Cstring.h214 行目に定義があります。

nn::nlib::ToUpper ( int  c)
inlinenoexcept

std::toupper(static_cast<unsigned char>(c))を返します。

引数
[in]c変換する文字
戻り値
std::toupper()の戻り値
各種例:
testing/success/success.cpp.

Cstring.h213 行目に定義があります。

nn::nlib::VsnPrintf ( char *  buf,
size_t  size,
const char *  fmt,
va_list  args 
)
inlinenoexcept

vsnprintf()を実行します。

引数
[out]buf文字列の格納バッファ
[in]sizeバッファ・サイズ(文字数)
[in]fmt書式の指定
[in]args引数リストへのポインタ
戻り値
成功した場合は、終端ヌル文字を含めない書き込まれた(はずだった)文字列長。失敗した場合は、負の値。
説明
buf の最後にはヌル文字が書き込まれます。 呼び出し後にユーザーがva_endを呼び出す必要があります。
内部でvsnprintfを実行しますが、エラー値等の動作の細部はプラットフォームにより異なることがあります。
以下にコーディング例を示します。
void MyFunc(char* buf, size_t size, const char* fmt, ...) {
va_start(args, fmt);
int n = VsnPrintf(buf, size, fmt, args);
va_end(args);
if (n < 0) {
// バッファ・サイズが足りない場合、正の数を返さずに負の値を返し、errnoにEAGAIN, ERANGE, EOVERFLOW等のエラーが設定される場合があることに注意してください。
// プラットフォームによりエラー値は異なります。
// また、負数となる値自体も異なりますので不等号で比較してください。
....
} else if (static_cast<size_t>(n) >= size) {
// 文字列は完全には書き込まれず、途中で丸められている。
....
} else {
// 正常に書き込まれた
....
}
}

Cstring.h252 行目に定義があります。

template<size_t N>
nn::nlib::VsnPrintf ( char(&)  buf[N],
const char *  fmt,
va_list  args 
)
inlinenoexcept

内部でVsnPrintf(buf, N, fmt, args)を実行します。

テンプレート引数
Nバッファ・サイズ(文字数)
引数
[out]buf文字列の格納バッファ
[in]fmt書式の指定
[in]args引数リストへのポインタ
戻り値
VsnPrintf(buf, N, fmt, args)の戻り値を返します。

Cstring.h262 行目に定義があります。

nn::nlib::VsnPrintf ( wchar_t *  buf,
size_t  size,
const wchar_t *  fmt,
va_list  args 
)
inlinenoexcept

vsnprintfを実行します。

引数
[out]buf文字列の格納バッファ
[in]sizeバッファ・サイズ(文字数)
[in]fmt書式の指定
[in]args引数リストへのポインタ
戻り値
成功した場合は、終端ヌル文字を含めない書き込んだ文字数。失敗した場合は、負の値。
説明
buf の最後にはヌル文字が書き込まれます。 呼び出し後にユーザーがva_endを呼び出す必要があります。
内部でvsnwprintfを実行しますが、エラー値等の動作の細部はプラットフォームにより異なることがあります。

Cstring.h311 行目に定義があります。

template<size_t N>
nn::nlib::VsnPrintf ( wchar_t(&)  buf[N],
const wchar_t *  fmt,
va_list  args 
)
inlinenoexcept

内部でVsnPrintf(buf, N, fmt, args)を実行します。

テンプレート引数
Nバッファ・サイズ(文字数)
引数
[out]buf文字列の格納バッファ
[in]fmt書式の指定
[in]args引数リストへのポインタ
戻り値
VsnPrintf(buf, N, fmt, args)の戻り値を返します。

Cstring.h321 行目に定義があります。

nn::nlib::VsnPrintfFallback ( char *  buf,
size_t  size,
const char *  fmt,
va_list  args 
)
noexcept

VsnPrintfのフォールバックです。ワイド文字版も実装されています。

引数
[out]buf文字列の格納バッファ
[in]sizeバッファ・サイズ(文字数)
[in]fmt書式の指定
[in]args引数リストへのポインタ
戻り値
成功した場合は、終端ヌル文字を含めない書き込んだ文字数。失敗した場合は、負の値。
説明
vsnprintfが存在しない環境か、それに類する環境においてVsnPrintfから呼び出されます。 この関数を直接呼び出すことも可能です。 現在のところ浮動小数点型については指数表現は行われません。
失敗した場合は、errnoにエラー値が設定されます(errnoが存在する環境の場合)。
フラグ文字については以下のものがサポートされています。
  • #, xとX変換の場合、数値が0でないときに文字列0x(又は0X)が前に追加されます。また、o変換の場合、数値が0でないときに文字0が前に追加されます。
  • 0, 変換された値の左側を空白ではなく0で埋めます。'-'が指定されている場合には無視されます。精度が指定されている場合には無視されます。
  • -, 左詰めにします。
  • ' ', 符号付き変換で生成された正の数字の前にスペースが1つ追加されます。
  • +, 符号付き変換された数値の前に、常に符号が置かれます。
フィールド幅については、10進数の文字列か、"*"を指定できます。"*"は次の引数をフィールド幅として指定するもので、int型の値である必要があります。
精度については、10進数の文字列か、"*"を指定できます。
長さ修飾子については、以下のものがサポートされています。
  • hh, 引数がchar又はunsigned charである場合
  • h, 引数がshort又はunsigned shortである場合
  • l, 引数がlong又はunsigned longである場合
  • ll, 引数がlong long又はunsigned long longである場合
  • z, 引数がsize_tである場合
変換指定子については、以下のものがサポートされています。
  • d, i, 符号付き整数
  • o, u, x, X, 符号なし整数
  • c, 文字(char型)
  • s, 文字列(const char*型), %lsの場合はconst wchar_t*型の文字列であるとされますが、下位8bitに対応する文字が出力されます。
  • p, ポインタアドレスを16進数で出力します。