-
-
Notifications
You must be signed in to change notification settings - Fork 336
Open
Description
In the instrument service, the Selector and Auxiliaries used for communication are Object-C objects, and the structure includes $top, $objects and $archiver
Can we add a packing and unpacking operation?
An example of a string is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>example</string>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<key>$archiver</key>
<string>NSKeyedArchiver</string>
<key>$objects</key>
<array>
<string>$null</string>
<string>example</string>
</array>
<key>$top</key>
<dict>
<key>root</key>
<uid>1</uid>
</dict>
<key>$version</key>
<integer>100000</integer>
</plist>
An example of an empty array is as follows
auto vObject = plist_new_array();
if(vObject)
{
plist_array_append_item(vObject, plist_new_string("$null")); // 0
auto vNode1 = plist_new_dict(); // 1
if(vNode1)
{
// <key>$class</key>
plist_dict_set_item(vNode1, "$class", plist_new_uid(2));
// <key>NS.objects</key>
auto vNS_Objects = plist_new_array();
if(vNS_Objects)
{
plist_dict_set_item(vNode1, "NS.objects", vNS_Objects);
}
plist_array_append_item(vObject, vNode1);
}
auto vNode2 = plist_new_dict(); // 2
if(vNode2)
{
// <key>$classes</key>
auto vNS_Classes = plist_new_array();
if(vNS_Classes)
{
plist_array_append_item(vNS_Classes, plist_new_string("NSArray"));
plist_array_append_item(vNS_Classes, plist_new_string("NSObject"));
plist_dict_set_item(vNode2, "$classes", vNS_Classes);
}
// <key>$classname</key>
plist_dict_set_item(vNode2, "$classname", plist_new_string("NSArray"));
plist_array_append_item(vObject, vNode2);
}
}
An example of an empty object is as follows
auto vObject = plist_new_array();
if(vObject)
{
plist_array_append_item(vObject, plist_new_string("$null")); // 0
auto vNode1 = plist_new_dict(); // 1
if(vNode1)
{
// <key>$class</key>
plist_dict_set_item(vNode1, "$class", plist_new_uid(2));
// <key>NS.keys</key>
auto vNS_Keys = plist_new_array();
if(vNS_Keys)
{
plist_dict_set_item(vNode1, "NS.keys", vNS_Keys);
}
// <key>NS.objects</key>
auto vNS_Objects = plist_new_array();
if(vNS_Objects)
{
plist_dict_set_item(vNode1, "NS.objects", vNS_Objects);
}
plist_array_append_item(vObject, vNode1);
}
auto vNode2 = plist_new_dict(); // 2
if(vNode2)
{
// <key>$classes</key>
auto vNS_Classes = plist_new_array();
if(vNS_Classes)
{
plist_array_append_item(vNS_Classes, plist_new_string("NSDictionary"));
plist_array_append_item(vNS_Classes, plist_new_string("NSObject"));
plist_dict_set_item(vNode2, "$classes", vNS_Classes);
}
// <key>$classname</key>
plist_dict_set_item(vNode2, "$classname", plist_new_string("NSDictionary"));
plist_array_append_item(vObject, vNode2);
}
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels