Springhead
An open source physics engine for virtual reality, haptics and motion generation.
SprObject.h

実行時型情報を持つクラスの基本クラス [詳細]

#include "../SprBase.h"
#include <iosfwd>
#include <iostream>
#include <fstream>
SprObject.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

構成

class  XCastPtr< T >
 インタフェースクラスのキャスト [詳細]
 
class  FactoryBase
 Factory (オブジェクトを生成するクラス)の基本クラス [詳細]
 
class  IfInfo
 
インタフェースの型情報クラスの基本クラス.クラス名や継承関係を持っていて,DCAST()などが利用する.

1つのインタフェースクラスに付き1個のインスタンスができる. [詳細]

 
class  IfInfoImp< T >
 IfInfoの実装.1クラス1インスタンス [詳細]
 
struct  ObjectIf
 すべてのインタフェースクラスの基本クラス [詳細]
 
struct  ObjectIfs
 インタフェースクラスへのポインタの配列 [詳細]
 
struct  NamedObjectIf
 名前を持つオブジェクトのインタフェース [詳細]
 
struct  SceneObjectIf
 シーングラフを構成するノードのインタフェース [詳細]
 
struct  ObjectStatesIf
 オブジェクトツリーの状態をメモリ上に保存するためのクラス. SaveState(scene) のように呼び出すと,sceneの子孫全体の状態をメモリに保存する. セーブした後,LoadState(scene) を呼び出すと,sceneの状態を保存時の状態に戻す. セーブ後,シーンのオブジェクトの数や構造が変わってしまうと整合性がとれず, メモリを破壊してしまうので注意が必要. [詳細]
 
class  UTAccessBase
 対象の型にアクセスするためのクラス [詳細]
 
class  UTAccess< T >
 
struct  UTTypeDescIf
 
struct  UTTypeDescDbIf
 

ネームスペース

 Spr
 SpatialVector V(v, w) = [v; w]; SpatialTransform X(R, r) = [R^T, -R^T * r%; O, R^T]; ^Tは転置, は外積行列,Oは零行列. X(R, r) * V(v, w) = [R^T * (v + w % r); R^T * w];.
 

マクロ定義

#define DCAST(T, p)   DCastImp((T*)0, p)
 
#define XCAST(p)   CastToXCastPtr(p)
 
#define SPR_IFDEF_BASE(cls)
 インタフェースが持つべきメンバの宣言部. [詳細]
 
#define SPR_DESCDEF(cls)
 ディスクリプタが持つべきメンバの宣言部. [詳細]
 
#define SPR_DESCDEF_VIRTUAL(cls)
 
#define SPR_IF_HLANG_CAST(cls)   static cls##If* Cast(ObjectIf* o){return DCAST(cls##If, o);}
 
#define SPR_VIFDEF(cls)   SPR_IFDEF(cls)
 
#define SPR_IFDEF(cls)   SPR_IFDEF_BASE(cls) SPR_IF_HLANG_CAST(cls)
 
#define SPR_OVERRIDEMEMBERFUNCOF(cls, base)   SPR_OVERRIDEMEMBERFUNCOF_##cls(base)
 

関数

template<class TO , class FROM >
TO * DCastImp (TO *dmmy, FROM *p)
 同じ型へのキャスト 静的変換が可能な場合の If->Obj のキャスト
 
template<class TO , class FROM >
UTRef< TO > DCastImp (TO *dmmy, UTRef< FROM > p)
 
template<class T >
XCastPtr< T > & CastToXCastPtr (const T *ptr)
 
template<class T >
XCastPtr< T > & CastToXCastPtr (const UTRef< T > ptr)
 

マクロ定義

#define SPR_DESCDEF (   cls)
値:
public: \
const static IfInfo* GetIfInfo(){ \
return cls##If::GetIfInfoStatic(); \
} \
#define SPR_DESCDEF_VIRTUAL (   cls)
値:
public: \
const static IfInfo* GetIfInfo(){ \
return cls##If::GetIfInfoStatic(); \
} \
virtual const IfInfo* GetIfInfoVirtual(){ \
return cls##If::GetIfInfoStatic(); \
} \
#define SPR_IFDEF_BASE (   cls)
値:
public: \
const IfInfo* SPR_CDECL GetIfInfo() const ; \
static const IfInfo* SPR_CDECL GetIfInfoStatic(); \
static void* operator new(size_t) { \
return (void*)0; \
} \
static void operator delete(void* pv) { /* nothing to do */ } \
/* 相互キャスト */ \
XCastPtr<cls##If>& Cast() const{ \
return *(XCastPtr<cls##If>*)(void*)this; } \
/* キャストの実装 */ \
template <typename FROM> static cls##If* GetMe(FROM* f){ \
if ( f && f->GetObjectIf()->GetIfInfo()->Inherit( \
cls##If::GetIfInfoStatic()) ) \
return (cls##If*)f->GetObjectIf(); \
return NULL; \
} \
#define SPR_CDECL
__cdecl Microsoft compiler または Borland C++ compiler の場合は、__cdeclを指定
Definition: Env.h:47