Sds buildlist

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
struct sds_resbuf *sds_buildlist (int rtype, ...);


機能
アイテムのリンクリストを作成する。
引数
  • rtype : ペアデータ。最初の値は、データタイプ(以下の表参照)。2番目の値は、データ。
戻り値
リストのポインターを返す。それが有効でないばあいはNULLポインターを返す。
失敗は、不正なリストか、メモリーリークによることがありえる。


  • DXFグループコードが使用されるときは、グループ0 は結果タイプコード RTDXF0 で表現さなければならない。そうでなければ、sds_buildlist はリストが終了されたものとみなす。
  • ペアデータには4つの例外がある。
    • -3のコードは拡張データ。
    • rtlb (リスト開始)。
    • rtle (リスト終了)。
    • rtdote (ドット・ペア)。
  • 各ペアはデータタイプ(例えば RTREAL や RTSTR)とアイテムの値(たとえば99.94 や「アインシュタイン」)が続く。
  • 最後のドット・ペアは一組でなく、0(ゼロ)または RTNONE でなければならない。
  • リストを使用している場合は、 sds_relrb で使っているリストを解除しなければならない。


データタイプ
タイプ 意味
RTNONE 戻り値無し。
RTREAL 実数。
RTPOINT 2D点。(x,y 座標)
RTSHORT 短整数。
RTANG 角度。
RTSTR 文字列。
RTENAME エンティティ名。
RTPICKS 選択セット。
RTORINT 角度。
RT3DPOINT 3D点 (x,y,z 座標).
RTLONG 長整数。
RTVOID ブランクシンボル。
RTNIL Nil。
RTDXF0 DXF code 0.
RTT T (true) アトム.
RTRESBUF リザルトバッファリスト。

以下のタイプはペアにされない。

データタイプ
タイプ 意味
RTLB リスト開始。
RTLE リスト終了。
RTDOTE ドットペアリスト。
RTNONE リスト終了。


サンプル
struct sds_resbuf *listbuf = NULL;
listbuf=sds_buildlist(RTREAL,3.57,RTSHORT,12,RTSTR,"My Cat",RTNONE);
sds_retlist(listbuf); 
if(listbuf != NULL)
sds_relrb(listbuf);

結果:

(3.57 12 "My Cat")
int RetSuccessToLisp(const CString &msg)
{
  struct resbuf* buf = sds_buildlist(RTLB,RTT,RTDOTE,RTSTR,msg,RTLE,0);
  sds_retlist(buf);
  sds_relrb(buf);
  return 0;
}

結果:

(T . "成功")

関連事項