一个用于管理对象树的 C 库

GitHub仓库链接(https://github.com/Mac-Rsh/mr-object)
Gitee仓库链接(https://gitee.com/MacRsh/mr-object)

概述

mr-object 是一个用于管理对象树的 C 库。它提供了一组简单易用的 API,支持通过路径注册、查找和删除对象。该库具有以下特性:

  • 支持基于路径的树状对象管理
  • 资源占用低,适合嵌入式系统使用
  • 中断安全的设计
  • 简单直观的 API

对象树示例

下面是一个对象树的示例:

|--- root
     |--- devices
          |--- sensors
               |--- sensor1
               |--- sensor2
               |--- sensor3
               |--- sensor4
          |--- controls
               |--- temperature
                    |--- control_a
                    |--- control_b
                    |--- control_c
               |--- humidity
                    |--- control_x
                    |--- control_y
                    |--- control_z
          |--- actuators
               |--- motor1
               |--- motor2
               |--- valve_a
               |--- valve_b
     |--- network
          |--- ethernet
               |--- switch_a
               |--- switch_b
          |--- wifi
               |--- access_point_1
               |--- access_point_2
     |--- power
          |--- supply_a
          |--- supply_b
          |--- backup_generator
     |--- analytics
          |--- dashboard
          |--- reporting
          |--- prediction
     |--- settings
          |--- user_management
          |--- system_config
          |--- notifications

API 文档

根据路径查找对象

struct mr_object *mr_object_find(const char *path);
参数描述
path对象的路径
返回值
查找成功对象的指针
查找失败NULL

使用示例:

struct mr_object *object = mr_object_find("/devices/sensor");
if (object != NULL)
{
    /* 使用对象 */
}

注册对象到指定路径

int mr_object_register(struct mr_object *object, const char *path);
参数描述
object要注册的对象
path对象的路径
返回值
注册成功0
注册失败-1

使用示例:

#include "mr_object.h"

/* 注册对象 */
struct mr_object devices = {0};
mr_object_register(&devices, "/devices");

struct mr_object sensor = {0};
mr_object_register(&sensor, "/devices/sensor");

结构示意:

|--- root
     |--- devices
          |--- sensor

注销对象或对象树

int mr_object_unregister(struct mr_object *object);
参数描述
object要注销的对象或对象树的根对象
返回值
注销成功0
注销失败-1

注: 被注销的对象下的结构将保留。

使用示例:

/* 注销单个对象 */
mr_object_unregister(&sensor);

/* 注销对象树(devices 下的结构将保留) */
mr_object_unregister(mr_object_find("/devices"));

结构示意:

/* 注销单个对象 */
|--- root
     |--- devices

/* 注销对象树 */
|--- root

获取对象的父对象

struct mr_object *mr_object_parent_get(struct mr_object *object);
参数描述
object要获取父对象的对象
返回值
父对象的指针

使用示例:

struct mr_object *parent = mr_object_parent_get(mr_object_find("/devices/sensor"));   

返回示意:

|--- root
     |--- devices    <-- 返回此对象
          |--- sensor

打印整个对象树或指定对象及其子对象

void mr_object_tree_print(struct mr_object *object);
参数描述
parent要打印的对象树的根对象,如果为 NULL 则打印整个对象树

使用示例:

/* 打印整个对象树 */
mr_object_tree_print(NULL);

/* 打印指定对象树 */
mr_object_tree_print(mr_object_parent_get(mr_object_find("/devices/sensor")));

GitHub仓库链接(https://github.com/Mac-Rsh/mr-object)
Gitee仓库链接(https://gitee.com/MacRsh/mr-object)

如有任何问题,欢迎提交 issue 或 pull request

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值