8#include "base/src/spinlock.h"
38 class Lock :
public std::lock_guard<LockType> {
40 inline Lock(
const IThing *t) : std::lock_guard<LockType>(t->thingLock_) { }
55 explicit Handle(uint64 h) : val_(h) { }
56 bool operator<(
const Handle &h)
const {
return val_<h.val_; }
57 bool operator==(
const Handle &h)
const {
return val_==h.val_; }
58 bool valid()
const {
return val_ ? true :
false; }
109 virtual void setID(uint64)=0;
173 virtual uint64 getContainerOrder()
const=0;
201 virtual void clearGroup()=0;
209 virtual void clearExtra()=0;
222 virtual void save(Archive2 &)
const=0;
223 virtual bool restore(Archive2 &,uint64)=0;
224 virtual void remap(Archive2 &)=0;
225 virtual Handle getRemapHandle(
bool allowCreate,uint32 thread)
const=0;
242 template <
class Dest,
class Src>
inline const Dest*
convert_getcast(
const Src* src) {
return src ? src->getIThing()->template convert<Dest>() : 0; }
244 template <
class Dest,
class Src>
inline Dest*
convert_getcast(Src* src) {
return src ? src->getIThing()->template convert<Dest>() : 0; }
246 inline int64 pointCompare(
const IThing *p1,
const IThing *p2) {
247 int64 i1 = p1 ? p1->getType() : 0;
248 int64 i2 = p2 ? p2->getType() : 0;
250 i1 = p1 ? p1->getID() : 0;
251 i2 = p2 ? p2->getID() : 0;
An array class that attempts to minimize unnecessary heap access.
Definition farray.h:25
Class for storing an "orientation", or a direction in 2D or 3D space.
Definition orientation.h:99
Definition iparameter.h:13
Interface for containers of IThings.
Definition icontainer.h:21
Interface to a group object.
Definition igroup.h:9
Base class for items that will be stored in containers.
Definition ithing.h:30
virtual DVect3 getLocation() const =0
virtual bool getIsSet() const =0
virtual DVect3 getClosest(const DVect3 &pos) const =0
virtual DVect3 getVelocityThing() const =0
Returns the instantaneous velocity for things supporting velocity.
virtual void setExtra(uint32 index, const fish::IParameter &p)=0
virtual bool setSelected(bool b)=0
Sets the selected flag at index.
virtual DVect3 getDisplacementThing() const =0
Returns the accumulated displacement for things supporting displacement.
virtual void getAssociatedThings(const TType &type, FArray< const IThing * > *ret) const =0
Returns a list of things associated with this thing with TType type.
virtual bool addGroup(const IGroupID &id)=0
static const TType type_
The base type of an IThing.
Definition ithing.h:63
virtual DVect3 getNormal() const =0
Returns a normal vector representing the orientation of the object, if this is appropriate....
virtual IString getTypeName() const =0
Returns a description of the type of the class.
virtual bool isOnSurface() const =0
Returns TRUE if this is a "Surface".
virtual void resetAssociatedThings(FArray< const IThing * > *ret)=0
Resets any data used with the associated things.
virtual bool getHidden() const =0
Returns the Hide flag at index.
virtual uint32 isInGroup(const FArray< IGroupID > &ids, TType type=0, bool only=false) const =0
virtual IString getName() const =0
Returns a name string - the exact meaning of which is defined by the container and the implementing c...
static const uint32 maxExtraIndex_
Maximum number of extra FISH variables per object.
Definition ithing.h:67
virtual IThing * getIThing()=0
Return the IThing interface.
virtual DExtent3 getExtent() const =0
virtual TType getGeneralType() const =0
virtual const IThing * getIThing() const =0
Return the IThing interface.
virtual std::vector< uint32 > getExtraIndices() const =0
Returns the number of extra FISH extra variables for this object.
virtual bool isWithinOrientation(const Orientation3 &orientation, const DVect2 &tol) const =0
virtual uint64 getID() const =0
Returns a value - the exact meaning of which is defined by the container and the implementing class.
T * convert()
Definition ithing.h:105
const T * convert() const
Definition ithing.h:104
virtual IContainer * getContainer()=0
virtual const IGroup * getGroup(const ISlotID &slot) const =0
virtual void * convertToTypeNC(const TType &id)=0
virtual bool getSelected() const =0
Returns the selected flag at index.
virtual double getVolume() const =0
Returns the volume if this is appropraite. 0 is returned otherwise.
virtual const IContainer * getContainer() const =0
virtual bool removeGroup(const IGroupID &id)=0
virtual TType getType() const =0
static const uint32 maxGroupSlot_
Maximum number of group slots per object.
Definition ithing.h:65
virtual const fish::IParameter * getExtra(uint32 index) const =0
virtual const IThing * getSet() const =0
virtual uint32 getGroupList(FArray< IGroupID > *list) const =0
Return all groups and all slots assigned to the object in a list.
virtual const void * convertToType(const TType &id) const =0
virtual void save(Archive2 &) const =0
Archives the Thing to a file (if appropriate).
virtual uint64 getCollectionID() const =0
virtual bool setHidden(bool b)=0
Sets the hidden flag at index.
virtual void copyGroups(const IThing *t)=0
Copies group data from one IThing to this, all original group data is lost.
virtual IString getGroupName(const ISlotID &slot=ISlotID()) const =0
An array class that attempts to minimize unnecessary heap access.
uint32 TType
class type indicator
Definition basedef.h:46
namespace Itasca
Definition basememory.cpp:10
const Dest * convert_cast(const IThing *src)
A cast operator (use similar to dynamic_cast) for types derived from IThing (const).
Definition ithing.h:237
const Dest * convert_getcast(const Src *src)
A cast operator for Interface types that define getThing() (const).
Definition ithing.h:242
namespace itasca
Definition igenerictet.h:11