2 #pragma warning(disable : 4251) 14 #include <unordered_map> 16 #define USE_PROPERTYMAP 18 static const char* PropertyName =
"Property";
25 class Draw::DrawStyle;
26 class Draw::Arrowheads;
28 class Draw::Texture2Transform;
53 #define MUTABLE_CONTAINER(_class_) \ 55 static bool isMutableStatic() { return true; } \ 58 virtual bool isMutable() const { return true; } 60 #define IMMUTABLE_CONTAINER(_class_) \ 62 friend class Core::PropertyBundle<_class_>; \ 65 static bool isMutableStatic() { return false; } \ 68 virtual bool isMutable() const { return false; } \ 71 Core::PropertyBundle<_class_> getPropertyBundle() const \ 73 Core::PropertyBundle<_class_> dsBundle; \ 74 dsBundle.setPropertyValues(this); \ 94 void addField(
void* base,
char* fieldname,
void* fieldptr);
96 bool fieldsAdded =
false;
110 friend class ObjectExecutor;
111 friend class ::App::ElementTool;
142 void removeAllProperties();
149 template <
typename T>
156 return static_cast<T*>(p);
166 std::vector<std::pair<Core::Property*, std::string> > getPropertiesAndNameByType(
Base::Type type)
const;
167 std::vector<Core::Property*> getPropertiesByType(
Base::Type type)
const;
168 std::vector<Core::Property*> getPropertiesByTypes(
const std::vector<Base::Type>& type)
const;
170 bool setPropertyFromVariant(
const std::string&
name,
const Core::Variant& value);
172 bool setProperty(
const std::string&
name,
double value);
173 bool setProperty(
const std::string&
name,
int value);
174 bool setProperty(
const std::string&
name,
const Geom::Vec& value);
175 bool setProperty(
const std::string&
name,
const std::list<Geom::Vec>& value);
176 bool setProperty(
const std::string&
name,
const Geom::Trsf& value);
177 bool setProperty(
const std::string&
name,
const std::string& value);
178 bool setProperty(
const std::string&
name,
const char* value);
180 bool setProperty(
const std::string&
name,
const Geom::Pnt& value);
182 bool setProperty(
const std::string&
name,
const std::vector<Geom::Pnt>& value);
183 bool setProperty(
const std::string&
name,
const std::vector<Geom::Pnt2d>& value);
186 bool setProperty(
const std::string&
name,
const MD5& value);
187 bool setProperty(
const std::string&
name,
bool value);
191 bool setProperty(
const std::string&
name,
const boost::unordered_set<Core::DocObject*>& value);
192 bool setProperty(
const std::string&
name,
const std::list<Core::DocObject*>& value);
193 bool setProperty(
const std::string&
name,
const std::vector<int>& value);
194 bool setProperty(
const std::string&
name,
const QFont& value);
195 bool setProperty(
const std::string&
name,
const Draw::DrawStyle& value);
196 bool setProperty(
const std::string&
name,
const Draw::Arrowheads& value);
197 bool setProperty(
const std::string&
name,
const Geom::Dir& value);
200 bool setProperty(
const std::string&
name,
const Geom::Ax1& value);
201 bool setProperty(
const std::string&
name,
const Geom::Ax2& value);
203 bool setProperty(
const std::string&
name,
const Draw::Texture2Transform& value);
204 bool setProperty(
const std::string&
name,
const std::list<std::list<Geom::Pnt> >& value);
205 bool setProperty(
const std::string&
name,
const std::list<double>& value);
219 virtual void onDeleted();
221 virtual void onNew();
228 bool enableNotify(
const bool enable);
230 bool isNotifyEnabled(
void)
const;
236 bool isDeleted()
const;
238 bool isStatusDeleted()
const;
240 bool isMarkedForDelete()
const;
242 bool isMarkedForDeleteFinal()
const;
244 bool isDeletedFinal()
const;
248 bool isUpdated()
const;
250 bool isValid()
const;
252 bool hasErrors()
const;
254 void setData(
const std::string& key,
void* data);
256 void* getData(
const std::string& key,
bool* ok =
nullptr)
const;
258 void removeData(
const std::string& key);
264 template <
typename T>
276 virtual void ensureIntegrity();
281 void integrityMaintained();
283 void integrityLost();
285 bool checkIntegrity();
299 #ifndef LXAPI // INTERFACES BELOW ARE -NOT- PART OF THE LEXOCAD API 305 std::map<std::string, Core::Variant> getKeyValueMap()
const;
307 bool setPropertyFromKeyValue(
const std::string& propertyName,
const std::string& key,
const Core::Variant& value);
309 std::set<Core::Property*> getUpdatedProperties()
const;
322 void setMarkedForDelete();
324 void setMarkedForDeleteFinal();
326 void setDeleteFinal();
328 unsigned int getPropertyChangeStatus()
const;
330 CheckStatus getCheckStatus()
const;
332 void setCheckStatus(CheckStatus status);
334 void setAllPropertiesValid();
338 std::vector<Core::Property*> getPropertiesOrdered()
const;
341 void __setCheckIsNew__();
342 virtual bool check_lx(
char* f,
char* n);
346 bool isRestored =
false;
348 #ifdef USE_PROPERTYMAP 354 void saveLastValidPropertyMap();
368 MarkedForDeleteFinal,
374 virtual void setStatus(Status status);
375 Status getStatus()
const;
392 void getPropertyMapSetNotify(
bool v);
394 std::unordered_map<std::string, Core::Property*> _userPropertyMap;
395 #ifdef USE_PROPERTYMAP 396 std::unordered_map<std::string, PropertyValue> _lastValidPropertyMap;
398 std::unordered_map<std::string, void*> _data;
399 Status _status = Status::New;
406 bool _integrity =
true;
unsigned int _changedProperties
Definition: PropertyContainer.h:385
T * getPropertyByName(const std::string &name) const
Returns the property of type T with name 'name'. Returns 'nullptr' on failure.
Definition: PropertyContainer.h:150
#define CORE_EXPORT
Definition: core_defines2.h:10
Defines a non-persistent 3D Cartesian point.
Definition: Pnt.h:42
Definition: PropertyContainer.h:89
Definition: PropertyContainer.h:101
Core::PropertyText name
Definition: CoreDocument.h:143
CheckStatus
Definition: PropertyContainer.h:113
std::shared_ptr< Geom::BrepData > pBrepData
Definition: BrepData.h:34
A Utf-16 (windows) or ucs4 (unix) encoded string class.
Definition: String.h:29
Definition: Persistance.h:20
LX_CORE_EXPORT Version & version
Definition: CoreDocument.h:197
T getValue(bool *ok) const
Definition: Variant.h:320
void restoreProperty(Core::Property *property, const Base::String &name, Base::AbstractXMLReader &reader, Base::PersistanceVersion &version) override
Persistance class and root of the type system.
Definition: Persistance.h:27
std::unordered_map< std::string, Core::Property * > PropertyMap
Definition: PropertyValue.h:28
Definition: AbstractXMLReader.h:10
std::unordered_map< std::string, ptrdiff_t > m_fieldmap
Definition: PropertyContainer.h:95
std::unordered_map< std::string, PropertyValue > PropertyValueMap
Definition: PropertyValue.h:29
PostInitClass(Core::PropertyContainer *p)
Definition: PropertyContainer.h:415
bool isDerivedFrom() const
Definition: Base.h:114
Defines a non-persistent vector in 3D space.
Definition: Vec.h:45
#define MUTABLE_CONTAINER(_class_)
Definition: PropertyContainer.h:53
T getPropertyValueByName(const std::string &propertyName, bool *ok=0) const
Returns the property value T with this name. If ok=true T holds a valid value.
Definition: PropertyContainer.h:265
Definition: PropertyContainer.h:412
FieldData(const Core::FieldData *)
Definition: PropertyContainer.h:42
Definition: PropertyContainer.h:39
Definition: Property.h:81
Status
Definition: PropertyContainer.h:362
Core::PropertyContainer * container
Definition: PropertyContainer.h:417
Core::PropertyUser is a class that can hold properties defined by the user. Its value member is a Cor...
Definition: PropertyUser.h:17
Definition: AbstractXMLReader.h:8
virtual Core::Variant getVariant(void) const =0
Defines a non-persistent 2D cartesian point.
Definition: Pnt2d.h:33
Definition: DocObject.h:28