property.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /******************************************************************
  2. *
  3. * uEcho for C
  4. *
  5. * Copyright (C) Satoshi Konno 2015
  6. *
  7. * This is licensed under BSD-style license, see file COPYING.
  8. *
  9. ******************************************************************/
  10. #ifndef _UECHO_PROPERTY_H_
  11. #define _UECHO_PROPERTY_H_
  12. #include <uecho/typedef.h>
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /****************************************
  17. * Constant
  18. ****************************************/
  19. enum {
  20. uEchoPropertyCodeMin = 0x80,
  21. uEchoPropertyCodeMax = 0xFF,
  22. };
  23. /****************************************
  24. * Data Type
  25. ****************************************/
  26. typedef byte uEchoPropertyCode;
  27. typedef enum {
  28. uEchoPropertyAttrNone = 0x00,
  29. uEchoPropertyAttrRead = 0x01,
  30. uEchoPropertyAttrWrite = 0x02,
  31. uEchoPropertyAttrAnno = 0x04,
  32. uEchoPropertyAttrReadWrite = uEchoPropertyAttrRead | uEchoPropertyAttrWrite,
  33. uEchoPropertyAttrReadAnno = uEchoPropertyAttrRead | uEchoPropertyAttrAnno,
  34. uEchoPropertyAttrReadRequired = 0x10,
  35. uEchoPropertyAttrWriteRequired = 0x20,
  36. uEchoPropertyAttrAnnoRequired = 0x40,
  37. } uEchoPropertyAttr;
  38. typedef enum {
  39. uEchoPropertyTypeNone = 0x00,
  40. uEchoPropertyTypeNumber = 0x01,
  41. uEchoPropertyTypeState = 0x02,
  42. uEchoPropertyTypeNumeric = 0x03,
  43. uEchoPropertyTypeLevel = 0x04,
  44. uEchoPropertyTypeDateTime = 0x05,
  45. uEchoPropertyTypeDate = 0x06,
  46. uEchoPropertyTypeTime = 0x07,
  47. uEchoPropertyTypeBitmap = 0x10,
  48. uEchoPropertyTypeArray = 0x11,
  49. uEchoPropertyTypeObject = 0x12,
  50. uEchoPropertyTypeOneOf = 0x13,
  51. uEchoPropertyTypeRaw = 0x20,
  52. } uEchoPropertyType;
  53. #if !defined(_UECHO_PROPERTY_INTERNAL_H_)
  54. typedef void uEchoProperty;
  55. #endif
  56. /****************************************
  57. * Function
  58. ****************************************/
  59. uEchoProperty* uecho_property_new(void);
  60. bool uecho_property_delete(uEchoProperty* prop);
  61. bool uecho_property_setdata(uEchoProperty* prop, const byte* data, size_t data_size);
  62. bool uecho_property_setintegerdata(uEchoProperty* prop, int data, size_t data_size);
  63. bool uecho_property_setbytedata(uEchoProperty* prop, byte data);
  64. bool uecho_property_adddata(uEchoProperty* prop, const byte* data, size_t data_size);
  65. bool uecho_property_addbytedata(uEchoProperty* prop, const byte data);
  66. bool uecho_property_cleardata(uEchoProperty* prop);
  67. uEchoProperty* uecho_property_next(uEchoProperty* prop);
  68. void uecho_property_remove(uEchoProperty* prop);
  69. void uecho_property_setname(uEchoProperty* prop, const char* name);
  70. const char* uecho_property_getname(uEchoProperty* prop);
  71. void uecho_property_setcode(uEchoProperty* prop, uEchoPropertyCode val);
  72. uEchoPropertyCode uecho_property_getcode(uEchoProperty* prop);
  73. size_t uecho_property_getdatasize(uEchoProperty* prop);
  74. byte* uecho_property_getdata(uEchoProperty* prop);
  75. bool uecho_property_getintegerdata(uEchoProperty* prop, int* data);
  76. bool uecho_property_getbytedata(uEchoProperty* prop, byte* data);
  77. bool uecho_property_getpropertymapcount(uEchoProperty* prop, size_t* count);
  78. bool uecho_property_getpropertymapcodes(uEchoProperty* prop, uEchoPropertyCode* prop_codes, size_t count);
  79. bool uecho_property_isdataequal(uEchoProperty* prop, const byte* data, size_t data_size);
  80. void uecho_property_setattribute(uEchoProperty* prop, uEchoPropertyAttr val);
  81. uEchoPropertyAttr uecho_property_getattribute(uEchoProperty* prop);
  82. bool uecho_property_isreadable(uEchoProperty* prop);
  83. bool uecho_property_isreadrequired(uEchoProperty* prop);
  84. bool uecho_property_iswritable(uEchoProperty* prop);
  85. bool uecho_property_iswriterequired(uEchoProperty* prop);
  86. bool uecho_property_isreadonly(uEchoProperty* prop);
  87. bool uecho_property_iswriteonly(uEchoProperty* prop);
  88. bool uecho_property_isannounceable(uEchoProperty* prop);
  89. bool uecho_property_isannouncerequired(uEchoProperty* prop);
  90. void uecho_property_settype(uEchoProperty* prop, uEchoPropertyType val);
  91. uEchoPropertyType uecho_property_gettype(uEchoProperty* prop);
  92. uEchoProperty* uecho_property_copy(uEchoProperty* prop);
  93. bool uecho_property_equals(uEchoProperty* prop1, uEchoProperty* prop2);
  94. #ifdef __cplusplus
  95. } /* extern C */
  96. #endif
  97. #endif /* _UECHO_NODE_H_ */