00001 #ifndef nrn_dataclass_h 00002 #define nrn_dataclass_h 00003 00004 #include <InterViews/resource.h> 00005 00006 class NrnPropertyImpl; 00007 class SectionListImpl; 00008 class NrnNodeImpl; 00009 00010 class NrnProperty { 00011 public: 00012 NrnProperty(Prop*); 00013 NrnProperty(const char*); 00014 virtual ~NrnProperty(); 00015 const char* name() const; 00016 int type() const; 00017 boolean is_point() const; 00018 boolean deleteable(); 00019 00020 Symbol* first_var(); 00021 boolean more_var(); 00022 Symbol* next_var(); 00023 Symbol* find(const char* rangevar); 00024 Symbol* var(int); 00025 int prop_index(const Symbol*)const; 00026 double* prop_pval(const Symbol*, int arrayindex=0)const; 00027 00028 Prop* prop() const; 00029 int var_type(Symbol*) const; 00030 //vartype=0, 1, 2, 3 means all, PARAMETER, ASSIGNED, STATE 00031 static boolean assign(Prop* src, Prop* dest, int vartype=0); 00032 private: 00033 NrnPropertyImpl* npi_; 00034 }; 00035 00036 class SectionList : public Resource { 00037 public: 00038 SectionList(Object*); 00039 virtual ~SectionList(); 00040 Section* begin(); 00041 Section* next(); 00042 private: 00043 SectionListImpl* sli_; 00044 }; 00045 00046 #if 0 00047 class NrnSection { 00048 public: 00049 NrnSection(Section* sec); 00050 virtual ~NrnSection(); 00051 void section(Section*); 00052 Section* section(); 00053 Node* node(int index); 00054 boolean is_mechanism(int type); 00055 double* var_pointer(Symbol*, int index=0, int inode=0); 00056 double* var_pointer(const char*); // eg. ca_cadifus[2](.7) 00057 private: 00058 NrnNodeImpl* nni_; 00059 }; 00060 #endif 00061 00062 #endif