model_graph.h
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:2k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = modgraph.h
  3. //
  4. #ifndef _MODGRAPH_H_
  5. #define _MODGRAPH_H_
  6. //#include "gensig.h"
  7. #include "vector"
  8. #include "psmodel.h"
  9. #include "digraph.h"
  10. enum SignalKinds_type {
  11.     SK_DUMMY_SIGNAL,
  12.     SK_REGULAR_SIGNAL,
  13.     SK_DUMMY_SOURCE_SIGNAL,
  14.     SK_DUMMY_DEST_SIGNAL,
  15.     SK_GENERAL_CONTROL,
  16.     SK_DUMMY_SOURCE_CONTROL,
  17.     SK_DUMMY_DEST_CONTROL};
  18. //typedef SignalKinds_enum SignalKinds_type;
  19. #define UNDEFINED_RATE -1.0
  20. class ModelGraph
  21. {
  22. public:
  23.   ModelGraph(PracSimModel *owning_model);
  24.   ~ModelGraph(void);
  25.   void InsertSignal(GenericSignal *new_sig_id,
  26.                     PracSimModel *model_ptr,
  27.                     bool sig_is_input);
  28.   GenericSignal* GetSignalId(int vtx_num);
  29.   obj_id_type GetVertexId(int vtx_num);
  30.   PracSimModel* GetModelId(int edge_num);
  31.   obj_id_type GetEdgeId(int vtx_num);
  32.   int GetEdgeNum(int fm_vtx_num, int to_vtx_num);
  33.   void EnableMultirate(void);
  34.   void EnableConstantInterval(void);
  35.   SignalKinds_type GetVertexKind(int vtx_num);
  36.   void ChangeRate(  GenericSignal* in_sig,
  37.                     GenericSignal* out_sig,
  38.                     double resamp_rate,
  39.                     PracSimModel* model_ptr);
  40.   void Closeout( PracSimModel* model_ptr);
  41.   int GetNumVerts(void);
  42.   double GetSampRate(int vtx_num);
  43.   double GetResampRate(int edge_num);
  44.   bool GetIsConstIntvl(int edge_num);
  45.   double GetDelay(int edge_num);
  46.   int GetBlockSize(int vtx_num);
  47.    void SetSampIntvl( GenericSignal* sig_id,
  48.                      double samp_intvl);
  49.    double GetSampIntvl(int vtx_num);
  50.   void SetBlockSize( GenericSignal* sig_id,
  51.                      int block_size);
  52.   bool ConnIsFeedback(int vtx_num);
  53.   void DumpSigDepGraph(void);
  54.   PracSimModel* GetOwningModel(void);
  55. private:
  56.   int Max_Signals;
  57.   PracSimModel *Owning_Model;
  58.   bool Model_Is_Multirate;
  59.   bool Model_Is_Constant_Interval;
  60.   std::vector<bool> *Vertex_Is_Input;
  61.   //std::vector<bool> *Vertex_Is_Internal;
  62.   std::vector<SignalKinds_type> *Vertex_Kind;
  63.   std::vector<bool> *Node_Is_Feedback;
  64.   std::vector<int> *Block_Size;
  65.   std::vector<double> *Samp_Intvl;
  66.   std::vector<double> *Delta_Delay;
  67.   std::vector<double> *Resamp_Rate;
  68.   std::vector<bool> *Const_Intvl;
  69.   DirectedGraph* Sig_Dep_Graph;
  70. };
  71. #endif // _MODGRAPH_H_