函数名:

UF_ATTR_cycle

函数功能:

遍历对象所有指定类型的属性,返回下一个属性的标题和值

如果指定的类型为UF_ATTR_any(或6),则遍历对象的所有属性。

注意:调用者不应依赖属性以任何特定顺序返回。

如果没有更多的属性可供遍历,则作为循环状态(index)返回零

传递对象标示将导致遍历该对象的属性,传递零件标签将导致遍历该零件的零件属性

在新应用程序中不鼓励使用此函数

函数原型:

int UF_ATTR_cycle(tag_t object, int *indx, int type, char title[UF_ATTR_MAX_TITLE_BUFSIZE], UF_ATTR_value_p_t value)

参数说明:

object(Input): 零件或对象标识

indx(Input/Output): 循环状态(输入)(0=开始),循环状态(输出)(0=完成遍历或没有属性返回,1=返回下一个属性)

type(Input): 遍历属性的类型,有效值(UF_ATTR_bool,UF_ATTR_integer,UF_ATTR_real,UF_ATTR_time,UF_ATTR_null,UF_ATTR_string,UF_ATTR_any,UF_ATTR_reference)

title[UF_ATTR_MAX_TITLE_BUFSIZE](Output): 属性标题(最大字符长度为UF_ATTR_MAX_TITLE_BUFSIZE)

value(Input/Output): 输入的属性值(输入)如果类型是UF_ATTR_string,则value->value.string必须指向将要返回字符串值的字符数组。如果类型为UF_ATTR_reference,则value->value.string必须指向将要返回字符串值的字符数组。属性类型的值(输出)如果类型为UF_ATTR_any,返回值的类型为UF_ATTR_string或UF_ATTR_reference,则返回的字符串是动态分配的,您必须使用UF_free来释放内存。如果返回值的类型是UF_ATTR_time,则该值将在执行程序的机器所在时区中。

注意事项:

1. 如果查询的属性类型是字符串UF_ATTR_string,则需要手动给value.value.string分配内存(value.value.string=new char[UF_ATTR_MAX_STRING_LEN+1]),并且在使用后释放(delete value.value.string),否则调用此函数会报错。

2. 当object为NULL_TAG时此函数什么也不做,没报错也没提示。