IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
InstructionSetsIdentifier.h
1 // InstructionSetsIdentifier.h:
3 // ----------------------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_INSTRUCTIONSETSIDENTIFIER_H__
16 #define __IPSDKBASEPROCESSING_INSTRUCTIONSETSIDENTIFIER_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::processor::InstructionSetsIdentifier::_instructionSetColl' : class 'std::set<_Kty>' needs to have dll-interface to be used by clients of class 'ipsdk::processor::InstructionSetsIdentifier'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
25 #include <IPSDKSerialization/Engine/BaseSerializationObject.h>
26 
27 namespace ipsdk {
28 namespace processor {
29 
32 
34 {
35  // declare serial class
37 
38 public:
44 
45 // methods
46 public:
48  bool isInit() const;
49 
51  void init(const eInstructionSet& instructionSet);
52 
56  void init(const eInstructionSet& instructionSet1,
57  const eInstructionSet& instructionSet2);
58 
63  void init(const eInstructionSet& instructionSet1,
64  const eInstructionSet& instructionSet2,
65  const eInstructionSet& instructionSet3);
66 
70  const eISAlignment& getISAlignmentType() const;
71 
75  ipUInt8 getISAlignmentSize() const;
76 
81  ipUInt32 getNbInstructionSet() const;
82 
87  const InstructionSetColl& getInstructionSetColl() const;
88 
93  bool hasInstructionSet(const eInstructionSet& instructionSet) const;
94 
99  ipUInt32 getNbEltsPerOp() const;
100 
102  void clear();
103 
104 private:
109  void computeAlignment();
110 
111 // attributes
112 private:
114  InstructionSetColl _instructionSetColl;
115 
117  eISAlignment _alignmentType;
118 
120  ipUInt8 _alignmentSize;
121 
123  ipUInt32 _nbEltsPerOp;
124 
126  bool _bInit;
127 };
128 
131 
132 inline bool
134 {
135  return _bInit;
136 }
137 
140 
141 } // end of namespace processor
142 } // end of namespace ipsdk
143 
144 #pragma warning (pop)
145 
146 #endif // __IPSDKBASEPROCESSING_INSTRUCTIONSETSIDENTIFIER_H__
#define IPSDK_DECLARE_SERIAL_WITH_COPY(libraryName, className)
macro enabling serialization on class
Definition: SerializationHdrMacro.h:73
std::set< eInstructionSet > InstructionSetColl
instruction set collection
Definition: InstructionSetTypes.h:77
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
uint8_t ipUInt8
Base types definition.
Definition: BaseTypes.h:49
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
bool isInit() const
retrieve object initialisation flag
Definition: InstructionSetsIdentifier.h:133
Predefined types associated to instruction set management.
IPSDKUTIL_API ipUInt32 getNbEltsPerOp(const eInstructionSet &instructionSet)
Definition of import/export macro for library.
eISAlignment
Enumerate describing memory data alignments.
Definition: InstructionSetTypes.h:59
Base class for serializable class.
Definition: BaseSerializationObject.h:33
Class used for processor instruction sets function identification.
Definition: InstructionSetsIdentifier.h:33
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53