Document of c-modernization-kit (calc dotnet wrapper) 1.0.0
Loading...
Searching...
No Matches
CalcLib Directory Reference
Directory dependency graph for CalcLib:

Directories

 
Internal

Files

 
CalcException.cs
 計算エラー用のカスタム例外。
 
CalcKind.cs
 計算演算種別の列挙型。
 
CalcLibrary.cs
 calc ライブラリラッパーのメイン公開 API。
 
CalcResult.cs
 計算結果クラス。

Detailed Description

CalcLib は、ネイティブ calc ライブラリ (Linux では libcalc.so、Windows では libcalc.dll) 用の .NET Standard 2.0 ラッパーです。基本的な整数演算を実行するための、クリーンで慣用的な C# API を提供します。

機能

要件

ビルド要件

ランタイム要件

ビルド

# ライブラリをビルド
cd prod/calc.net/libsrc/CalcLib
make build
# ビルド成果物をクリーン
make clean
# NuGet パッケージを復元
make restore

コンパイルされたライブラリは prod/calc.net/lib/CalcLib.dll に配置されます。

使用方法

基本的な使用方法

using CalcLib;
// 結果オブジェクトを使用 (エラー処理に推奨)
var result = CalcLibrary.Add(10, 20);
if (result.IsSuccess)
{
Console.WriteLine($"Result: {result.Value}"); // 出力: 30
}
else
{
Console.WriteLine($"Error: {result.ErrorCode}");
}
ネイティブ calc ライブラリを使用して基本的な整数演算を実行するための メソッドを提供します。
static CalcResult Add(int a, int b)
2 つの整数を加算します。

例外を使用

using CalcLib;
try
{
int result = CalcLibrary.CalculateOrThrow(CalcKind.Divide, 10, 0);
}
catch (CalcException ex)
{
Console.WriteLine($"Calculation failed: {ex.Message}");
Console.WriteLine($"Error code: {ex.ErrorCode}");
}
計算演算が失敗した際にスローされる例外。
static int CalculateOrThrow(CalcKind kind, int a, int b)
計算を実行し、失敗した場合は例外をスローします。
CalcKind
計算演算の種別を表します。
Definition CalcKind.cs:24

便利メソッド

using CalcLib;
var addResult = CalcLibrary.Add(5, 3); // 8
var subResult = CalcLibrary.Subtract(10, 4); // 6
var mulResult = CalcLibrary.Multiply(6, 7); // 42
var divResult = CalcLibrary.Divide(20, 5); // 4
static CalcResult Divide(int a, int b)
第一の整数を第二の整数で除算します。
static CalcResult Multiply(int a, int b)
2 つの整数を乗算します。
static CalcResult Subtract(int a, int b)
第一の整数から第二の整数を減算します。

API リファレンス

CalcLibrary クラス

すべての計算操作のメインエントリポイント。

メソッド

CalcKind 列挙型

計算操作の種別を指定。

CalcResult クラス

計算操作の結果を表す。

プロパティ

CalcException クラス

計算が失敗したときにスローされる例外。

プロパティ

エラー処理

ネイティブ calc ライブラリは以下のエラーコードを返します。

一般的な失敗シナリオ:

プラットフォーム固有の注意事項

Windows

Linux

スレッドセーフティ

このラッパーのスレッドセーフティは、基盤となるネイティブライブラリに依存します。現在の実装はスレッドセーフティについて何も仮定せず、同期を追加しません。ネイティブライブラリがスレッドセーフでない場合は、CalcLibrary メソッドの呼び出しの周りに適切なロックを追加する必要があります。

既知の制限事項

  1. 整数オーバーフロー - オーバーフローチェックは実行されません。オーバーフロー時に結果が折り返される可能性があります。
  2. 整数除算のみ - 除算は整数除算です (ゼロに向かって切り捨て)。
  3. 限定的なエラー情報 - ネイティブライブラリは成功/失敗のみを返し、詳細なエラーメッセージはありません。

結果オブジェクトによるエラー処理

var result = CalcLibrary.Divide(10, 0);
if (!result.IsSuccess)
{
Console.WriteLine("Division by zero detected!");
Console.WriteLine($"Error code: {result.ErrorCode}");
}

すべての操作を使用

var operations = new[]
{
(CalcKind.Add, 10, 20, "10 + 20"),
(CalcKind.Subtract, 30, 15, "30 - 15"),
(CalcKind.Multiply, 5, 6, "5 * 6"),
(CalcKind.Divide, 100, 4, "100 / 4")
};
foreach (var (kind, a, b, description) in operations)
{
var result = CalcLibrary.Calculate(kind, a, b);
if (result.IsSuccess)
{
Console.WriteLine($"{description} = {result.Value}");
}
}
static CalcResult Calculate(CalcKind kind, int a, int b)
指定された演算種別に基づいて計算を実行します。