Acacia
axapi_node.h
1 #ifndef LIB_MAC_AXAPI_NODE_H_
2 #define LIB_MAC_AXAPI_NODE_H_
3 
4 #include <ApplicationServices/ApplicationServices.h>
5 
6 #include <memory>
7 #include <string>
8 #include <vector>
9  // end of axapi group
15 
16 namespace acacia {
17 
18 class AXAPIContextImpl;
19 
20 template <typename T>
22 
23 class AXAPINode;
24 class Dictionary;
25 class Point;
26 class Size;
27 class Rect;
28 class Range;
29 
30 enum class ValueType;
31 
43 
54 AXAPINode findRootAXAPINodeForName(const std::string& name);
55 
63 class AXAPINode {
64  public:
74 
75  AXAPINode(const AXAPINode& other);
76  ~AXAPINode();
77 
78  AXAPINode& operator=(AXAPINode other);
79 
86  bool isNull() const;
87 
97  std::vector<std::string> getAttributeNames() const;
98 
105  bool hasAttribute(const std::string& attribute) const;
106 
122  ValueType getValueType(const std::string& attribute) const;
123 
137  ValueType getListElementType(const std::string& attribute) const;
138 
147  int getListElementCount(const std::string& attribute) const;
148 
156  bool getBooleanValue(const std::string& attribute) const;
157 
165  int getIntValue(const std::string& attribute) const;
166 
174  float getFloatValue(const std::string& attribute) const;
175 
183  std::string getStringValue(const std::string& attribute) const;
184 
192  std::string getURLValue(const std::string& attribute) const;
193 
201  AXAPINode getNodeValue(const std::string& attribute) const;
202 
210  Point getPointValue(const std::string& attribute) const;
211 
219  Size getSizeValue(const std::string& attribute) const;
220 
228  Rect getRectValue(const std::string& attribute) const;
229 
237  Range getRangeValue(const std::string& attribute) const;
238 
247  std::vector<AXAPINode> getNodeListValue(const std::string& attribute) const;
248 
257  AXAPINode getNodeListValueAtIndex(const std::string& attribute,
258  int index) const;
259 
268  std::vector<std::string> getStringListValue(
269  const std::string& attribute) const;
270 
279  std::string getStringListValueAtIndex(const std::string& attribute,
280  int index) const;
281 
290  std::vector<Range> getRangeListValue(const std::string& attribute) const;
291 
300  Range getRangeListValueAtIndex(const std::string& attribute, int index) const;
301 
310  std::vector<Dictionary> getDictionaryListValue(
311  const std::string& attribute) const;
312 
321  Dictionary getDictionaryListValueAtIndex(const std::string& attribute,
322  int index) const;
323 
325  friend AXAPINode findRootAXAPINodeForName(const std::string& name);
326 
327  private:
328  explicit AXAPINode(AXUIElementRef ax_element);
329  explicit AXAPINode(ScopedCFTypeRef<AXUIElementRef> ax_element);
330 
331  template <typename T>
332  ScopedCFTypeRef<T> GetRawValue(const std::string& attribute,
333  ValueType expected_type) const;
334 
335  ScopedCFTypeRef<CFArrayRef> GetRawArrayValue(
336  const std::string& attribute) const;
337 
338  template <typename T>
339  ScopedCFTypeRef<T> GetRawArrayValueAtIndex(const std::string& attribute,
340  int index,
341  ValueType expected_type) const;
342 
343  AXUIElementRef ax_ui_element_{NULL};
344 
345  friend class AXAPIContextImpl;
346  friend class Dictionary;
347 };
348 
349 } // namespace acacia
350 
351 #endif // LIB_MAC_AXAPI_NODE_H_
Definition: axapi_node.h:63
friend AXAPINode findRootAXAPINodeForName(const std::string &name)
friend AXAPINode findRootAXAPINodeForPID(int pid)
Definition: mac_data_types.h:152
Definition: mac_data_types.h:65
Definition: mac_data_types.h:132
Definition: mac_data_types.h:109
Definition: axapi_node.h:21
Definition: mac_data_types.h:87
ValueType getValueType(const std::string &attribute) const
std::vector< std::string > getStringListValue(const std::string &attribute) const
Point getPointValue(const std::string &attribute) const
bool getBooleanValue(const std::string &attribute) const
Size getSizeValue(const std::string &attribute) const
AXAPINode findRootAXAPINodeForPID(int pid)
AXAPINode getNodeValue(const std::string &attribute) const
std::string getURLValue(const std::string &attribute) const
int getIntValue(const std::string &attribute) const
AXAPINode findRootAXAPINodeForName(const std::string &name)
Dictionary getDictionaryListValueAtIndex(const std::string &attribute, int index) const
AXAPINode getNodeListValueAtIndex(const std::string &attribute, int index) const
std::vector< std::string > getAttributeNames() const
std::string getStringListValueAtIndex(const std::string &attribute, int index) const
int getListElementCount(const std::string &attribute) const
std::vector< Dictionary > getDictionaryListValue(const std::string &attribute) const
std::vector< AXAPINode > getNodeListValue(const std::string &attribute) const
bool hasAttribute(const std::string &attribute) const
std::vector< Range > getRangeListValue(const std::string &attribute) const
ValueType
Definition: mac_data_types.h:18
Rect getRectValue(const std::string &attribute) const
float getFloatValue(const std::string &attribute) const
std::string getStringValue(const std::string &attribute) const
ValueType getListElementType(const std::string &attribute) const
Range getRangeListValueAtIndex(const std::string &attribute, int index) const
Range getRangeValue(const std::string &attribute) const
bool isNull() const