xref: /haiku/src/apps/cortex/addons/common/IParameterSet.h (revision 2f470aec1c92ce6917b8a903e343795dc77af41f)
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__*/