00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
#ifndef DIME_BLOCK_H
00031
#define DIME_BLOCK_H
00032
00033
#include <dime/Basic.h>
00034
#include <dime/entities/Entity.h>
00035
#include <dime/util/Linear.h>
00036
00037
class dimeInput;
00038
class dimeMemHandler;
00039
class dimeModel;
00040
class dimeOutput;
00041
00042 class DIME_DLL_API dimeBlock :
public dimeEntity
00043 {
00044
friend class dimeBlocksSection;
00045
friend class dimeEntitiesSection;
00046
friend class dimeInsert;
00047
friend class dimeModel;
00048
00049
public:
00050 dimeBlock(
dimeMemHandler *
const memhandler);
00051
virtual ~dimeBlock();
00052
00053
const dimeVec3f &getBasePoint()
const;
00054
void setBasePoint(
const dimeVec3f &v);
00055
int getNumEntities()
const;
00056
dimeEntity *getEntity(
const int idx);
00057
void insertEntity(
dimeEntity *
const entity,
const int idx = -1);
00058
void removeEntity(
const int idx,
const bool deleteIt =
true);
00059
void fitEntities();
00060
00061
const char *getName()
const;
00062
void setName(
const char *
const name);
00063
00064
dimeEntity *copy(
dimeModel *
const model)
const;
00065
virtual bool getRecord(
const int groupcode,
00066
dimeParam ¶m,
00067
const int index = 0)
const;
00068
virtual const char *
getEntityName()
const;
00069
00070
virtual bool read(
dimeInput *
const in);
00071
virtual bool write(
dimeOutput *
const out);
00072
virtual int typeId()
const;
00073
virtual int countRecords()
const;
00074
00075
protected:
00076
virtual bool handleRecord(
const int groupcode,
00077
const dimeParam & param,
00078
dimeMemHandler *
const memhandler);
00079
00080
virtual void fixReferences(
dimeModel *
const model);
00081
virtual bool traverse(
const dimeState *
const state,
00082 dimeCallback callback,
00083
void *userdata);
00084
00085
private:
00086 int16 flags;
00087
const char *name;
00088
dimeVec3f basePoint;
00089 dimeArray <dimeEntity*> entities;
00090
dimeEntity *endblock;
00091
dimeMemHandler *memHandler;
00092
00093 };
00094
00095
inline const dimeVec3f &
00096 dimeBlock::getBasePoint()
const
00097
{
00098
return this->basePoint;
00099 }
00100
00101
inline void
00102 dimeBlock::setBasePoint(
const dimeVec3f &v)
00103 {
00104 this->basePoint = v;
00105 }
00106
00107
inline int
00108 dimeBlock::getNumEntities()
const
00109
{
00110
return this->entities.
count();
00111 }
00112
00113
inline dimeEntity *
00114 dimeBlock::getEntity(
const int idx)
00115 {
00116 assert(idx >= 0 && idx < this->entities.
count());
00117
return this->entities[idx];
00118 }
00119
00120
inline const char *
00121 dimeBlock::getName()
const
00122
{
00123
return this->name;
00124 }
00125
00126
inline void
00127 dimeBlock::setName(
const char *
const name)
00128 {
00129 this->name = name;
00130 }
00131
00132
#endif // ! DIME_BLOCK_H
00133