VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
simComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 
15 
16 #include <vlutil/vlString.h>
17 #include <vlutil/vlList.h>
18 #include "vrfutil/readerWriter.h"
21 #include <vlutil/vlHashlist.h>
24 #include <list>
25 
26 class DtSimManager;
27 class DtVrfObject;
29 class DtInputPort;
30 class DtOutputPort;
31 class DtInputPortGroup;
32 class DtOutputPortGroup;
33 class DtAttachedTerrain;
34 class DtPhysicalWorld;
35 class Coordinate_System;
36 class DtComponentSystem;
39 class DtCriticalSection;
41 
72  , public DtObjectDebugger<DtSimComponent>
73 {
74 public:
75 
77  {
78  public:
79  explicit ComponentCriticalSection(
82  };
83 
84  static DtSimComponent* MarkThreadSafe(DtSimComponent*);
85 
93  DtSimComponent(const DtString& name,
94  DtVrfObject* owner,
95  DtSimManager* simManager,
96  DtComponentDescriptor* desc = 0,
97  DtReaderWriterRegistry* parentRegistry = 0);
98 
100  virtual ~DtSimComponent();
101 
106  void setParentSystem(DtComponentSystem* system);
107 
110  virtual bool init();
111 
115  virtual bool postAddComponentsInit() { return true; }
116 
120  virtual void registerAttributeFunctions(){}
121 
125  virtual void enable();
126  virtual void disable();
127  virtual bool isEnabled();
128  virtual void setIsEnabled(bool yesNo);
130 
134  virtual void preFirstTickInit();
135 
139  virtual void tick();
140 
143  virtual void postTick();
144 
152  virtual void timedTick();
153 
156  virtual void setMinTickPeriod(double minTickPeriod);
157 
159  virtual double minTickPeriod() const;
160 
162  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
163 
165  virtual double minTickPeriodVariance() const;
166 
170  virtual void setNextTickTime(double nextTickTime);
171 
173  virtual double nextTickTime() const;
174 
180  virtual double calculateNextTickTime() const;
181 
186  virtual double calculateFirstTickTime() const;
187 
194  virtual const char* type() const = 0;
195 
202  virtual void setEntity(DtVrfObject* entity);
203 
205  virtual DtSimComponent* nextComponent();
206  virtual DtSimComponent* prevComponent();
207 
209  virtual void setListItem(DtListItem* item);
210  virtual DtListItem* listItem();
211 
214  virtual void putData(std::string& fp, int indentLevel = 0);
215 
218  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
219  const DtVariableBindingsList& variableBindings);
220 
223  virtual void addInputPort(DtInputPort* port);
224  virtual void removeInputPort(DtInputPort* port);
225 
231  virtual DtInputPort* lookupInputPort(const DtString& portName);
232 
234  virtual DtList inputPortList() const;
235 
238  virtual void addOutputPort(DtOutputPort* port);
239  virtual void removeOutputPort(DtOutputPort* port);
240 
246  virtual DtOutputPort* lookupOutputPort(const DtString& portName);
247 
249  virtual DtList outputPortList() const;
250 
253  virtual void addInputPortGroup(DtInputPortGroup* group);
254  virtual void removeInputPortGroup(DtInputPortGroup* group);
255 
258  virtual DtInputPortGroup* lookupInputPortGroup(const DtString& groupName);
259 
261  virtual DtList inputPortGroupList() const;
262 
265  virtual void addOutputPortGroup(DtOutputPortGroup* group);
266  virtual void removeOutputPortGroup(DtOutputPortGroup* group);
267 
270  virtual DtOutputPortGroup* lookupOutputPortGroup(const DtString& groupName);
271 
273  virtual DtList outputPortGroupList() const;
274 
281  virtual int priority() const;
287  virtual void setPriority(int priority);
288 
292  double dT() const;
293 
298  virtual void setDT(double deltaT);
299 
303  virtual void setComponentDescriptor(DtComponentDescriptor* componentDescriptor);
304  virtual const DtComponentDescriptor* componentDescriptor() const;
305 
310  virtual bool tickWhileDestroyed() const;
311 
314  virtual DtOutputStream& objectConsoleDebug(const DtString& channel = "") const;
315  virtual DtOutputStream& objectConsoleVerbose(const DtString& channel = "") const;
316  virtual DtOutputStream& objectConsoleInfo(const DtString& channel = "") const;
317  virtual DtOutputStream& objectConsoleWarn(const DtString& channel = "") const;
318  virtual DtOutputStream& objectConsoleError(const DtString& channel = "") const;
320 
326 
329 
330  virtual DtSimResourceManager& resourceManager();
331  virtual const DtSimResourceManager& resourceManager() const;
333 
337  virtual DtString componentFullName() const;
338 
342  static DtSimComponentFactory* factory();
343  static void setFactory(DtSimComponentFactory* factory);
344 
347  static DtSimComponent* createComponent(const DtString& name,
348  const DtString& type, DtVrfObject* owner, DtSimManager* simManager,
349  DtComponentSystem* parentSystem,
350  DtComponentDescriptor* desc = 0,
351  DtReaderWriterRegistry* parentRegistry = 0);
352 
358  static void addSimComponentCreatorFcn(const DtString& type,
360 
362  virtual DtPhysicalWorld* physicalWorld();
363  virtual const DtPhysicalWorld* physicalWorld() const;
364 
366  virtual DtAttachedTerrain* terrainAttachedTo();
367  virtual const DtAttachedTerrain* terrainAttachedTo() const;
368 
370  virtual DtVrfObject* entity();
371  virtual const DtVrfObject* entity() const;
372 
374  virtual DtSimManager* simManager();
375  virtual const DtSimManager* simManager() const;
376 
381  virtual const Coordinate_System* coordinateSystem() const;
382  virtual Coordinate_System* coordinateSystem();
383 
385  virtual DtVrfObjectStateRepository* localStateRepository();
386  virtual const DtVrfObjectStateRepository* localStateRepository() const;
387 
388 protected:
389 
391  virtual double computeCurrentTime();
392 
397  bool testInvariant() const;
398 
402  virtual bool createPortGroups();
403 
407  virtual bool createPorts();
408 
417  DtVrfProcessStateRepository* createComponentPsr(const DtString& defaultPsrType,
418  const DtString& defaultPsrName, bool useDescriptorParams = true);
419 
420 private:
423  DtSimComponent();
424 
426  DtSimComponent(const DtSimComponent& orig);
427 
429  DtSimComponent& operator=(const DtSimComponent& orig);
430 
431 
432 protected:
438  DtListItem* myListItem;
439 
440  typedef std::map<DtString, DtInputPort*> DtInputPortMap;
441  typedef std::map<DtString, DtOutputPort*> DtOutputPortMap;
442  typedef std::map<DtString, DtInputPortGroup*> DtInputPortGroupMap;
443  typedef std::map<DtString, DtOutputPortGroup*> DtOutputPortGroupMap;
444 
449 
451 
453 
458  double myDT;
459 
463 
467 
472 
474 
477  std::list<DtVrfProcessStateRepository*> myComponentPsrs;
478 
481 };
482 
483 inline double DtSimComponent::dT() const
484 {
485  return myDT;
486 }
487 

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)