1 // IParameterSet.h 2 // * PURPOSE 3 // An abstract parameter-collection object. Can be shared 4 // between a media node and one or more operations to simplify 5 // realtime parameter automation. 6 // 7 // * HISTORY 8 // e.moon 26aug99 Begun 9 10 #ifndef __IParameterSet_H__ 11 #define __IParameterSet_H__ 12 13 #include <SupportDefs.h> 14 15 class IParameterSet { 16 17 public: // *** EXTERNAL INTERFACE 18 virtual ~IParameterSet(); //nyi 19 IParameterSet(); //nyi 20 21 // set parameter if the operation is stopped, or queue 22 // parameter-change if it's running. 23 // B_BAD_INDEX: invalid parameter ID 24 // B_NO_MEMORY: too little data 25 status_t setValue( 26 int32 parameterID, 27 bigtime_t performanceTime, 28 const void* data, 29 size_t size); //nyi 30 31 // fetch last-changed value for the given parameter 32 // B_BAD_INDEX: invalid parameter ID 33 // B_NO_MEMORY: data buffer too small 34 status_t getValue( 35 int32 parameterID, 36 bigtime_t* lastChangeTime, 37 void* data, 38 size_t* ioSize); //nyi 39 40 public: // *** INTERNAL INTERFACE (HOOKS) 41 42 // write to and from this object (translating parameter ID to 43 // member variable(s)) 44 45 virtual status_t store( 46 int32 parameterID, 47 const void* data, 48 size_t size) =0; 49 50 virtual status_t retrieve( 51 int32 parameterID, 52 void* data, 53 size_t* ioSize) =0; 54 55 // implement this hook to return a BParameterGroup representing 56 // the parameters represented by this set 57 58 virtual void populateGroup( 59 BParameterGroup* group) =0; 60 61 private: // *** IMPLEMENTATION 62 63 // map of parameter ID -> change time +++++ 64 }; 65 66 #endif /*__IParameterSet_H__*/