Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

単純なデータ型クラスのリファレンス

Caché では、リテラル・データ型に (文字列や数字などの単純なデータを含む) 一連の特殊なクラスを使用します。標準のオブジェクト・クラスとデータ型クラスの違いについては、"Caché オブジェクトの使用法" の "データ型" を参照してください。

Caché データ型はすべて、d_intd_string など、適切な C++ オブジェクトにマップされます。リテラル・タイプのインスタンスが NULL でない場合は、標準 C++ タイプに変換できます。d_intint に、d_stringstd::string または std::wstring に、d_timed_date、および d_timestamptm にそれぞれ変換されます。Caché データ型を表す C++ オブジェクトは、データ型クラスの CLIENTDATATYPE のキーワード値で決まります。

すべての単純な型は、以下を持ちます。

  • 変換演算子。これを使用すると、すべての基本タイプを C++ タイプとして使用することができます。例えば、d_intint に、d_doubledouble に変換できます。

  • value() メソッド (テンプレートに使用)

  • make_null() メソッドおよび is_null() メソッド

  • 出力ストリーム用のオーバーロードされた "<<" 演算子

  • オーバーロードされた "=" 演算子

以下のデータ型がサポートされています。

  • 数値 — d_bool、d_int、d_double、d_numeric、d_decimal、および d_currency。

  • バイナリd_binary、d_longbinary、d_oid、d_status、d_string、および d_list

  • ワイド文字列 — d_wstring、d_id、d_longwstring、および d_longstring。

  • 日時 — d_date、d_timestamp、および d_timestamp。

数値クラス

これらは単純な数字です。

InterSystems::d_int クラス

d_int は int に変換でき、int を割り当てることができます。これは、その他のオーバーロードされた演算子を持ちません。オブジェクトに変更がある場合、int 値を取得して、変更された値をオブジェクトに割り当てるというのが通常の使用法です。以下はその例です。

   d_int t = 2;
   d_int q = int(t) + 2;

通常、この場合と同様に、変換は暗黙なので、2 行目は単に以下のようになります。

   d_int q = t + 2;

必要に応じて、さまざまなケースがあります。

バイナリ・クラス

これらは可変長バイナリ・データを含むクラスです。

InterSystems::d_binary クラス

d_binary は、バイナリ・データを保持します。d_oid は、完全なオブジェクト ID を表す d_binary の typedef です。

メンバ・リスト

  • d_binary constructors

    • パラメータはありません。

         d_binary();
      
    • NULL で終了する文字列を基に実行します。

         d_binary(const char* cstr);
      
    • std::string を基に実行します。

         d_binary(const std::string& s);
      
    • cstr で始まりサイズが sz の文字列を基に実行します。

         d_binary(const char* cstr, int sz);
      
  • std::string() operator — データを std::string として返します。

       operator std::string() const;
    
  • Comparison operators — 別の d_binary と比較します。

       bool operator==(const d_binary& t);
       bool operator!=(const d_binary& t);
    
  • append_bin() — バイナリ・データを追加します。

       void append_bin(const char* buf, byte_size_t size);
    
  • assign() — バイナリ・データを割り当てます。

       void assign(const char* buf, byte_size_t size);
    
  • get_buf() — バイナリ・バッファのアドレスを取得します。

       const char* get_buf() const;
    
  • get_size() — バイナリ・バッファのサイズを取得します。

       long get_size() const;
    

InterSystems::d_status クラス

d_status は、%Library.StatusOpens in a new tab をカプセル化します。これは、サーバの状態を変換するためにのみ使用します。

メンバ・リスト

  • operator int() — エラー・コードの値を持つ int に変換します。

       operator int() const;
    
  • get_code() — エラー・コードを取得します (エラーがない場合は 0 を返します)。

       int get_code() const;
    
  • get_msg() — エラー・メッセージを取得します。

       const d_string& get_msg() const;
    
  • get_from_srv() — サーバ上の状態を分析し、可能であればそのメッセージを言語 lang に変換します (システム・エラーの場合)。

       void get_from_srv(Database* db, const char* lang = "", Db_err* err = 0);
    
  • throw_err() — エラー・コードおよびメッセージと共に、Db_err をスローします。

       void throw_err() const;
    

InterSystems::d_string クラス

d_string は、文字列データを保持します。d_string は、必要に応じて自動的にデータを変換し、変換メソッドを提供しますが、d_binary はこれらを実行しません。

メンバ・リスト

  • d_string constructors

    • パラメータはありません。

         d_string();
      
      
    • NULL で終了する文字列、または NULL で終了するワイド文字列を基に実行します。

         d_string(const char* cstr);
         d_string(const wchar_t* cstr);
      
    • std::string または std::wstring を基に実行します。

         d_string(const std::string& s);
         d_string(const std::wstring& s);
      
    • cstr で始まり、サイズが sz の文字列またはワイド文字列を基に実行します。

         d_string(const char* cstr, int sz);
         d_string(const wchar_t* cstr, int sz);
      
  • is_unicode() — 文字列が Unicode 形式であるかどうかを調べます。

       bool is_unicode() const;
    
  • to_mb() — マルチバイトに変換します。

    • 容量が cap のバッファ buf に格納し、buf に配置されたバイト数を返します。

         byte_size_t to_mb(char* buf, char_size_t cap) const;
      
    • 適切なマルチバイトに変換します。

         void to_mb();
      
  • to_uni() — Unicode に変換します。

    • 結果を容量が cap のバッファ buf に格納し、buf に配置された文字数を返します。

         char_size_t to_uni(wchar_t* buf, char_size_t cap) const;
      
    • 適切な Unicode に変換します。

         void to_uni();
      
  • std::string() operatorstd::string または std::wstring に変換します。

       operator std::string() const;
       operator std::wstring() const;
    
  • Comparison operators — 別の d_string と比較します。

       bool operator==(const d_string& val) const;
       bool operator!=(const d_string& val) const;
       bool operator<(const d_string& val) const;
    
  • assign()

    • NULL で終了する文字列、または NULL で終了するワイド文字列を基に実行します。

         void assign(const char* buf);
         void assign(const wchar_t* buf);
      
    • cstr で始まり、サイズが sz の文字列またはワイド文字列を基に実行します。

         void assign(const char* buf, char_size_t size);
         void assign(const wchar_t* buf, char_size_t size);
      

InterSystems::d_list クラス

d_list オブジェクトは、Caché の $list 構造の C++ 実装です。d_list クラスには、その標準メソッドに加えて、d_list オブジェクトにコピーすることなく $list を含むバッファからデータを抽出できる一連のスタティック・メソッドがあります。

d_list メソッド

d_list オブジェクトは、本質的にはフォワード反復子ですが、現在の位置に要素を挿入、削除、置換するメソッドや、全体として $list と連動する他のメソッドも提供します。d_list の位置は 0 ベースです。$list は連続メモリに格納されているため、$list 要素を変更する処理を実行すると、コストの高い、ダイナミック・メモリの配置転換やコピーが発生します。

メンバ・リスト

  • d_list()

       d_list(const char* buf, byte_size_t size)
    
  • append_elem()

       void append_elem(__int64 val); 
       void append_elem(double val); 
       void append_elem(const d_string& val); 
       void append_elem(const d_binary& val); 
       void append_elem(const wchar_t* p, char_size_t size); 
       void append_elem(const char* p, char_size_t size);
    
  • append_elem_null()

       void append_elem_null();
    
  • at_end()

       bool at_end() const;
    
  • clear() — すべての要素を削除します。

       void clear();
    
  • count() — 要素数をカウントします。

       int count();
    
  • del_elem() — 現在の要素を削除します。

       void del_elem();
    
  • elem_null()

       void ins_elem_null();
    
  • get_elem()

       void get_elem(__int64* val) const; 
       void get_elem(double* val) const; 
       void get_elem(d_string& val) const; 
       void get_elem(d_binary& val) const; 
       void get_elem(bool* is_uni, const char** p_buf, 
          byte_size_t* p_size) const;
    
  • get_elem_idx() — 現在の要素のインデックスを取得します。

       int get_elem_idx() const;
    
  • get_elem_type()

       char get_elem_type() const;
    
  • ins_elem()

       void ins_elem(__int64 val); 
       void ins_elem(double val); 
       void ins_elem(const d_string& val); 
       void ins_elem(const d_binary& val); 
       void ins_elem(const wchar_t* p, char_size_t size); 
       void ins_elem(const char* p, char_size_t size);
    
  • is_elem_double()

       bool is_elem_double() const;
    
  • is_elem_int()

       bool is_elem_int() const;
    
  • is_elem_null()

       bool is_elem_null() const;
    
  • is_elem_str()

       bool is_elem_str() const;
    
  • move_to() — 現在の位置を idx に変更します (0 ベース)。

       void move_to(int idx) const;
    
  • move_to_front() — move_to(0) と同じですが、最適化されています。

       void move_to_front() const;
    
  • next() — 動作は move_to() と似ていますが、次の要素に移動する処理に最適化されています。

       void next() const;
    
  • reset() — バッファをリセットします。

       void reset(const char* buf, byte_size_t size);
    
  • set_elem()

       void set_elem(__int64 val); 
       void set_elem(double val); 
       void set_elem(const d_string& val); 
       void set_elem(const d_binary& val); 
       void set_elem(const wchar_t* p, char_size_t size); 
       void set_elem(const char* p, char_size_t size);
    
  • set_elem_null()

       void set_elem_null();
    

d_list スタティック・メンバ関数

スタティック・メンバ関数を使用すると、d_list オブジェクトにコピーすることなく、$list であるバッファからデータを抽出できます。インタフェースは、バッファで指定された $list 要素を処理します。次の要素は、バッファ + d_list::get_elem_size (buffer) から開始します。

メンバ・リスト

  • get_elem() — 要素を取得します。

    • _int64doubled_string、または d_binary として要素を取得します。

         static void get_elem(const char* buf, __int64* val);
         static void get_elem(const char* buf, double* val);
         static void get_elem(const char* buf, d_string& val);
         static void get_elem(const char* buf, d_binary& val);
      
    • 文字列および文字列サイズへのポインタとして要素を取得します。また、Unicode と 1 バイト文字のどちらであるかを調べます。

         static void get_elem(const char* buf, bool* is_uni, 
            const char** p_buf, byte_size_t* p_size);
      
  • get_elem_size() — 要素サイズを取得します。

       static byte_size_t get_elem_size(const char* buf);
    
  • is_elem_double() — 要素が double として格納されているかどうかを調べます。

       static bool is_elem_double(const char* buf);
    
  • is_elem_int() — 要素が int として格納されているかどうかを調べます。

       static bool is_elem_int(const char* buf);
    
  • is_elem_null() — 要素が NULL かどうかを調べます。

       static bool is_elem_null(const char* buf);
    
  • is_elem_str() — 要素が string として格納されているかどうかを調べます。

       static bool is_elem_str(const char* buf);
    

日時クラス

これらのタイプのオブジェクトは、関係のない値をすべて -1 に設定して tm 構造オブジェクトに変換することができます。tm オブジェクトを割り当てることもできます。tm 構造に関係のない値は無視されます。これらのクラスのインタフェースは、コンストラクタと演算子の割り当てが異なるだけです。

InterSystems::d_time クラス

メンバ・リスト

  • d_time

    • tm を基に実行します。

         d_time(const tm& ts);
      
    • 時間用の ODBC 構造を基に実行します。

         d_time(const TIME_STRUCT& t);
      
    • 時間、分、秒を基に実行します。

         d_time(int h, int m, int s);
      
    • 時間用の ODBC 構造を基に実行します。

         d_time& operator=(const TIME_STRUCT& t);
      

InterSystems::d_date クラス

メンバ・リスト

  • d_date

    • tm を基に実行します。

         d_date(const tm& ts);
      
    • 日付用の ODBC 構造を基に実行します。

         d_date(const DATE_STRUCT& d);
      
    • 年、月、日を基に実行します。

         d_date(int y, int m, int d);
      
    • 日付用の ODBC 構造を基に実行します。

         d_date& operator=(const DATE_STRUCT& d);
      

InterSystems::d_timestamp クラス

メンバ・リスト

  • d_timestamp

    • tm を基に実行します。

         d_timestamp(const tm& ts);
      
    • タイムスタンプ用の ODBC 構造を基に実行します。

         d_timestamp(const TIMESTAMP_STRUCT& ts);
      
FeedbackOpens in a new tab