Teamcenter C++ API Reference  2312
PropOperationDispatcher.hxx
Go to the documentation of this file.
1 /*==================================================================================================
2 
3  Copyright (c) 2007 UGS
4  Unpublished - All rights reserved
5 
6 ====================================================================================================
7 File description:
8 
9  Filename: PropOperationDispatcher.hxx
10  Module : extensionframework
11 
12  This is the root interface class of the PropOperationDispatcher. It contains of all the generic methods
13  for PropOperationDispatcher that can be reused by the derived classes.
14 
15 ====================================================================================================
16  Date Name Description of Change
17 $HISTORY$
18 ==================================================================================================*/
19 #ifndef PropOperationDispatcher_HXX
20 #define PropOperationDispatcher_HXX
21 
22 
23 #include <string>
24 
26 #include <extensionframework/libextensionframework_exports.h>
27 
28 
29 class EIMObject;
30 class PropertyDescriptor;
31 class ImanProperty;
32 
33 
34 namespace Teamcenter
35 {
36  class PropOperationDispatcher;
37  class OperationDispatcher;
38 }
39 
40 
41 namespace Teamcenter {
42 
46  enum class PropBaseFnType
47  {
48  any,
49  matchAll,
50  objPointer
51  };
52 }
53 
54 class EXTENSIONFRAMEWORK_API Teamcenter::PropOperationDispatcher : public Teamcenter::OperationDispatcher
55 {
56  public:
58  virtual ~PropOperationDispatcher();
60 
66  static int findParentPropOperationDispatcher( tag_t objectType,
67  const std::string& propertyName,
68  const std::string& propOpernMsg,
69  int& propMsgIndex,
70  OperationDispatcher*& opPropOprnDisp
71  );
72 
73  // Project 011450 Changes
74  void askDispatches( bool& condDispatch, bool& preDispatch, bool& baseDispatch, bool& postDispatch );
75  ImanProperty* askProperty( EIMObject* obj, PropertyDescriptor* pd ) const;
76  void setName( const std::string& name );
77  std::string getName() const;
78 
79  virtual void getIntPreConditions(METHOD_message_t* msgData, int* value, logical* isNull ) const;
80  virtual void getIntPreActions(METHOD_message_t* msgData, int* value, logical* isNull ) const;
81  virtual void getIntBaseAction(METHOD_message_t* msgData, int* value, logical* isNull ) const;
82  virtual void getIntPostActions(METHOD_message_t* msgData, int* value, logical* isNull ) const;
83 
84  virtual void getIntPreConditions(METHOD_message_t* msgData, int* value, logical* isNull, logical* hasReadAccess) const;
85  virtual void getIntPreActions(METHOD_message_t* msgData, int* value, logical* isNull, logical* hasReadAccess) const;
86  virtual void getIntBaseAction(METHOD_message_t* msgData, int* value, logical* isNull, logical* hasReadAccess) const;
87  virtual void getIntPostActions(METHOD_message_t* msgData, int* value, logical* isNull, logical* hasReadAccess) const;
88 
89  virtual void getIntArrayPreConditions(METHOD_message_t* msgData, int* num, int** value, logical** isNull ) const;
90  virtual void getIntArrayPreActions(METHOD_message_t* msgData, int* num, int** value, logical** isNull ) const;
91  virtual void getIntArrayBaseAction(METHOD_message_t* msgData, int* num, int** value, logical** isNull ) const;
92  virtual void getIntArrayPostActions(METHOD_message_t* msgData, int* num, int** value, logical** isNull ) const;
93 
94  virtual void getIntArrayPreConditions( METHOD_message_t* msgData, int* num, int** value, logical** isNull, logical* hasReadAccess ) const;
95  virtual void getIntArrayPreActions( METHOD_message_t* msgData, int* num, int** value, logical** isNull, logical* hasReadAccess ) const;
96  virtual void getIntArrayBaseAction( METHOD_message_t* msgData, int* num, int** value, logical** isNull, logical* hasReadAccess ) const;
97  virtual void getIntArrayPostActions( METHOD_message_t* msgData, int* num, int** value, logical** isNull, logical* hasReadAccess ) const;
98 
99  virtual void getDoublePreConditions(METHOD_message_t* msgData, double* value, logical* isNull ) const;
100  virtual void getDoublePreActions(METHOD_message_t* msgData, double* value, logical* isNull ) const;
101  virtual void getDoubleBaseAction(METHOD_message_t* msgData, double* value, logical* isNull ) const;
102  virtual void getDoublePostActions(METHOD_message_t* msgData, double* value, logical* isNull ) const;
103 
104  virtual void getDoublePreConditions(METHOD_message_t* msgData, double* value, logical* isNull, logical* hasReadAccess ) const;
105  virtual void getDoublePreActions(METHOD_message_t* msgData, double* value, logical* isNull, logical* hasReadAccess) const;
106  virtual void getDoubleBaseAction(METHOD_message_t* msgData, double* value, logical* isNull, logical* hasReadAccess) const;
107  virtual void getDoublePostActions(METHOD_message_t* msgData, double* value, logical* isNull, logical* hasReadAccess) const;
108 
109  virtual void getDoubleArrayPreConditions(METHOD_message_t* msgData, int* num, double** value, logical** isNull ) const;
110  virtual void getDoubleArrayPreActions(METHOD_message_t* msgData, int* num, double** value, logical** isNull ) const;
111  virtual void getDoubleArrayBaseAction(METHOD_message_t* msgData, int* num, double** value, logical** isNull ) const;
112  virtual void getDoubleArrayPostActions(METHOD_message_t* msgData, int* num, double** value, logical** isNull ) const;
113 
114  virtual void getDoubleArrayPreConditions( METHOD_message_t* msgData, int* num, double** value, logical** isNull, logical* hasReadAccess ) const;
115  virtual void getDoubleArrayPreActions( METHOD_message_t* msgData, int* num, double** value, logical** isNull, logical* hasReadAccess ) const;
116  virtual void getDoubleArrayBaseAction( METHOD_message_t* msgData, int* num, double** value, logical** isNull, logical* hasReadAccess ) const;
117  virtual void getDoubleArrayPostActions( METHOD_message_t* msgData, int* num, double** value, logical** isNull, logical* hasReadAccess ) const;
118 
119 
120  virtual void getCharPreConditions(METHOD_message_t* msgData, char* value, logical* isNull ) const;
121  virtual void getCharPreActions(METHOD_message_t* msgData, char* value, logical* isNull ) const;
122  virtual void getCharBaseAction(METHOD_message_t* msgData, char* value, logical* isNull ) const;
123  virtual void getCharPostActions(METHOD_message_t* msgData, char* value, logical* isNull ) const;
124 
125  virtual void getCharPreConditions(METHOD_message_t* msgData, char* value, logical* isNull, logical* hasReadAccess ) const;
126  virtual void getCharPreActions(METHOD_message_t* msgData, char* value, logical* isNull, logical* hasReadAccess) const;
127  virtual void getCharBaseAction(METHOD_message_t* msgData, char* value, logical* isNull, logical* hasReadAccess) const;
128  virtual void getCharPostActions(METHOD_message_t* msgData, char* value, logical* isNull, logical* hasReadAccess) const;
129 
130  virtual void getCharArrayPreConditions(METHOD_message_t* msgData, int* num, char** value, logical** isNull ) const;
131  virtual void getCharArrayPreActions(METHOD_message_t* msgData, int* num, char** value, logical** isNull ) const;
132  virtual void getCharArrayBaseAction(METHOD_message_t* msgData, int* num, char** value, logical** isNull ) const;
133  virtual void getCharArrayPostActions(METHOD_message_t* msgData, int* num, char** value, logical** isNull ) const;
134 
135  virtual void getCharArrayPreConditions(METHOD_message_t* msgData, int* num, char** value, logical** isNull, logical* hasReadAccess) const;
136  virtual void getCharArrayPreActions(METHOD_message_t* msgData, int* num, char** value, logical** isNull, logical* hasReadAccess) const;
137  virtual void getCharArrayBaseAction(METHOD_message_t* msgData, int* num, char** value, logical** isNull, logical* hasReadAccess) const;
138  virtual void getCharArrayPostActions(METHOD_message_t* msgData, int* num, char** value, logical** isNull, logical* hasReadAccess) const;
139 
140  virtual void getStringPreConditions(METHOD_message_t* msgData, char** value, logical* isNull ) const;
141  virtual void getStringPreActions(METHOD_message_t* msgData, char** value, logical* isNull ) const;
142  virtual void getStringBaseAction(METHOD_message_t* msgData, char** value, logical* isNull ) const;
143  virtual void getStringPostActions(METHOD_message_t* msgData, char** value, logical* isNull ) const;
144 
145  virtual void getStringPreConditions(METHOD_message_t* msgData, char** value, logical* isNull, logical* hasReadAccess ) const;
146  virtual void getStringPreActions(METHOD_message_t* msgData, char** value, logical* isNull, logical* hasReadAccess) const;
147  virtual void getStringBaseAction(METHOD_message_t* msgData, char** value, logical* isNull, logical* hasReadAccess) const;
148  virtual void getStringPostActions(METHOD_message_t* msgData, char** value, logical* isNull, logical* hasReadAccess) const;
149 
150  virtual void getStringArrayPreConditions(METHOD_message_t* msgData, int* num, char*** value, logical** isNull ) const;
151  virtual void getStringArrayPreActions(METHOD_message_t* msgData,int* num, char*** value, logical** isNull ) const;
152  virtual void getStringArrayBaseAction(METHOD_message_t* msgData, int* num, char*** value, logical** isNull ) const;
153  virtual void getStringArrayPostActions(METHOD_message_t* msgData, int* num, char*** value, logical** isNull ) const;
154 
155  virtual void getStringArrayPreConditions( METHOD_message_t* msgData, int* num, char*** value, logical** isNull, logical* hasReadAccess ) const;
156  virtual void getStringArrayPreActions( METHOD_message_t* msgData, int* num, char*** value, logical** isNull, logical* hasReadAccess ) const;
157  virtual void getStringArrayBaseAction( METHOD_message_t* msgData, int* num, char*** value, logical** isNull, logical* hasReadAccess ) const;
158  virtual void getStringArrayPostActions( METHOD_message_t* msgData, int* num, char*** value, logical** isNull, logical* hasReadAccess ) const;
159 
160  virtual void getDatePreConditions(METHOD_message_t* msgData, date_t* value, logical* isNull ) const;
161  virtual void getDatePreActions(METHOD_message_t* msgData, date_t* value, logical* isNull ) const;
162  virtual void getDateBaseAction(METHOD_message_t* msgData, date_t* value, logical* isNull ) const;
163  virtual void getDatePostActions(METHOD_message_t* msgData, date_t* value, logical* isNull ) const;
164 
165  virtual void getDatePreConditions(METHOD_message_t* msgData, date_t* value, logical* isNull, logical* hasReadAccess) const;
166  virtual void getDatePreActions(METHOD_message_t* msgData, date_t* value, logical* isNull, logical* hasReadAccess) const;
167  virtual void getDateBaseAction(METHOD_message_t* msgData, date_t* value, logical* isNull, logical* hasReadAccess) const;
168  virtual void getDatePostActions(METHOD_message_t* msgData, date_t* value, logical* isNull, logical* hasReadAccess) const;
169 
170  virtual void getDateArrayPreConditions(METHOD_message_t* msgData, int* num, date_t** value, logical** isNull ) const;
171  virtual void getDateArrayPreActions(METHOD_message_t* msgData, int* num, date_t** value, logical** isNull ) const;
172  virtual void getDateArrayBaseAction(METHOD_message_t* msgData, int* num, date_t** value, logical** isNull ) const;
173  virtual void getDateArrayPostActions(METHOD_message_t* msgData, int* num, date_t** value, logical** isNull ) const;
174 
175  virtual void getDateArrayPreConditions( METHOD_message_t* msgData, int* num, date_t** value, logical** isNull, logical* hasReadAccess) const;
176  virtual void getDateArrayPreActions( METHOD_message_t* msgData, int* num, date_t** value, logical** isNull, logical* hasReadAccess) const;
177  virtual void getDateArrayBaseAction( METHOD_message_t* msgData, int* num, date_t** value, logical** isNull, logical* hasReadAccess) const;
178  virtual void getDateArrayPostActions( METHOD_message_t* msgData, int* num, date_t** value, logical** isNull, logical* hasReadAccess) const;
179 
180  virtual void getLogicalPreConditions(METHOD_message_t* msgData, logical* value, logical* isNull ) const;
181  virtual void getLogicalPreActions(METHOD_message_t* msgData, logical* value, logical* isNull ) const;
182  virtual void getLogicalBaseAction(METHOD_message_t* msgData, logical* value, logical* isNull ) const;
183  virtual void getLogicalPostActions(METHOD_message_t* msgData, logical* value, logical* isNull ) const;
184 
185  virtual void getLogicalPreConditions(METHOD_message_t* msgData, logical* value, logical* isNull, logical* hasReadAccess) const;
186  virtual void getLogicalPreActions(METHOD_message_t* msgData, logical* value, logical* isNull, logical* hasReadAccess) const;
187  virtual void getLogicalBaseAction(METHOD_message_t* msgData, logical* value, logical* isNull, logical* hasReadAccess) const;
188  virtual void getLogicalPostActions(METHOD_message_t* msgData, logical* value, logical* isNull, logical* hasReadAccess) const;
189 
190  virtual void getLogicalArrayPreConditions(METHOD_message_t* msgData, int* num, logical** value, logical** isNull ) const;
191  virtual void getLogicalArrayPreActions(METHOD_message_t* msgData, int* num, logical** value, logical** isNull ) const;
192  virtual void getLogicalArrayBaseAction(METHOD_message_t* msgData, int* num, logical** value, logical** isNull ) const;
193  virtual void getLogicalArrayPostActions(METHOD_message_t* msgData, int* num, logical** value, logical** isNull ) const;
194 
195  virtual void getLogicalArrayPreConditions( METHOD_message_t* msgData, int* num, logical** value, logical** isNull, logical* hasReadAccess ) const;
196  virtual void getLogicalArrayPreActions( METHOD_message_t* msgData, int* num, logical** value, logical** isNull, logical* hasReadAccess ) const;
197  virtual void getLogicalArrayBaseAction( METHOD_message_t* msgData, int* num, logical** value, logical** isNull, logical* hasReadAccess ) const;
198  virtual void getLogicalArrayPostActions( METHOD_message_t* msgData, int* num, logical** value, logical** isNull, logical* hasReadAccess ) const;
199 
200  virtual void getTagPreConditions(METHOD_message_t* msgData, tag_t* value, logical* isNull ) const;
201  virtual void getTagPreActions(METHOD_message_t* msgData, tag_t* value, logical* isNull ) const;
202  virtual void getTagBaseAction(METHOD_message_t* msgData, tag_t* value, logical* isNull ) const;
203  virtual void getTagPostActions(METHOD_message_t* msgData, tag_t* value, logical* isNull ) const;
204 
205  virtual void getTagPreConditions(METHOD_message_t* msgData, tag_t* value, logical* isNull, logical* hasReadAccess) const;
206  virtual void getTagPreActions(METHOD_message_t* msgData, tag_t* value, logical* isNull, logical* hasReadAccess) const;
207  virtual void getTagBaseAction(METHOD_message_t* msgData, tag_t* value, logical* isNull, logical* hasReadAccess) const;
208  virtual void getTagPostActions(METHOD_message_t* msgData, tag_t* value, logical* isNull, logical* hasReadAccess) const;
209 
210  virtual void getTagArrayPreConditions(METHOD_message_t* msgData, int* num, tag_t** value, logical** isNull ) const;
211  virtual void getTagArrayPreActions(METHOD_message_t* msgData, int* num, tag_t** value, logical** isNull ) const;
212  virtual void getTagArrayBaseAction(METHOD_message_t* msgData, int* num, tag_t** value, logical** isNull ) const;
213  virtual void getTagArrayPostActions(METHOD_message_t* msgData, int* num, tag_t** value, logical** isNull ) const;
214 
215  virtual void getTagArrayPreConditions( METHOD_message_t* msgData, int* num, tag_t** value, logical** isNull, logical* hasReadAccess ) const;
216  virtual void getTagArrayPreActions( METHOD_message_t* msgData, int* num, tag_t** value, logical** isNull, logical* hasReadAccess ) const;
217  virtual void getTagArrayBaseAction( METHOD_message_t* msgData, int* num, tag_t** value, logical** isNull, logical* hasReadAccess ) const;
218  virtual void getTagArrayPostActions( METHOD_message_t* msgData, int* num, tag_t** value, logical** isNull, logical* hasReadAccess ) const;
219 
220 
221  virtual void setStringPreConditions( METHOD_message_t* msgData, const char* value, const logical isNull ) const;
222  virtual void setStringPreActions( METHOD_message_t* msgData, const char* value, const logical isNull ) const;
223  virtual void setStringPostActions( METHOD_message_t* msgData, const char* value, const logical isNull ) const;
224  virtual void setStringBaseAction( METHOD_message_t* msgData, const char* value, const logical isNull ) const;
225  virtual void setStringArrayPreConditions( METHOD_message_t* msgData, int num, const char** values, const logical* is_null ) const;
226  virtual void setStringArrayPreActions( METHOD_message_t* msgData, int num, const char** values, const logical* is_null ) const;
227  virtual void setStringArrayPostActions( METHOD_message_t* msgData, int num, const char** values, const logical* is_null ) const;
228  virtual void setStringArrayBaseAction( METHOD_message_t* msgData, int num, const char** values, const logical* is_null ) const;
229 
230  virtual void setDatePreConditions( METHOD_message_t* msgData, const date_t dateValue, const logical isNull ) const;
231  virtual void setDatePreActions( METHOD_message_t* msgData, const date_t dateValue, const logical isNull ) const;
232  virtual void setDatePostActions( METHOD_message_t* msgData, const date_t dateValue, const logical isNull ) const;
233  virtual void setDateBaseAction( METHOD_message_t* msgData, const date_t dateValue, const logical isNull ) const;
234  virtual void setDateArrayPreConditions( METHOD_message_t* msgData, int num, const date_t* dateValues, const logical* isNullVals ) const;
235  virtual void setDateArrayPreActions( METHOD_message_t* msgData, int num, const date_t* dateValues, const logical* isNullVals ) const;
236  virtual void setDateArrayPostActions( METHOD_message_t* msgData, int num, const date_t* dateValues, const logical* isNullVals ) const;
237  virtual void setDateArrayBaseAction( METHOD_message_t* msgData, int num, const date_t* dateValues, const logical* isNullVals ) const;
238 
239  virtual void setDoublePreConditions( METHOD_message_t* msgData, const double doubleValue, const logical isNull ) const;
240  virtual void setDoublePreActions( METHOD_message_t* msgData, const double doubleValue, const logical isNull ) const;
241  virtual void setDoublePostActions( METHOD_message_t* msgData, const double doubleValue, const logical isNull ) const;
242  virtual void setDoubleBaseAction( METHOD_message_t* msgData, const double doubleValue, const logical isNull ) const;
243  virtual void setDoubleArrayPreConditions( METHOD_message_t* msgData, int num, const double* doubleValue, const logical* isNull ) const;
244  virtual void setDoubleArrayPreActions( METHOD_message_t* msgData, int num, const double* doubleValue, const logical* isNull ) const;
245  virtual void setDoubleArrayPostActions( METHOD_message_t* msgData, int num, const double* doubleValue, const logical* isNull ) const;
246  virtual void setDoubleArrayBaseAction( METHOD_message_t* msgData, int num, const double* doubleValue, const logical* isNull ) const;
247 
248  virtual void setIntPreConditions( METHOD_message_t* msgData, const int intValue, const logical isNull ) const;
249  virtual void setIntPreActions( METHOD_message_t* msgData, const int intValue, const logical isNull ) const;
250  virtual void setIntPostActions( METHOD_message_t* msgData, const int intValue, const logical isNull ) const;
251  virtual void setIntBaseAction( METHOD_message_t* msgData, const int intValue, const logical isNull ) const;
252  virtual void setIntArrayPreConditions( METHOD_message_t* msgData, int num, const int* intValues, const logical* isNullVals ) const;
253  virtual void setIntArrayPreActions( METHOD_message_t* msgData, int num, const int* intValues, const logical* isNullVals ) const;
254  virtual void setIntArrayPostActions( METHOD_message_t* msgData, int num, const int* intValues, const logical* isNullVals ) const;
255  virtual void setIntArrayBaseAction( METHOD_message_t* msgData, int num, const int* intValues, const logical* isNullVals ) const;
256 
257  virtual void setLogicalPreConditions( METHOD_message_t* msgData, const logical boolValue, const logical isNull ) const;
258  virtual void setLogicalPreActions( METHOD_message_t* msgData, const logical boolValue, const logical isNull ) const;
259  virtual void setLogicalPostActions( METHOD_message_t* msgData, const logical boolValue, const logical isNull ) const;
260  virtual void setLogicalBaseAction( METHOD_message_t* msgData, const logical boolValue, const logical isNull ) const;
261  virtual void setLogicalArrayPreConditions( METHOD_message_t* msgData, int num, const logical* boolValues, const logical* isNullVals ) const;
262  virtual void setLogicalArrayPreActions( METHOD_message_t* msgData, int num, const logical* boolValues, const logical* isNullVals ) const;
263  virtual void setLogicalArrayPostActions( METHOD_message_t* msgData, int num, const logical* boolValues, const logical* isNullVals ) const;
264  virtual void setLogicalArrayBaseAction( METHOD_message_t* msgData, int num, const logical* boolValues, const logical* isNullVals ) const;
265 
266  virtual void setTagPreConditions( METHOD_message_t* msgData, const tag_t tagValue, const logical isNull ) const;
267  virtual void setTagPreActions( METHOD_message_t* msgData, const tag_t tagValue, const logical isNull ) const;
268  virtual void setTagPostActions( METHOD_message_t* msgData, const tag_t tagValue, const logical isNull ) const;
269  virtual void setTagBaseAction( METHOD_message_t* msgData, const tag_t tagValue, const logical isNull ) const;
270  virtual void setTagArrayPreConditions( METHOD_message_t* msgData, int num, const tag_t* tagValues, const logical* isNullVals ) const;
271  virtual void setTagArrayPreActions( METHOD_message_t* msgData, int num, const tag_t* tagValues, const logical* isNullVals ) const;
272  virtual void setTagArrayPostActions( METHOD_message_t* msgData, int num, const tag_t* tagValues, const logical* isNullVals ) const;
273  virtual void setTagArrayBaseAction( METHOD_message_t* msgData, int num, const tag_t* tagValues, const logical* isNullVals ) const;
274 
275  virtual void setCharPreConditions( METHOD_message_t* msgData, const char charValue, const logical isNull ) const;
276  virtual void setCharPreActions( METHOD_message_t* msgData, const char charValue, const logical isNull ) const;
277  virtual void setCharPostActions( METHOD_message_t* msgData, const char charValue, const logical isNull ) const;
278  virtual void setCharBaseAction( METHOD_message_t* msgData, const char charValue, const logical isNull ) const;
279  virtual void setCharArrayPreConditions( METHOD_message_t* msgData, int num, const char* charValues, const logical* isNullVals ) const;
280  virtual void setCharArrayPreActions( METHOD_message_t* msgData, int num, const char* charValues, const logical* isNullVals ) const;
281  virtual void setCharArrayPostActions( METHOD_message_t* msgData, int num, const char* charValues, const logical* isNullVals ) const;
282  virtual void setCharArrayBaseAction( METHOD_message_t* msgData, int num, const char* charValues, const logical* isNullVals ) const;
283 
287  TC_DEPRECATED("14.0", "setIsMatchAllBaseAction", "setBaseActionFunctionType")
288  void setIsMatchAllBaseAction(bool);
289 
293  TC_DEPRECATED("14.0", "isMatchAllBaseAction", "getBaseActionFunctionType")
294  bool isMatchAllBaseAction() const;
295 
300  Teamcenter::PropBaseFnType functionType
301  );
302 
307  {
309  }
310 
315  generic_routine_t genericAnyValue_FnPtr,
316  TC_argument_list_t* argList
317  );
318 
324  {
325  return (m_baseActionFunctionType == PropBaseFnType::objPointer && m_directBaseGetterFn.directFuncPtr != nullptr);
326  }
327 
333  const PropOperationDispatcher* source
334  );
339 
340  protected:
341  void setupMessageData( tag_t object_tag, METHOD_message_t & msgData ) const;
342  void setupPropMessageData( tag_t object_tag, METHOD_message_t & msgData ) const;
343 
344  private:
345  std::string m_propName;
346 
348 
353  {
354  generic_routine_t directFuncPtr = nullptr;
355  TC_argument_list_t* userArgList = nullptr;
356  };
357 
359 
360  public:
366  {
367  return m_directBaseGetterFn;
368  }
369 };
370 
371 
372 #include <extensionframework/libextensionframework_undef.h>
373 #endif //PropOperationDispatcher_HXX