/*HEAD ICS2 HHH CLASSIFICATION */ /*============================================================================== Copyright (c) 2003-2005 UGS Corporation Unpublished - All Rights Reserved ==============================================================================*/ /** @file Published ITK functions to create/modify in-CLASS Objects */ /* */ #ifndef ICS2_H_INCLUDED #define ICS2_H_INCLUDED #include /** @ingroup ICS Common return values: #ICS_err_attribute_does_not_exist
#ICS_err_attribute_not_unique
#ICS_err_cannot_create_files
#ICS_err_class_does_not_exist
#ICS_err_could_not_open_file
#ICS_err_file_already_exists
#ICS_err_invalid_value
#ICS_err_invalid_property
#ICS_err_invalid_reference_type
#ICS_err_parent_is_not_shared @{ */ /** This value can be used as a value for theOptions parameter in ICS_ico_search(). In case a class id is passed in as a search criteria, this option will restrict the search to the specified class only. The default behavior will searach in all classes below the given one as well. */ #define ICS_SEARCH_THIS_CLASS_ONLY ( 1 << 0 ) /** This option allows to specify that strings will be searched case insensitive. Case sensitive is the default. */ #define ICS_SEARCH_CASE_INSENSITIVE ( 1 << 1 ) /** This value can be used as a value for theOptions parameter in ICS_ico_search(). This option specifies that the search result is sorted by the object id. The default behaviour is, that the search result is sorted by attributes, if attributes are given. If no attributes are given, the search result is sorted by the object id by default. */ #define ICS_SEARCH_ORDER_BY_ID ( 1 << 2 ) /** This value can be used as a value for theOptions parameter in ICS_ico_search(). This option specifies that the search result will contain metric and non-metric instances. By default only metric or non-metric will be found depending on the active unit system. */ #define ICS_SEARCH_IN_BOTH_UNIT_SYSTEMS ( 1 << 3 ) /** This value can be used as a value for theOptions parameter in ICS_ico_search(). This option specifies that the search result will contain only instances of the other unit system than the active one. */ #define ICS_SEARCH_IN_OTHER_UNIT_SYSTEM ( 1 << 4 ) #define ICS_ICO_IGNORE_WRITE_PROTECTION_ERRORS ( 1 << 0 ) #define ICS_MAX_CLASS_ATTR_SIZE 10 #define ICS_DBL_STR_SIZE 64 /** Defines valid values which can be used for theClassFlags parameter of #ICS_class_create */ typedef enum ICS_class_flags_s { CLASS_flag_englishUnitBase = (1 << 0), CLASS_flag_isGroup = (1 << 1), CLASS_flag_unit_system_both = (1 << 2), CLASS_flag_isStorrageClass = (1 << 4), CLASS_flag_isAssembly = (1 << 5) } ICS_class_flags_e; typedef enum ICS_class_properties_s { CLASS_prop_id = -600, /**< G */ CLASS_prop_parents = -603, /**< G */ CLASS_prop_name = -607 /**< GS */ } ICS_class_properties_e; typedef int(* ICS_auto_compute_function_t)( tag_t, int ); typedef struct ICS_auto_compute_attr_s { int auto_compute_attr_id; /**< Attribute id of the attribute to be auto computed */ ICS_auto_compute_function_t auto_compute_function; /**< Pointer to the function which computes the value or property of this attribute */ int num_attr_deps; /**< Number of other attributes from this class used for auto computation */ int attr_deps[ICS_MAX_CLASS_ATTR_SIZE]; /**< Attribute ids of dependent attributes */ }ICS_auto_compute_attr_t; /** Defines the structure to hold configured KeyLOV description for a specific class attribute. */ typedef struct ICS_keylov_descriptor_s { int attribute_id; /**< Class Attribute ID */ char* keylov_id; /**< Keylov ID */ char* keylov_name; /**< Keylov Name */ tag_t keylov_tag; /**< Keylov tag */ char* owning_site; /**< Keylov owning site */ int num_shared_sites; /**< number of shared sites */ char** shared_sites; /**< Keylov owning site */ int flags; /**< Keylov flags */ int value_count; /**< number of values */ char** keys; /**< keys */ char** values; /**< values */ logical* deprecation_status; /**< deprecation status */ char* selected_key; /**< selected key */ }ICS_keylov_descriptor_t, *ICS_keylov_descriptor_p_t; /** Defines the list of available auto compute modes */ typedef enum ICS_auto_compute_mode_s { AUTOCOMPUTE_MODE_load = 0, /**< manipulate attribute properties based on the input values and the custom logic in place This mode will not manipulate any attribute values as this is used during loading, and the values are already available in the database */ AUTOCOMPUTE_MODE_create = 1, /**< perform all the operations in the custom logic to manipulate attribute values as well as properties based on the default values */ AUTOCOMPUTE_MODE_edit = 2 /**< perform all the operations in the custom logic to manipulate attribute values as well as properties based on the updated values */ } ICS_auto_compute_mode_e; /** Defines the list of possible values for the unit system */ typedef enum ICS_unit_system_s { UNIT_SYSTEM_unspecified = -1, UNIT_SYSTEM_metric = 0, UNIT_SYSTEM_english = 1 } ICS_unit_system_e; /** Defines valid values for the flags property of the class attributes */ typedef enum ICS_class_attr_flags_s { CLASS_ATTR_vla = (1 << 0), CLASS_ATTR_external_vla = (1 << 1), CLASS_ATTR_mandatory = (1 << 2), CLASS_ATTR_protected = (1 << 3), CLASS_ATTR_unique = (1 << 4), CLASS_ATTR_propagated = (1 << 5), CLASS_ATTR_localValue = (1 << 6), CLASS_ATTR_reference = (1 << 7), CLASS_ATTR_auto_computed = (1 << 15), CLASS_ATTR_hidden = (1 << 20), CLASS_ATTR_localizable = (1 << 22), CLASS_ATTR_use_as_facet = (1 << 30) /* */ } ICS_class_attr_flags_e; /** Defines the list of available view types */ typedef enum ICS_view_type_s { VIEW_type_subclass = 0, /**< Leagacy type view where instances are stored in */ VIEW_type_defaultView = 1, /**< Default view with fixed Name "defaultView" will be created automatically if it does not exist */ VIEW_type_user = 2, VIEW_type_group = 3, VIEW_type_role = 4, /**< Currently not supported */ VIEW_type_project = 5, VIEW_type_table = 6, VIEW_type_indexing = 7, VIEW_type_template_view = 100, VIEW_type_mapping_internal = 200, VIEW_type_mapping_user = 201, VIEW_type_nxlib_search_criteria = 202, VIEW_type_nxlib_search_result = 203, VIEW_type_nxlib_retrieve = 204 } ICS_view_type_e; /** Defines the list of availabe types for #ICS_ask_children */ typedef enum ICS_child_type_s { ICS_CHILD_type_group = (1 << 0), ICS_CHILD_type_class = (1 << 1), ICS_CHILD_type_view = (1 << 2), /**< All type of views including subclasses */ ICS_CHILD_type_view_no_subclass = (1 << 3), /**< Real views only */ ICS_CHILD_type_subclass = (1 << 4), /**< Subclasses only */ ICS_CHILD_type_template_view = (1 << 5), /**< Template views only */ ICS_CHILD_type_all = ICS_CHILD_type_group | ICS_CHILD_type_class | ICS_CHILD_type_view } ICS_child_type_e; /** ICS_class_share_type_e defines the list of availabe types for ICS_class_share_incl_children */ typedef enum ICS_class_share_type_s { ICS_CLASS_SHARE_child_classes = (1 << 1), ICS_CLASS_SHARE_default_views = (1 << 2), ICS_CLASS_SHARE_specific_views = (1 << 3), /**< user, group, and role views (specified in the preference ICS_share_viewtypes) */ ICS_CLASS_SHARE_subclasses = (1 << 4), /**< subclasses only */ ICS_CLASS_SHARE_views = ( ICS_CLASS_SHARE_default_views | ICS_CLASS_SHARE_specific_views | ICS_CLASS_SHARE_subclasses ), ICS_CLASS_SHARE_all = ( ICS_CLASS_SHARE_child_classes | ICS_CLASS_SHARE_views ) } ICS_class_share_type_e; /** Defines the options for the ITK function ICS_class_list_children2. */ typedef enum ICS_list_children_options_s { ICS_CHILDREN_NO_COUNT = 0 , /**< */ ICS_CHILDREN_INSTANCE_COUNT = (1 << 0), /**< Get the instance count for each child*/ ICS_CHILDREN_CHILD_COUNT = (1 << 1), /**< Get the children count for each child*/ ICS_CHILDREN_VIEW_COUNT = (1 << 2), /**< Get the view count*/ ICS_CHILDREN_INCLUDE_HIDDEN_INSTANCES = (1 << 4), /**< Include hidden instances on instance count*/ ICS_CHILDREN_ALL_COUNT = ICS_CHILDREN_INSTANCE_COUNT | ICS_CHILDREN_CHILD_COUNT | ICS_CHILDREN_VIEW_COUNT } ICS_list_children_options_e; /** Specifies that a Classification class attribute uses the Reference Attribute definition that is set in the Classification dictionary. */ #define ICS_REFATTR_INHERITED 1 /** Specifies that a Classification class attribute uses the Reference Attribute definition that is set locally in the Classification class. */ #define ICS_REFATTR_CLASS_LOCAL 2 /** Reference Attribute type "classified object" (property or attribute of the classified object) */ #define ICS_REFATTR_CLASSIFIED_OBJECT 1 /** Reference Attribute type "master form" (property or attribute of the master form of the classified object). */ #define ICS_REFATTR_MASTERFORM 2 /** Reference Attribute type "related object" (property or attribute of an object that is related to the classified object). */ #define ICS_REFATTR_RELATED_OBJECT 3 /** Reference Attribute type "ico" (attribute of a different ico). */ #define ICS_REFATTR_ICO 4 /** The Reference Attribute value is read from the classified item OR (if the classified object is an item revision) from the item of the classified item revision */ #define ICS_REFATTR_ITEM_ATTR 1 /** The Reference Attribute specifies a TC property (not a POM attribute) */ #define ICS_REFATTR_PROPERTY ( 1 << 1 ) /** Internal use only. */ #define ICS_SUBCLASSES_TO_STORAGE_CLASSES ( 1 ) /** Copy the class even if it has unreadable children. */ #define ICS_IGNORE_UNREADABLE_CHILDREN ( 1 << 1 ) /** Copy the class including its inherited attributes. */ #define ICS_COPY_INHERITED_ATTRIBUTES ( 1 << 2 ) /** Don't actually copy the class / migrate the subclasses, only do the initial checks. */ #define ICS_DRY_RUN ( 1 << 3 ) /** Copy the class only, not the hierarchy. */ #define ICS_COPY_THIS_CLASS_ONLY ( 1 << 4 ) #define ICS_SHARED_IS_ERROR ( 1 << 5 ) /** Add attributes from new parent class to copy of view */ #define ICS_ADD_ATTRBIUTES_FROM_PARENT ( 1 << 6 ) #define ICS_DEFAULT_VIEW "defaultView" /** Don't stop moving part family templates if source attributes are mapped that do not exist in the target. */ #define ICS_IGNORE_MAPPING_ERRORS ( 1 ) /** if this option is passed to the function ICS_class_add_attributes() the function will try to remove the atrribute from any descendant and update the instances accordingly */ /* NOTE: The value of this definition must be in sync of the corresponding definition in sml_defines.h */ #define ICS_ADD_ATTRIBUTE_MOVE_UP ( 1 << 0 ) #define ICS_CLASS_USE_VIEW_IMAGE ( 1 << 0 ) #include #ifdef __cplusplus extern "C"{ #endif /** @name Class related Functions Common return values: #ICS_err_attribute_does_not_exist
#ICS_err_cannot_create_files
#ICS_err_class_does_not_exist
#ICS_err_could_not_open_file
#ICS_err_file_already_exists
#ICS_err_invalid_property
#ICS_err_invalid_reference_type
#ICS_err_invalid_value
#ICS_err_parent_is_not_shared
@{ */ /** Checks whether a class with the given classId exists in the database Return values: true : class exists
false : a class with this id does not exist */ extern ICS_API logical ICS_class_exists( const char* theClassId /**< (I) The unique id of an existing class */ ); /** Creates a new class as child of the given parent. The class is immediately created in the database. */ extern ICS_API int ICS_class_create( const char* theClassId, /**< (I) The unique id of the new class */ const char* theParentId, /**< (I) The unique id of the existing parent this should belong to */ const char* theName, /**< (I) The display name of the new class */ int theClassFlags, /**< (I) Flags to configure the class */ int theAttrCount, /**< (I) The number of attributes to add to the class valid range is 0 to 100 */ int* theAttrIds /**< (I) The attribute id's to be added to the class. The attributes must exist in the dictionary. */ ); /** Creates a new class as child of the given parent. A new id for this class will be generated and returned. */ extern ICS_API int ICS_class_create_unique( const char* theParentId, /**< (I) the unique id of the existing parent this should belong to */ const char* theName, /**< (I) the 'display' Name of the new class */ int theClassFlags, /**< (I) Flags to configure the class */ int theAttrCount, /**< (I) the number of attributes to add to the class valid range is 0 to 100*/ int *theAttrIds, /**< (I) the attribute id's to be added to the class. The Attributes must exist in the dictionary. */ char* *theNewClassId /**< (OF) the new generated unique id of the new class */ ); /** Permanently removes the class from the database @note Classes can only be removed if the are not referenced by child classes, views, or instances */ extern ICS_API int ICS_class_remove( const char* theClassId /**< (I) The unique id of an existing class */ ); /** Saves unsaved modifications to the database. All functions that require a call to this function are explicitly marked. */ extern ICS_API int ICS_class_save( const char* theClassId /**< (I) The unique id of the class */ ); /** Reloads the class definition from the database. All changes made be any function call that requires the use of ICS_class_save() will be lost. */ extern ICS_API int ICS_class_refresh( const char* theClassId /**< (I) The unique id of the class */ ); /** This has the same functionality as ICS_class_refresh() */ extern ICS_API int ICS_class_cancel( const char* theClassId /**< (I) The unique id of the class */ ); /** Sets the given property value for the specified property @note This function requires a subsequent call to ICS_class_save() to commit the changes to the database */ extern ICS_API int ICS_class_set_property( const char* theClassId, /**< (I) The unique id of an existing class */ const char* thePropertyName, /**< (I) The id of the property to set. Possible values are:
PARENT, NAME, SHORT_NAME, FLAGS
UNITSYSTEM, ABSTRACT, ISASSEMBLY
MULTIINST, USER1, USER2 */ const char* thePropertyValue /**< (I) The value for the property */ ); /** Returns the value for the specified property of an existing class */ extern ICS_API int ICS_class_ask_property( const char* theClassId, /**< (I) The unique id of an existing class */ const char* thePropertyName, /**< (I) The id of the property to set. Possible values:
CID, ISAGROUP, NUM_SHARED_SITES, ATTR_COUNT
also see ICS_class_set_property() */ char** thePropertyValue /**< (OF) The value for the property needs to be freed using #MEM_free */ ); /** Adds the given shared site. @note This function requires a subsequent call to ICS_class_save() to commit the changes to the database */ extern ICS_API int ICS_class_add_shared_site( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theSharedSite, /**< (I) The name of the shared site */ logical approveShareOfParents /**< (I) A class can only be shared, if its parents are shared.
false: if the parents are not shared theSharedSite will not be added
true: if the parents are not shared theSharedSite will be added to the specified class and its parents */ ); /** Returns the count and the values of the shared sites */ extern ICS_API int ICS_class_ask_shared_sites( const char* theClassId, /**< (I) The unique id of an existing class */ int* theSiteCount, /**< (O) The number of shared sites */ char*** theSharedSites /**< (OF) theSiteCount The shared sides. Need to be freed using #MEM_free */ ); /** Set the alias names for the class. Any previously existing alis names will be overwitten. This function can be used to remove all alias names by setting theCount = 0 @note This function requires a subsequent call to ICS_class_save() to commit the changes to the database */ extern ICS_API int ICS_class_set_alias_names( const char* theClassId, /**< (I) The unique id of an existing class */ int theCount, /**< (I) The number of alias names to set */ const char** theLanguages, /**< (I) The optional language identifiers of the alias names. Need to be at least an empty string (not NULL) */ const char** theAliasNames /**< (I) The alias names */ ); /** Add a new alias name to existing list of alias names @note This function requires a subsequent call to ICS_class_save() to commit the changes to the database */ extern ICS_API int ICS_class_add_alias_name( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theLanguage, /**< (I) The number of alias names to set */ const char* theAliasName /**< (I) The alias name */ ); /** returns all alias names of the class. */ extern ICS_API int ICS_class_ask_alias_names( const char* theClassId, /**< (I) The unique id of an existing class */ int *theCount, /**< (OF) The number of alias names to set */ char** *theLanguages, /**< (OF) The optional language identifiers of the alias names. Might be "" */ char** *theAliasNames /**< (OF) The alias names */ ); /** Imports a document for this class. An existing image will be overwritten. A document can be the class image or icon or any other type of document. */ extern ICS_API int ICS_class_import_document( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theDocumentType, /**< (I) Possible values are:
Image
Icon */ const char* theFileName /**< (I) The name of the file to be imported */ ); /** Exports all documents of the given type attached to this class */ extern ICS_API int ICS_class_export_document( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theDocumentType, /**< (I) For possible values see ICS_class_import_document() */ const char* theOutputDirectory, /**< (I) The directory name to put the files into */ logical overwriteExistingFiles, /**< (I) */ int* theFileCount, /**< (O) The number of files exported */ char*** theFileNames /**< (OF) theFileCount the names of the files put into theOutputDirectory */ ); extern ICS_API int ICS_class_ask_document_fileId( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theDocumentType, /**< (I) For possible values see ICS_class_import_document() */ char** theFileId /**< (OF) */ ); /** Returns the types and tags of all documents according to the dataset of the given class All parameters ecept for theClassId accept NULL pointer to indicate that this parameter should not be returned */ extern ICS_API int ICS_class_ask_documents( const char* theClassId, /**< (I) The unique id of an existing class */ int* theDocumentCount, /**< (O) The number of named references */ char*** theDocumentTypes, /**< (OF) theDocumentCount The reference names of the documents */ tag_t** theDocumentTags /**< (OF) theDocumentCount The tags of the documents */ ); /** Remove all images assigned to this class */ extern ICS_API int ICS_class_remove_document( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theDocumentType /**< (I) For possible values see ICS_class_import_document() */ ); /** Adds the given attributes to an existing class
Note: this function returns SML_ERR_NO_INSTANCE_FOUND if the class does not exist */ extern ICS_API int ICS_class_add_attributes( const char* theClassId, /**< (I) The unique id of an existing class */ int theAttrCount, /**< (I) The number of attributes to add to the class valid range is 0 to 100 */ int* theAttrIds /**< (I) The attribute id's to be added to the class. The Attributes must exist in the dictionary. */ ); /** Extends ICS_class_add_attributes by adding theOptions paramter. */ extern ICS_API int ICS_class_add_attributes2( const char *theClassId, /**< (I) The unique id of an existing class. */ int theAttrCount, /**< (I) The number of attributes to add to the class valid range is 0 to 100 */ int *theAttrIds, /**< (I) The attribute id's to be added to the class. The Attributes must exist in the dictionary. */ int theOptions /**< (I) Possible values are: ICS_ADD_ATTRIBUTE_MOVE_UP: Will remove the attribute to add in any descendant and update the ICOs accordingly. This will only work for local classes/hierarchies */ ); /** Returns all attributes of the given class */ extern ICS_API int ICS_class_ask_attributes( const char* theClassId, /**< (I) The unique id of an existing class */ int* theAttributeCount, /**< (O) The attribute count */ tag_t** theAttributeTags, /**< (O) The tags of attributes */ int** theAttributeIds /**< (OF) theAttributeCount */ ); /** Remove the given attributes from the class. @note Attributes can only be removed under certain restrictions. */ extern ICS_API int ICS_class_remove_attributes( const char* theClassId, /**< (I) The unique id of an existing class */ int theAttrCount, /**< (I) The number of attributes to remove from the class */ int* theAttrIds /**< (I) The attribute IDs to be removed from the class */ ); /** Sets the property value for the property in the specified attribute of the class @note This function requires a subsequent call to ICS_class_save() to commit the changes to the database @note If you want to set the ATTRIBUTEID please use the following ITK functions:
ICS_class_remove_attributes() and ICS_class_add_attributes() */ extern ICS_API int ICS_class_set_attr_property( const char* theClassId, /**< (I) The unique id of an existing class */ int theAttributeId, /**< (I) The id of the attribute to set the property in. */ const char* thePropertyName, /**< (I) The id of the property to set Possible values are:
ANNOTATION, MIN, MAX, FLAGS,
MANDATORY, PROTECTED, UNIQUE, PROPAGATED,
ARRAY_SIZE, ARRAY, EXTERNAL_ARRAY, REFERENCE,
LOCAL_VALUE, USER1, USER2 */ const char* thePropertyValue /**< (I) The value for the property */ ); /** Asks for the value of the property in the specified attribute of the class */ extern ICS_API int ICS_class_ask_attr_property( const char* theClassId, /**< (I) The unique id of an existing class */ int theAttributeId, /**< (I) The id of the attribute to set the property in */ const char* thePropertyName, /**< (I) The id of the property to ask. For possible values see ICS_class_set_attr_property() and additionally SMINDEX, DBINDEX, CID, _NAME, _FORMAT, LOCAL_USER1, LOCAL_USER2 */ char** thePropertyValue /**< (OF) The value for the property. Needs to be freed using #MEM_free. */ ); /*===+++======================================================================== ** ICS_class_search returns information about the classes found by evaluating theQuery ** ** 3 attribute name ** theSortOption : specifies the attribute to be used for sorting the result ** Supported values are: ** -600 class id (default if 0 or any invalid value is specified ) ** -607 class name ** -608 class short name ** -612 user data 1 ** -613 user data 2 ** ** theCount : the number of classes matching theQuery ** ** NOTE: The input to all following values can be NULL to indicate ** that the output should not be returned. ** ** theTags : the tags of the found classes ** theTypes : the types of the classes ** Posible values are: Group, Class, StorrageClass ** theCIDs : the unique class ids ** theName : the class names ** theInstancesCounts : the number of instances stored in each class (including subclass instances) ** theChildCounts : the number of children (of type Group,Class or StorrageClass) each class has ** theViewCounts : the number of views for each class ** theSubClassCounts : the number of SML-SubClasses for each class ** ** ** Return value : ** ITK_OK ** Error discovered ** */ extern ICS_API int ICS_class_search( const char* theQuery, /**< (I) Expression of type attributeId operator value Supported values for attributeId are:
-600 class id
-607 class name
-601 class type
-608 short name
-602 group id
-612 user data 1
-613 user data 2
8 attribute id
3 attribute name */ int theSortOption, /**< (I) Attribute Id to sort by*/ int *theCount, /**< (O) Number classes found */ tag_t **theTags, /**< (OF) Tgas of the classes found */ char* **theTypes, /**< (OF) theCount Types of the classe */ char* **theCIDs, /**< (OF) theCount Ids of the classe */ char* **theNames, /**< (OF) theCount Names of the classes */ int **theInstancesCounts, /**< (OF) Number of instances stored in the class and any child class */ int **theChildCounts, /**< (OF) Number of children of the class */ int **theViewCounts, /**< (OF) Number of views of the class */ int **theSubClassCounts /**< (OF) Number of subclasses of the class */ ); /** Retrieves the tag and the id of the parent of the given class
@returns */ extern ICS_API int ICS_class_ask_parent( const char* theClassId, /**< (I) The unique id of an existing class */ tag_t* theParentTag, /**< (O) The tag of the Parent */ char** theParentId /**< (OF) The Parent's Id */ ); /** Retrieves the parents for the specified class of an existing class
@returns */ extern ICS_API int ICS_class_ask_parents( const char* theClassId, /**< (I) The unique id of an existing class */ logical includeGroups, /**< (I) False : only parents of type class (where the given class inherits from) are returned
True : the groups up to and including SAM are returned as well */ int* theParentCount, /**< (O) The number of classes returned */ tag_t** theParentTags, /**< (OF) theParentCount The list of unique id's of the parents
null if theParentCount == 0
Needs to be freed using #MEM_free */ char*** theParentIds /**< (OF) theParentCount The list of unique id's of the parents
null if theParentCount == 0
Needs to be freed using #MEM_free */ ); /** Retrieves the children for the specified class of an existing class */ extern ICS_API int ICS_class_ask_children( const char* theClassId, /**< (I) The unique id of an existing class */ int theChildTypeFilter, /**< (I) The following values from #ICS_child_type_e:
#ICS_CHILD_type_class
#ICS_CHILD_type_view */ int* theChildCount, /**< (O) The number of classes returned */ char*** theChildren /**< (OF) theChildCount The list of unique id's of the childern
null if theChildCount == 0. Needs to be freed using #MEM_free */ ); /** Retrieves the children for the specified class of an existing class The following parameters accept NULL pointer to indicate that this parameter should not be returned: theChildCount, theChildernTags, theChildrenIds, theChildrenTypes @note The legacy objects SMLClass and SMLSubClass are treated as class and storageClass */ extern ICS_API int ICS_class_list_children( const char* theClassId, /**< (I) The unique id of an existing class */ int theChildTypeFilter, /**< (I) The following values from #ICS_child_type_e:
#ICS_CHILD_type_class
#ICS_CHILD_type_view */ int theSortOption, /**< (I) */ int* theChildCount, /**< (O) The number of classes returned */ tag_t** theChildrenTags, /**< (OF) theChildCount The POM tags of the children */ char*** theChildrenIds, /**< (OF) theChildCount The unique id's of the childern */ char*** theChildrenTypes, /**< (OF) theChildCount The types of the children
Group
Class
StorrageClass
View */ char*** theChildrenNames, /**< (OF) The (display) names of the children */ int** theInstanceCounts, /**< (OF) The number of instances stored in the class and all its descendents */ int** theChildrenCounts, /**< (OF) The number of child classes for each child */ int** theViewCounts /**< (OF) The number of view for each child */ ); /** Provides the same values as #ICS_class_list_children with the exception that: */ extern ICS_API int ICS_WEB_class_list_children( const char *theClassId, /**< (I)> */ int theChildTypeFilter, /**< (I) */ int theSortOption, /**< (I) */ int *theChildCount, /**< (O) */ char* **theChildrenUid, /**< (OF) theChildCount */ char* **theChildrenIds, /**< (OF) theChildCount */ char* **theChildrenTypes, /**< (OF) theChildCount */ char* **theChildrenNames, /**< (OF) theChildCount */ int **theInstanceCounts, /**< (OF) theChildCount */ int **theChildrenCounts, /**< (OF) theChildCount */ int **theViewCounts /**< (OF) theChildCount */ ); /** Retrieves the children for the specified class of an existing class The following parameters accept NULL pointer to indicate that this parameter should not be returned: theChildCount, theChildernTags, theChildrenIds, theChildrenTypes @note The legacy objects SMLClass and SMLSubClass are treated as class and storageClass */ extern ICS_API int ICS_class_list_children2( const char* theClassId, /**< (I) The unique id of an existing class */ int theChildTypeFilter, /**< (I) The following values from #ICS_child_type_e:
#ICS_CHILD_type_class
#ICS_CHILD_type_view */ int theSortOption, /**< (I) */ int theOptions, /**< (I) The options for the children search:
#0 #ICS_CHILDREN_INSTANCE_COUNT #ICS_CHILDREN_CHILD_COUNT #ICS_CHILDREN_VIEW_COUNT #ICS_CHILDREN_ALL_COUNT #ICS_CHILDREN_INCLUDE_HIDDEN_INSTANCES */ int* theChildCount, /**< (O) The number of classes returned */ tag_t** theChildrenTags, /**< (OF) theChildCount The POM tags of the children */ char*** theChildrenIds, /**< (OF) theChildCount The unique id's of the childern */ char*** theChildrenTypes, /**< (OF) theChildCount The types of the children
Group
Class
StorrageClass
View */ char*** theChildrenNames, /**< (OF) theChildCount The (display) names of the children */ int** theInstanceCounts, /**< (OF) theChildCount The number of instances stored in the class and all its descendents */ int** theChildrenCounts, /**< (OF) theChildCount The number of child classes for each child */ int** theViewCounts, /**< (OF) theChildCount The number of view for each child */ char*** theIconImageTickets, /**< (OF) theChildCount The icon image ticket for each child */ char*** theClassImageTickets /**< (OF) theChildCount The class image ticket for each child */ ); /** Retrieves the most important information about a class @note If theClassId has the format xxx::yyy it is treated as a legacy SMLSubClass */ extern ICS_API int ICS_class_describe( const char* theClassId, /**< (I) The unique id of an existing class */ char** theParent, /**< (OF) The id of the parent class or group */ int* theType, /**< (O) Group, Class, StorageClass */ char** theName, /**< (OF) The display name for the class */ char** theShortName, /**< (OF) An optional short version of theName */ char** theDescription, /**< (OF) A user oriented description of the class */ char** theUserData1, /**< (OF) Customer specific values not used by UGS */ char** theUserData2, /**< (OF) Customer specific values not used by UGS */ int* theOptions, /**< (O) Bit encoded values from #ICS_class_flags_e */ int* theInstanceCount, /**< (O) The number of instances stored in this class or any of its children */ int* theChildrenCount, /**< (O) The number of children of this class */ int* theViewCount /**< (O) The number of views defined for this class */ ); /** @note The Attributes returned by this function are filtered through the view defined for the user of this call */ extern ICS_API int ICS_class_describe_attributes( const char* theClassId, /**< (I) The unique id of an existing class */ int* theCount, /**< (O) The number of attributes of this class */ int** theIds, /**< (OF) theCount The attribute id */ char*** theNames, /**< (OF) theCount The display name */ char*** theShortNames, /**< (OF) theCount The short version of the display name */ char*** theAnnotations, /**< (OF) theCount The annotation */ int** theArraySize, /**< (OF) theCount 1 for non vla attributes, > 1 for vla attribute */ int** theFormat, /**< (OF) theCount The internal format definition. Use ICS_describe_format() to get details. */ char*** theUnit, /**< (OF) theCount */ char*** theMinValues, /**< (OF) theCount Minimum allowed value ( valid for integer and float attributes) */ char*** theMaxValues, /**< (OF) theCount Maximum allowed value ( valid for integer and float attributes) */ char*** theDefaultValues, /**< (OF) theCount Default value for new Instances */ char*** theDescriptions, /**< (OF) theCount The attribute description from the dictionary */ int** theOptions /**< (OF) theCount Bit encoded values from #ICS_class_attr_flags_e */ ); /** Retrieves the definition of a view given the view tag. Restrictions: This function can only be used with views. */ extern ICS_API int ICS_view_describe_view ( tag_t view, /**< (I) Tag of the view */ int* nAttributes, /**< (O) Number of attributes defined for the given view */ int** uncts, /**< (OF) nAttributes UNCT's of the attributes */ int** formats, /**< (OF) nAttributes Attributes formats */ int** nonMetricFormats, /**< (OF) nAttributes Attributes Non Metric formats */ char*** attributeIds, /**< (OF) nAttributes Attribute Ids */ char*** attributeNames, /**< (OF) nAttributes Attribute names */ char*** shortNames, /**< (OF) nAttributes Short names for the attributes */ char*** units, /**< (OF) nAttributes Units for the attributes (NULL if no unit is defined for the attribute) */ char*** configBefore, /**< (OF) nAttributes */ char*** configField, /**< (OF) nAttributes */ char*** configAfter, /**< (OF) nAttributes */ int** flags, /**< (OF) nAttributes */ char*** metricMin, /**< (OF) nAttributes Metric Minimum values for the attributes */ char*** metricMax, /**< (OF) nAttributes Metric Maximum values for the attributes */ char*** nonMetricMin, /**< (OF) nAttributes Non Metric Minimum values for the attributes */ char*** nonMetricMax, /**< (OF) nAttributes Non Metric Maximum values for the attributes */ char*** metricDefaultValue, /**< (OF) nAttributes Metric Default values for the attributes */ char*** nonMetricDefaultValue/**< (OF) nAttributes Non Metric Default values for the attributes */ ); /** @deprecated #ICS_class_ask_icos deprecated in Teamcenter 11.2.2. Use #ICS_ico_search instead. Retrieves all instances (ICOs) of the given class The following parameters accept NULL pointer to indicate that this parameter should not be returned: theICOTags, theICOUIDs, theICOIds, theClassId, theWSOTag */ TC_DEPRECATED("11.2.2","ICS_class_ask_icos","ICS_ico_search") extern ICS_API int ICS_class_ask_icos( const char* theClassId, /**< (I) The unique id of an existing class */ logical includeFromChildren, /**< (I) */ int* theCount, /**< (O) The number of ICO tags returned */ tag_t** theICOTags, /**< (OF) theCount The list of ICOs of the given class */ char*** theICOUIDs, /**< (OF) theCount */ char*** theICOIds, /**< (OF) theCount The IDs of the ICOs */ char*** theClassIds, /**< (OF) theCount The class ids of the ICOs */ tag_t** theWSOTags, /**< (OF) theCount The tags of the objects the ICOs are classifying */ char*** theWSOUIDs /**< (OF) theCount */ ); /** @deprecated #ICS_class_search_icos deprecated in Teamcenter 11.2.2. Use #ICS_ico_search instead. */ TC_DEPRECATED("11.2.2","ICS_class_search_icos","ICS_ico_search") extern ICS_API int ICS_class_search_icos( const char* theClassId, /**< (I) */ logical searchInChildren, /**< (I) */ int theExpressionCount, /**< (I) */ int* theAttrIds, /**< (I) */ char** theAttrExpressions, /**< (I) */ int* theCount, /**< (O) */ tag_t** theICOTags, /**< (OF) theCount */ char*** theICOUIDs, /**< (OF) theCount */ char*** theICOIds, /**< (OF) theCount */ char*** theClassIds, /**< (OF) theCount */ tag_t** theWSOTags, /**< (OF) theCount */ char*** theWSOUIDs /**< (OF) theCount */ ); /** Determines whether theClassId is a descendant of theAncestor.
This will cover classes and parents. @returns */ extern ICS_API int ICS_class_is_descendant( const char* theClassId, /**< (I) */ const char* theAncestor, /**< (I) */ logical* theVerdict /**< (O) */ ); /** If theClassTag is a valid class, returns the id of the class */ extern ICS_API int ICS_class_ask_id( tag_t theClassTag, /**< (I) The tag of the Class */ char** theClassId /**< (OF) The Id of the Class */ ); /** Retrieves the class IDs of a list of classes. @note Any invalid entry in @p theClasses will be represented by an empty string in the output array @p theClassIds. @returns */ extern ICS_API int ICS_class_ask_ids( unsigned int theCount, /**< (I) Number of classes */ const tag_t* theClasses, /**< (I) theCount Classes */ char* **theClassIds /**< (OF) theCount IDs corresponding to the given classes.
The array is packed, which means that the memory is deallocated by calling #MEM_free on the container only. */ ); /** If theClassId is a valid class, returns the POM tag of the class
@returns */ extern ICS_API int ICS_class_ask_tag( const char* theClassId, /**< (I) The Id of the Class */ tag_t* theClassTag /**< (O) The tag of the Class */ ); /** Call this function to define an attribute ? given by the ID of the Classification class and its attribute ID - as reference attribute. @note Use 0 as theReferenceState to define the attribute to be a normal attribute (non reference attribute). @note This function requires a subsequent call to #ICS_class_save to commit the changes to the database. */ int ICS_API ICS_class_set_attr_as_reference( const char *theClassId, /**< (I) Class ID of the Classification class where you want to define the reference attribute.
The parameter must specify an existing class ID. */ int theAttributeID, /**< (I) Attribute ID of the attribute that you want to define as reference attribute.
The parameter must specify the attribute ID of an attribute that is used in Classification class theClassId. */ int theReferenceState, /**< (I) 0 - non reference attribute
#ICS_REFATTR_INHERITED - the Reference Attribute definition from the Classification dictionary will be used
#ICS_REFATTR_CLASS_LOCAL - set a Reference Attribute definition for the attribute locally in this class (only in this case the following parameters are used) */ int theReferenceAttributeType, /**< (I) One of the following values: */ int theFlags, /**< (I) Set to 0 or any combination of:
#ICS_REFATTR_PROPERTY: set this flag if you want to define an IMAN property - do not set it if you want to define a POM Attribute
#ICS_REFATTR_ITEM_ATTR: set this flag if you want to define a reference attribute of an item. This means that if the classified object is an item revision the reference attribute value will be read from the item (or its masterform / an object that is related to the item) of the classified item revision. */ const char *theClassName, /**< (I) Depending on theReferenceAttributeType specify the following value: (The second alternatives are valid if #ICS_REFATTR_PROPERTY is specified in theFlags) */ const char *theAttrName, /**< (I) This parameter must not be NULL.
Depending on theReferenceAttributeType specify the following value: (The second alternatives are valid if #ICS_REFATTR_PROPERTY is specified in theFlags) */ const char *theRelationName /**< (I) If theReferenceAttributeType is #ICS_REFATTR_RELATED_OBJECT: name of the IMAN Relation with which the related object is attached to the classified object (may be NULL to specify that any relation is possible).
For all other Reference Attribute types this parameter is not used. */ ); /** Call this function to ask the reference attribute properties of an attribute in a certain Classification class (given by the Class ID and the attribute ID). */ int ICS_API ICS_class_ask_attr_reference_props( const char **theClassId, /**< (I) Class ID of the Classification class in which the attribute is used. */ int theAttributeID, /**< (I) Attribute ID of the Classification class attribute from which you want to read the reference attribute definition. The parameter must specify an attribute ID of an attribute that is used in Classification class theClassId. */ int *theReferenceAttributeState,/**< (O) 0 - non reference attribute
#ICS_REFATTR_INHERITED - the Reference Attribute definition is taken from the Classification dictionary (in this case the subsequent parameters are set to the values defined in the Classification dictionary)
#ICS_REFATTR_CLASS_LOCAL - the Reference Attribute definition is specified locally in the Classification class */ int *theReferenceAttributeType, /**< (O) One of the following values: */ int *theFlags, /**< (O) 0 or any combination of:
#ICS_REFATTR_PROPERTY: this flag is set if an IMAN property is defined - if it is not set then a POM attribute is defined
#ICS_REFATTR_ITEM_ATTR: this flag is set if a reference attribute of an item is defined. This means that if the classified object is an item revision the reference attribute value will be read from the item (or its masterform / an object that is related to the item) of the classified item revision.*/ char **theClassName, /**< (OF) Depending on theReferenceAttributeType this parameter specifies one the following values: (The second alternatives are valid if #ICS_REFATTR_PROPERTY is set in theFlags) */ char **theAttrName, /**< (OF) Depending on theReferenceAttributeType this parameter specifies the following value: (The second alternatives are valid if #ICS_REFATTR_PROPERTY is set in theFlags) */ char **theRelationName /**< (OF) If theReferenceAttributeType is #ICS_REFATTR_RELATED_OBJECT: name of the IMAN Relation with which the related object is attached to the classified object (may be NULL to specify that any relation is possible).
For all other Reference Attribute types this parameter is set to NULL. */ ); /** The following function copies theClass to a new Classification class with theNewCid ID and theNewParent parent; afterwards the descendants whose IDs are contained within theOldIDs are copied under the new Class with the IDs specified in theNewIDs. The function fails if one of the following error conditions is met: Moreover a warning is logged if If these checks succeed and theClass itself is successfully copied, then further errors during the subsequent copy operation are logged to the syslog file but do not lead to a rollback. */ extern ICS_API int ICS_class_copy( const char *theClass, /**< (I) The ID of the Classification class to be copied */ const char *theNewCidIn, /**< (I) The ID of the Classification class that is created as a copy of theClass */ const char *theNewParent, /**< (I) The ID of the Classification class under which the copy of theClass is created */ int theOptions, /**< (I) options - valid values are: */ int theChildCountIn, /**< (I) Count of the descendants of theClass that shall be copied together with theClass. */ const char **theOldIDsIn, /**< (I) IDs of the descendants to copy. theOldIDs must containthe IDs as CID (for Classification classes) or CID::SID (for Classification views).*/ const char **theNewIDsIn, /**< (I) IDs of the copies. theNewIDs must contain the IDs of the objects to be created as NEW_CID (for Classification classes) or NEW_SID (for Classification Views).*/ char **theNewCidOut, /**< (OF) The ID of the Classification class that is created as a copy of theClass. */ int *theChildCountOut, /**< (O) Count of the descendants that were successfully copied. */ char ***theOldIDsOut, /**< (OF) theChildCountOut IDs of the descendants the ware successfully copied. theOldIDsOut contain the IDs as CID (for Classification classes) or CID::SID (for Classification views).*/ char ***theNewIDsOut /**< (OF) theChildCountOut IDs of the copies. theNewIDs contain the IDs of the objects that were created as NEW_CID (for Classification classes) or NEW_SID (for Classification Views).*/ ); /** The following function moves theClassToMove under theNewParent. The operation will be done the following way: When this is done the class children and views (in other words: all descendants of the class) will be processed in the same way. If something goes wrong there will not be a rollback. Moreover the operation will continue even if an error occured. As many objects as possible will be moved. After the objects have been renamed and copied the old objects will be deleted. The function will fail completely if: */ int ICS_API ICS_class_move( const char* theClassToMove, /**< (I) The ID of the Classification class to be moved */ const char* theNewParent, /**< (I) The ID of the Classification class under which the theClassToMove is moved */ int *theFailedCount, /**< (O) The number of objects that could not be moved (in case of classes only the top level object is counted)*/ char** *theFailedObjects /**< (OF) theFailedCount The IDs of the objects that could not be moved*/ ); extern ICS_API int ICS_class_move_partfamily_templates( const char *theSourceClassId, const char *theTargetClassId, int theOptions ); /** The following function shares theClass to theSites and afterwards shares the following objects:
  1. class children (and their children and so on) if theOptions contains ICS_CLASS_SHARE_child_classes
  2. subclasses (also the subclasses of class children if ICS_CLASS_SHARE_child_classes is specified ) if ICS_CLASS_SHARE_subclass is specified i theOptions
  3. default views (also the default views of class children if ICS_CLASS_SHARE_child_classes is specified ) if ICS_CLASS_SHARE_default_view is specified in theOptions
  4. user, role and group views (also these types of views of class children if ICS_CLASS_SHARE_child_classes is specified ) if ICS_CLASS_SHARE_specific_view is specified in theOptions (the preference ICS_share_viewtypes is evaluated to find out which of these types will be shared)
It is no error to specify sites to which theClass is already shared (this enables you share the children of theClass although theClass itself is already shared). The function fails if theClass's parent is not shared to at least one of theSites and shareParentsToo is false. If theClass is successfully shared then no error is returned (but logged in the syslog file) if sharing any of the children fails. */ extern ICS_API int ICS_class_share_incl_children( const char *theClass, /**< (I) the class to be shared */ int theSiteCount, /**< (I) the count of the sites to which the class (and possibly children) will be shared */ const char **theSites, /**< (I) the names of the sites to which the class (and possibly children) will be shared */ int theOptions, /**< (I) specifies which of the children of theClass will be shared (see above). */ logical shareParentsToo /**< (I) If true then the parents of theClass will be shared to theSites, too. */ ); /** Retrieves the dependency configuration settings of the attributes for the given class. @returns */ extern ICS_API int ICS_class_ask_attr_dep_config( tag_t class_tag, /**< (I) The tag of the class*/ int *attr_count, /**< (O) The number of class attributes containing dependency settings */ int **attr_ids, /**< (OF) attr_count The class attribute IDs */ char* **dependency_attributes, /**< (OF) attr_count The dependency attribute values. The output string array is SM-packed, hence should be freed by calling #MEM_free on the container only. */ char* **dependency_configurations /**< (OF) attr_count The dependency configuration values. The output string array is SM-packed, hence should be freed by calling #MEM_free on the container only. */ ); /** Retrieves the dependency configuration settings of the attributes for the given class. If the value for @p class_id is invalid, no error is returned. @returns */ extern ICS_API int ICS_class_ask_attr_dep_config_by_id( const char* class_id, /**< (I) The ID of the class*/ int *attr_count, /**< (O) The number of class attributes containing dependency settings */ int **attr_ids, /**< (OF) attr_count The class attribute IDs */ char* **dependency_attributes, /**< (OF) attr_count The dependency attribute values */ char* **dependency_configurations /**< (OF) attr_count The dependency configuration values */ ); /** @} */ /** @name View/Subclass related Functions Common return values: #ICS_err_attribute_does_not_exist
#ICS_err_cannot_create_files
#ICS_err_class_does_not_exist
#ICS_err_could_not_open_file
#ICS_err_file_already_exists
#ICS_err_invalid_property
#ICS_err_invalid_reference_type
#ICS_err_invalid_value
#ICS_err_parent_is_not_shared
#ICS_err_view_does_not_exist @{ */ /** Checks whether a class with the given classId exists in the database Return values: true : view exists
false : a view with this id does not exist */ extern ICS_API logical ICS_view_exists( const char* theClassId, /**< (I) The unique id of a class */ const char* theViewId /**< (I) The unique id of a view */ ); /** Creates a view for the specified class */ extern ICS_API int ICS_view_create( const char* theClassId, /**< (I) The unique id of an existing class the view should belong to */ const char* theViewId, /**< (I) The ID of the view which needs to be unique within the scope of the class the view belongs to */ ICS_view_type_e theViewType, /**< (I) Defines how the view is used:
#VIEW_type_subclass - legacy type can only be added to abstract classes with no further class children
#VIEW_type_defaultView - optionaly, will be autogenerated if needed and does not exist
The id is fixed: "defaultView"
#VIEW_type_user, #VIEW_type_group, #VIEW_type_role
For these views, theViewId needs to be set to the user, group or role Id. */ const char* theName, /**< (I) The view name is optional except for #VIEW_type_subclass */ int theAttrCount, /**< (I) The number of Attributes added to the view */ int* theAttrIds /**< (I) The Attributes added to the view (need to exist in the class) */ ); /** Permanently removes the view from the database @note Views of type #VIEW_type_subclass can only be removed if no instances are stored in it */ extern ICS_API int ICS_view_remove( const char* theClassId, /**< (I) Id of the class the view to remove is assigned to */ const char* theViewId /**< (I) Id of the view */ ); /** Saves unsaved modifications to the database. All functions that require a call to this function are explicitly marked. */ extern ICS_API int ICS_view_save( const char* theClassId, /**< (I) The unique id of the class */ const char* theViewId /**< (I) The unique id of a view in the specified class */ ); /** Reloads the view definition from the database. All changes made by any function call that requires the use of ICS_view_save() will be lost. */ extern ICS_API int ICS_view_refresh( const char* theClassId, /**< (I) The unique id of the class */ const char* theViewId /**< (I) The unique id of a view in the specified class */ ); /** Has the same functionality as ICS_view_refresh() */ extern ICS_API int ICS_view_cancel( const char* theClassId, /**< (I) The unique id of the class */ const char* theViewId /**< (I) The unique id of a view in the specified class */ ); /** Sets the given property value for the specifed property @note This function requires a subsequent call to ICS_view_save() to commit the changes to the database */ extern ICS_API int ICS_view_set_property( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theViewId, /**< (I) The unique id of a view in the specified class */ const char* thePropertyName, /**< (I) The id of the property to set. Possible values are:
SID, TYPE, TYPENAME, NAME, SHORT_NAME, USER1, USER2, FLAGS */ const char* thePropertyValue /**< (I) The value for the property */ ); /** Returns the value for the specifed property of an existing view. */ extern ICS_API int ICS_view_ask_property( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theViewId, /**< (I) The unique id of a view in the specified class */ const char* thePropertyName, /**< (I) The name of the property to set. Possible values: see ICS_class_set_property() and additionally CID, NUM_SHARED_SITES */ char** thePropertyValue /**< (OF) The value for the property. Needs to be freed using SM_free */ ); /** Adds the given shared site @note This function requires a subsequent call to ICS_view_save() to commit the changes to the database */ extern ICS_API int ICS_view_add_shared_site( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theViewId, /**< (I) The unique id of a view in the specified class */ const char* theSharedSite, /**< (I) The name of the shared site */ logical approveShareOfParents /**< (I) A view can only be shared, if its parents are shared.
false: if the parents are not shared theSharedSite will not be added
true: if the parents are not shared theSharedSite will be added to the specified class and its parents */ ); /** Returns the count and the values of the shared sites */ extern ICS_API int ICS_view_ask_shared_sites( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theViewId, /**< (I) The unique id of a view in the specified class */ int* theSiteCount, /**< (O) The number of shared sites */ char*** theSharedSites /**< (OF) theSiteCount The shared sides. Need to be freed using #MEM_free */ ); extern ICS_API int ICS_view_add_attributes( const char* theClassId, /**< (I) The unique Id of the class */ const char* theViewId, /**< (I) The View Id */ int theAttrCount, /**< (I) The attribute count */ int* theAttrIds /**< (I) The attributes to be added */ ); extern ICS_API int ICS_view_remove_attributes( const char* theClassId, /**< (I) The unique Id of the class */ const char* theViewId, /**< (I) The View Id */ int theAttrCount, /**< (I) The attribute count */ int* theAttrIds /**< (I) The attributes to be removed */ ); /** Sets the property value for the property in the specified attribute of the view @note This function requires a subsequent call to ICS_view_save() to commit the changes to the database */ extern ICS_API int ICS_view_set_attr_property( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theViewId, /**< (I) The unique id of a view in the specified class */ int theAttributeId, /**< (I) The id of the attribute to set the property in */ const char* thePropertyName, /**< (I) The id of the property to set. Possible values are:
MIN, MAX, FLAGS, FLAGS1, FLAGS2, TEXT, TEXT1, TEXT2, USER1, USER2 */ const char* thePropertyValue /**< (I) The value for the property */ ); /** Asks for the value of the property in the specified attribute of the view */ extern ICS_API int ICS_view_ask_attr_property( const char* theClassId, /**< (I) The unique id of an existing class */ const char* theViewId, /**< (I) The unique id of a view in the specified class */ int theAttributeId, /**< (I) The id of the attribute to set the property in */ const char* thePropertyName, /**< (I) The id of the property to ask. Possible values: see ICS_view_set_attr_property() and additionally UNCT, LINDEX, SMINDEX, MANDATORY, PROTECTED */ char** thePropertyValue /**< (OF) The value for the property. Needs to be freed using #MEM_free */ ); /** Returns all attributes of the given view */ extern ICS_API int ICS_view_ask_attributes( const char* theClassId, /**< (I) The unique id of the class */ const char* theViewId, /**< (I) The View Id */ int* theAttributeCount, /**< (O) The attribute count */ int** theAttributeIds /**< (OF) theAttributeCount the attribute Ids */ ); /********************************************************************************* ** */ typedef struct ICS_view_attribute_descriptor_s { int id; char* name; char* shortName; int format; char* unit; char* defautValue; char* minValue; char* maxValue; char* preConfigOptions; char* configOptions; char* postConfigOptions; int flags; char* userData1; char* userData2; }ICS_view_attribute_descriptor_t, *ICS_view_attribute_descriptor_p_t; /********************************************************************************* ** */ typedef struct ICS_view_descriptor_s { char* classId; char* viewId; char* unitSystem; int type; char* name; int options; char* userData1; char* userData2; int attributeCount; ICS_view_attribute_descriptor_p_t attributes; } ICS_view_descriptor_t, *ICS_view_descriptor_p_t; /** Returns the most important information about a view and its attributes theUnitSystem: Possible values are "", "metric" and "non-metric" If "non-metric" is specified for a class that supports both unit systems the non-metric values are returned. Otherwise the metric values are returned. If the class is either metric or non-metric theUnitSystem is ignored. theUserMode: if true the display names of the units will be returned. */ extern ICS_API int ICS_view_describe( const char* theClassId, /**< (I) The unique id of the class */ const char* theViewId, /**< (I) The View Id */ const char* theUnitSystem, /**< (I) Values can be "", "metric" and "non-metric"
If "non-metric" is specified for a class that supports both unit systems the non-metric values are returned.
Otherwise the metric values are returned.
If the class is either metric or non-metric theUnitSystem is ignored.*/ logical theUserMode, /**< (I) If true, the display names of the units will be returned*/ ICS_view_descriptor_p_t *theViewDescriptor /**< (OF) The View Descriptor */ ); /** Free up the memory for the given descriptor. */ extern ICS_API void ICS_view_descriptor_free( ICS_view_descriptor_p_t theViewDescriptor /**< (I) The View Descriptor */ ); /** If theViewTag is a valid view, returns the id of the view in the following form: cid::sid */ extern ICS_API int ICS_view_ask_id( tag_t theViewTag, /**< (I) The tag of the View */ char** theViewId /**< (OF) The Id of the View */ ); /** If theViewId (cid::sid) is a valid view, returns the POM tag of the view */ extern ICS_API int ICS_view_ask_tag( const char* theViewId, /**< (I) The Id of the View */ tag_t* theViewTag /**< (O) The tag of the View */ ); /** Returns the types and tags of all documents according to the dataset of the given view The following parameters accept NULL pointer to indicate that this parameter should not be returned: theDocumentCount, theDocumentTypes, theDocumentTags */ extern ICS_API int ICS_view_ask_documents( const char* theViewId, /**< (I) The unique id of an existing view */ int* theDocumentCount, /**< (O) The number of named references */ char*** theDocumentTypes, /**< (OF) theDocumentCount The reference names of the documents */ tag_t** theDocumentTags /**< (OF) theDocumentCount The tags of the documents */ ); /** Import a document for this view. An existing image will be overwritten. A document can be the view image or icon or any other type of document */ extern ICS_API int ICS_view_import_document( const char* theViewId, /**< (I) The unique id of an existing view */ const char* theDocumentType, /**< (I) Possible values are:
Image
Icon */ const char* theFileName /**< (I) The name of the file to be imported */ ); /** Exports all documents of the given type attached to this class */ extern ICS_API int ICS_view_export_document( const char* theViewId, /**< (I) The unique id of an existing view */ const char* theDocumentType, /**< (I) For possible values see ICS_view_import_document() */ const char* theOutputDirectory, /**< (I) The directory name to put the files into */ logical overwriteExistingFiles, /**< (I) */ int* theFileCount, /**< (O) The number of files exported */ char*** theFileNames /**< (OF) theFileCount The names of the files put into theOutputDirectory */ ); /** Removes all images assigned to this view */ extern ICS_API int ICS_view_remove_document( const char* theViewId, /**< (I) The unique id of an existing view */ const char* theDocumentType /**< (I) For possible values see ICS_view_import_document() */ ); /** Search for views using specified query. The input to all output parameter except theCount can be NULL to indicate that the output should not be returned. */ extern ICS_API int ICS_view_search( const char* theQuery, /**< (I) the query: (unct) (op) (value), e.g. "-600 = classid" * Supported values for unct are: */ int theSortAttrId, /**< (I) specifies the attribute to be used for sorting the result */ int theOptions, /**< (I) options, currently not supported */ int *theCount, /**< (O) the number of views matching theQuery */ tag_t **theTags, /**< (OF) theCount the tags of the found views */ char* **theTypes, /**< (OF) theCount the types of the views.
possible values are "subclass", "default", "user", "group", "role", "graphics_mapping" */ char* **theClassIds, /**< (OF) theCount the class ids */ char* **theViewIds, /**< (OF) theCount the view ids */ char* **theNames, /**< (OF) theCount the names of the views */ int **theInstanceCounts /**< (OF) theCount the number of instances */ ); /** ** Copy a view to another parent class. */ extern ICS_API int ICS_view_copy( const char *theClass, /**< (I) The ID of the Classification class of the view to be copied */ const char *theView, /**< (I) The ID of the Classification view to be copied */ const char *theNewParent, /**< (I) The ID of the Classification class under which the copy of theView is created */ const char *theNewId, /**< (I) The ID of the Classification view that is created as a copy of theView. */ ICS_view_type_e theNewType, /**< (I) Defines how the created view is used:
#VIEW_type_subclass - legacy type can only be added to abstract classes with no further class children
#VIEW_type_defaultView - optionaly, will be autogenerated if needed and does not exist
The id is fixed: "defaultView"
#VIEW_type_user, #VIEW_type_group, #VIEW_type_role
For these views, theViewId needs to be set to the user, group or role Id. */ int theOptions /**< (I) options - valid values are: */ ); /** @} */ /** @name Classification Object (ICO) related Functions Common Return Values: #ICS_invalid_ico - The provided ICO tag is invalid @{ */ /** Create a new ICO */ extern ICS_API int ICS_ico_create( const char* theICOId, /**< (I) The id of the ICO. Will be ignored i theClassifiedObjectTag is != NULLTAG */ tag_t theClassifiedObjectTag, /**< (I) The WSO to classify with the new ICO*/ const char* theClassId, /**< (I) The id of the class the ICo should be stored in*/ int theAttributeCount, /**< (I) The number of attribute id/values given*/ int* theAttributeId, /**< (I) The attribute ids*/ const char** theAttributeValues, /**< (I) The values for the listed Attributes */ tag_t* theICOTag /**< (O) The Tag of the created ICO */ ); extern ICS_API int ICS_ico_create2( const char* theICOId, /**< (I) The id of the ICO. Will be ignored i theClassifiedObjectTag is != NULLTAG */ tag_t theClassifiedObjectTag, /**< (I) The WSO to classify with the new ICO*/ const char* theClassId, /**< (I) The id of the class the ICo should be stored in*/ int theAttributeCount, /**< (I) The number of attribute id/values given*/ int* theAttributeId, /**< (I) The attribute ids*/ int* theAttributeValCounts, /**< (I) The attribute value count */ const char*** theAttributeValues, /**< (I) The values for the listed Attributes */ tag_t* theICOTag /**< (O) The Tag of the created ICO */ ); /** Remove the ICO identified by theICOTag from the database */ extern ICS_API int ICS_ico_remove( tag_t theICOTag /* (I) The tag of the ICO to be removed */ ); /** @deprecated #ICS_ico_find deprecated in Teamcenter 11.2.2. Use #ICS_ico_search instead. Find the ICO identified by its id and/or classified object tag e.g.
1. find ICO with a given ID ( ignore WSO tag )
ICS_ico_find( id, wsoTag, 0, &count, &icoTags );
2. Find ICO for given WSO tag ( ignoring id )
ICS_ico_find( "", wsoTag, 1, &count, &icoTags );
3. Find ICO with given id where WSO is null tag
ICS_ico_find( id, NULLTAG, 1, &count, &icoTags ); */ TC_DEPRECATED("11.2.2","ICS_ico_find","ICS_ico_search") extern ICS_API int ICS_ico_find( const char* theICOId, /**< (I) The id of the ICO */ tag_t theClassifiedObjectTag, /**< (I) The classified WSO */ int theOptions, /**< (I) 0 or 1. If 0, then ICO will be searched only using theICOId. The value of theClassifiedObjectTag will be ignored, even if specified.
If 1, the ICOs will be searched using theICOId and theClassifiedObjectTag both */ int* theCount, /**< (O) No of ICOs found */ tag_t** theICOTags /**< (OF) theCount Tags of ICOs found */ ); /** Executes the POM enquiry resulting from the theAttrIds and theAttrExpr. theOptions affects the search, the following values can be used: #ICS_SEARCH_THIS_CLASS_ONLY, #ICS_SEARCH_CASE_INSENSITIVE, #ICS_SEARCH_ORDER_BY_ID and/or ICS_SEARCH_IN_BOTH_UNIT_SYSTEMS. The out parameters accept NULL pointer to indicate that this parameter should not be returned. If not specified by theOptions, the out parameters are sorted by the values for the given search attributes. If no search attributes are gives, then they are sorted by theICOIds. @note For more compilcated queries use the ICS_enquiry_ functions (ics_enquiry.h) */ extern ICS_API int ICS_ico_search( int theExprCount, /**< (I) The number of attributss */ int* theAttrIds, /**< (I) Array of attributes to search for. Supported values for internal Attribute ID are: @note You cannot use an attribute search without a class ID.
Usage:ICS_ico_search( 2, { -600, attributeID }, { "ClassID", "attributValue" }, theOptions, theCount, theICOTags, theICOUIDs, theICOIds, theClassIds, theWSOTags, theWSOUIDs ) */ char** theAttrExpr, /**< (I) A search string for each attribute in theAttrIds */ int theOptions, /**< (I) The enquiry options:
#ICS_SEARCH_THIS_CLASS_ONLY to limit search results to the class with the unique ID, theClassId.
#ICS_SEARCH_CASE_INSENSITIVE to search without case sensitivity.
#ICS_SEARCH_ORDER_BY_ID to sort the result by object ids.
#ICS_SEARCH_IN_BOTH_UNIT_SYSTEMS to search in both unit systems. If this option is used then you need to specify the active unitsystem -630 = 0/1 (metric/non-metric) as theAttrIds & theAttrExpr. This determines in which unit system the returned attribute values are displayed*/ int* theCount, /**< (O) The number of found ICOs. */ tag_t** theICOTags, /**< (OF) The tags of the found ICOs. */ char*** theICOUIDs, /**< (OF) The UIDs of the found ICOs. */ char*** theICOIds, /**< (OF) The IDs of the found ICOs. */ char*** theClassIds, /**< (OF) The Class IDs of the found ICOs. */ tag_t** theWSOTags, /**< (OF) The workspace object tags of the found ICOs. */ char*** theWSOUIDs /**< (OF) The workspace object UIDs of the found ICOs. */ ); /** Executes the POM enquiry resulting from the theAttrIds and theAttrExpr. theOptions affects the search, the following values can be used: #ICS_SEARCH_THIS_CLASS_ONLY, #ICS_SEARCH_CASE_INSENSITIVE and/or #ICS_SEARCH_ORDER_BY_ID. The out parameters accept NULL pointer to indicate that this parameter should not be returned. If not specified by theOptions, the out parameters are sorted by the values for the given search attributes. If no search attributes are gives, then they are sorted by theICOIds. @note For more compilcated queries use the ICS_enquiry_ functions (ics_enquiry.h) */ extern ICS_API int ICS_ico_search_count( int theExprCount, /**< (I) The number of attributss */ int *theAttrIds, /**< (I) theExprCount Array of attributes to search for */ char* *theAttrExpr, /**< (I) theExprCount A search string for each attribute in theAttrIds */ int theOptions, /**< (I) The enquiry options:
#ICS_SEARCH_THIS_CLASS_ONLY to limit search results to the class with the unique ID, theClassId.
#ICS_SEARCH_CASE_INSENSITIVE to search without case sensitivity.
#ICS_SEARCH_ORDER_BY_ID to sort the result by object ids. */ int *theCount /**< (O) The number of found ICOs. */ ); /** Returns the tag of the worksoace object the ICO classifies */ extern ICS_API int ICS_ico_ask_classified_object( tag_t theICOTag, /**< (I) The Tag of the ICO */ tag_t* theClassifiedObject /**< (OF) The Classified WSO */ ); /** Returns the class id of the class the ICO is stored in If the ICO is stored in a (legacy) sml-subclass theClassId has the following format: classid::subclassid */ extern ICS_API int ICS_ico_ask_class( tag_t theICOTag, /**< (I) The Tag of the ICO */ char** theClassId /**< (OF) The Id of the Class */ ); /** Returns the tag of the class the ICO is stored in */ extern ICS_API int ICS_ico_ask_class_tag( tag_t theICOTag, /**< (I) The Tag of the ICO */ tag_t* theClassTag /**< (O) The tag of the Class */ ); /** Returns the values of the given attributes */ extern ICS_API int ICS_ico_ask_named_attributes( tag_t theICOTag, /**< (I) The Tag of the ICO */ int theAttributeCount, /**< (I) The attribute count */ int* theAttributeIds, /**< (I) The attributes */ int** theAttributeValCounts, /**< (OF) theAttributeCount The count of attribute values */ char**** theAttributeValues /**< (OF) theAttributeCount The attribute values */ ); /** Sets all attributes of the given ICO */ extern ICS_API int ICS_ico_set_attributes( tag_t theICOTag, /**< (I) The Tag of the ICO */ int theAttributeCount, /**< (I) The attribute count */ int* theAttributeIds, /**< (I) The attributes */ int* theAttributeValCounts, /**< (I) The count of attribute values */ const char*** theAttributeValues /**< (I) The attribute values */ ); /** Returns all attributes of the given ICO @note Only those attributes are retuned which are accessible through the user specific view. */ extern ICS_API int ICS_ico_ask_attributes( tag_t theICOTag, /**< (I) The Tag of the ICO */ int* theAttributeCount, /**< (O) The attribute count */ int** theAttributeIds, /**< (OF) theAttributeCount The attribute Ids */ int** theAttributeValCounts, /**< (OF) theAttributeCount The count of Attribute values */ char**** theAttributeValues /**< (OF) theAttributeCount The attribute values */ ); /** Returns all attributes with their optimized units ans values of the given ICO For the attributes that are numeric and optimization flag is turned "on" , optimized units ans values are returned For other attributes, storage units ans values are returned @note Only those attributes are retuned which are accessible through the user specific view. */ extern ICS_API int ICS_ico_ask_attributes_optimized( tag_t theICOTag, /**< (I) The Tag of the ICO */ int *theAttributeCount, /**< (O) The attribute count */ int* *theAttributeIds, /**< (OF) theAttributeCount The attribute Ids */ char** *theAttributeNames, /**< (OF) theAttributeCount The attribute names */ int* *theAttributeValCounts, /**< (OF) theAttributeCount The attribute value count */ char*** *theAttributeOptimizedValues, /**< (OF) theAttributeCount The attribute values */ char*** *theAttributeOptimizedUnits /**< (OF) theAttributeCount The attribute units */ ); /** Returns all attributes of the given ICO without using a view */ extern ICS_API int ICS_ico_ask_all_attributes( tag_t theICOTag, /**< (I) The Tag of the ICO */ int* theAttributeCount, /**< (O) The attribute count */ int** theAttributeIds, /**< (OF) theAttributeCount The attribute Ids */ int** theAttributeValCounts, /**< (OF) theAttributeCount The attribute value count */ char**** theAttributeValues /**< (OF) theAttributeCount The attribute values */ ); /** Appropriately frees the memory allocated for the parameters theAttributeIds, theAttributeValCounts, theAttributeValues. This function is convenient to free memory from the variables returned by functions like #ICS_ico_ask_all_attributes. This function returns: */ extern ICS_API int ICS_ico_free_attributes( int theAttributeCount, /**< (I) The attribute count */ int* theAttributeIds, /**< (I) The attributes*/ int* theAttributeValCounts, /**< (I) The attribute value count */ char*** theAttributeValues /**< (I) The attribute values */ ); /** Search the distinct list of values in the given context for theAttributeId The function will search for all ICOs using the given criteria (theAttrIds/theAttrExpr) */ extern ICS_API int ICS_ico_find_values( int theExprCount, /**< (I) The count of expressions */ int *theAttrIds, /**< (I) The attribute Ids */ char* *theAttrExpr, /**< (I) Array of expressions */ int theOptions, /**< (I) Placeholder for future use */ int theAttributeId, /**< (I) The attribute Id for which the values are being returned */ int *theCount, /**< (O) the value count */ char* **theValues, /**< (OF) theCount The values */ int **theValueCounts /**< (OF) theCount The count of values */ ); /** Search the distinct list of values in the given context for theAttributeId The function will search for all ICOs using the given criteria (theAttrIds/theAttrExpr) In addition to ICS_ico_find_values() this function returns a display value */ extern ICS_API int ICS_ico_find_values2( int theExprCount, /**< (I) The count of expressions */ int *theAttrIds, /**< (I) The attribute Ids */ char* *theAttrExpr, /**< (I) Array of expressions*/ int theOptions, /**< (I) */ int theAttributeId, /**< (I) */ int *theCount, /**< (O) The value count */ char* **theValues, /**< (OF) theCount The values */ int **theValueCounts, /**< (OF) theCount The value count */ char* **theDisplayValues /**< (OF) theCount The display values */ ); /** moves ICO to the given new class */ extern ICS_API int ICS_ico_move( int theCount, /**< (I) The count */ const tag_t *theICOTags, /**< (I) The tags of the ICO */ const char *theNewClass, /**< (I) The destination class */ int *theErrorCount, /**< (O) The count of errors*/ tag_t **theUnsuccessfulICOTags, /**< (OF) theErrorCount The tags of ICOs failed to move */ int **theErrorCodes, /**< (OF) theErrorCount The error codes */ char ***theErrorMessages /**< (OF) theErrorCount The error messages */ ); /*===+++======================================================================== */ /** Checks if the provided Classification Object (ICO) classifies an item. If yes, it modifies the internal data structures such that after completion the ICO will classify the item's latest revision instead of the item itself. Return values: #ITK_ok - The ICO does not classify an item, or it was successfully reassigned to the item's latest revision */ extern ICS_API int ICS_ico_reassign_to_rev( tag_t theICOTag /**< (I) The tag of the ICO to be reassociated */ ); /** Map the source ICO identified by theSourceICOTag to the new target item and ICO identified by theTargetItemID. The target ICO will be created in the Classification class having theTargetClassID. */ extern ICS_API int ICS_ico_map( tag_t theSourceICOTag, /**< (I) The tag of the ICO to be mapped */ char * theTargetItemID, /**< (I) The ID of the new target item */ char * theTargetItemName, /**< (I) The new target item's name */ char * theTargetItemTypeName, /**< (I) The name of the target item type */ char * theTargetItemRevID, /**< (I) The ID of the new item Revision */ char * theTargetItemDescription, /**< (I) The new target item's decription */ char * theTargetClassID, /**< (I) The ID of the class to map to */ int theOptions, /**< (I) Options to the mapping process */ tag_t * theNewICOTag /**< (O) The new target ICO */ ); /** @deprecated #ICS_class_ask_mapping_sources deprecated in Teamcenter 12.2.
Internal Classification Objects (ICO) are now mapped based on ICO IDs. Hence retrieving mapping sources functionality will not be based on class ID. Determine the source classes that have been mapped to the given target class. */ TC_DEPRECATED_NO_REPLACEMENT("12.2","ICS_class_ask_mapping_sources") extern ICS_API int ICS_class_ask_mapping_sources( char * theTargetClassID, /**< (I) ID of a class to map ICOs to */ int theMappingViewType, /**< (I) Type of mappings to return */ int * theSourceClassCount, /**< (O) Count of mapping source classes */ char *** theSourceClassIDs, /**< (OF) theSourceClassCount The Ids of source class */ char *** theSourceClassNames /**< (OF) theSourceClassCount The names of source Class */ ); /** Determine the target classes that the given source class has been mapped to. */ extern ICS_API int ICS_class_ask_mapping_targets( char * theSourceClassID, /**< (I) ID of the class to map ICOs from */ int theMappingViewType, /**< (I) Type of mappings to return */ int * theTargetClassCount, /**< (O) Count of mapping target classes */ char *** theTargetClassIDs, /**< (OF) theTargetClassCount The Ids of target class */ char *** theTargetClassNames /**< (OF) theTargetClassCount The names of target Class */ ); /** Define a mapping between the given source and target class, as well as the attribute mappings to the target class? attributes. */ extern ICS_API int ICS_class_create_mapping( char * theSourceClassID, /**< (I) ID of class to map ICOs from */ char * theTargetClassID, /**< (I) ID of class to map ICOs to */ int theMappingViewType, /**< (I) Mapping view type to create */ int theAttributeCount, /**< (I) Count of mapped attributes */ int * theAttributeIds, /**< (I) theAttributeCount The attribute Ids */ char ** theAttributeMappings /**< (I) theAttributeCount The attribute mappings */ ); /** If a mapping exists between the given source and target class, return the target class? attributes as well as their corresponding attribute mappings. */ extern ICS_API int ICS_class_describe_mapping( char * theSourceClassID, /**< (I) ID of class to map ICOs from */ char * theTargetClassID, /**< (I) ID of class to map ICOs to */ int theMappingViewType, /**< (I) Requested mapping view type */ int * theAttributeCount, /**< (O) Count of mapped attributes */ int ** theAttributeIds, /**< (OF) theAttributeCount The attribute Ids */ char *** theAttributeMappings /**< (OF) theAttributeCount The attribute mappings */ ); /** Delete the mapping between the given source and target class, if one exists. */ extern ICS_API int ICS_class_delete_mapping( char * theSourceClassID, /**< (I) ID of the mapping?s source class */ char * theTargetClassID, /**< (I) ID of the mapping?s target class */ int theMappingViewType /**< (I) Type of mapping view to delete */ ); /** Creates a new Item in inClass. The function is called by inClass Server before the save action of an ICO. The Classification Server provides the necessary Data as input (arrays) parameter for the call. These are the Classification Class ID and the attributes from the Dialog appearing when pressing the Save Button if the ICS_create_wso_on_save is set to "yes". The first thing to be done by the interface is to generate the attributes defined by the mapping preferences. Then it must check the validity and existence of the attributes according to the preferences. If all checks are done and don't result in a roll back, the workspace object (Item/Item Revision) will be created. Once the WSO is created the relevant Seed Data will be copied and related to the WSO according to the Seed Part. */ extern ICS_API int ICS_ico_create_wso( const char* theClassId, /**< (I) The unique Id of the Class */ int theAttrCount, /**< (I) The count of the attributes */ int* theAttrIds, /**< (I) The attribute Ids */ char** theAttrValues, /**< (I) The attribute values */ int theOptions, /**< (I) Placeholder for future use */ tag_t *theWSO /**< (O) Tag of the WSO */ ); /** Returns the tag of the ICOs whare the given ICO is used */ extern ICS_API int ICS_ico_where_used( const char* theICOId, /**< (I) The id of the ICO to find where used */ int *theCount, /**< (O) The number of references found */ tag_t* *theTagsWhereUsed /**< (OF) theCount The list of ICO where the ICO is used */ ); /** @} */ /** @name Attribute Dictionary related functions Common return values: #ICS_err_attribute_does_not_exist
#ICS_err_attribute_not_unique
#ICS_err_invalid_parameter
#ICS_err_invalid_property
#ICS_err_invalid_value
#ICS_err_missing_parameter
#ICS_err_object_referenced
#ICS_err_property_readonly
#ICS_invalid_attribute_id @{ */ /** Creates a new attribute with the given name and format. */ extern ICS_API int ICS_attribute_create( int theAttrId, /**< (I) Unique identifier of the attribute. A value between -999 to 999 is not possible. */ const char* theAttrName, /**< (I) Optional name of the attribute */ int theAttrFormat /**< (I) The format of the attribute. For additional information about the attribute format definition refer #ICS_describe_format. */ ); /** ICS_attribute_creates a new unique attribute with the given name and format. */ extern ICS_API int ICS_attribute_create_unique( const char* theAttrName, /**< (I) The Attribute Name */ int theAttrFormat, /**< (I) The Format (!= 0) for the attribute */ int *theAttrId /**< (O) the newly created unique attribute id (>= 1000) */ ); /** Removes the attribute identified by theAttrId permanently from the database */ extern ICS_API int ICS_attribute_remove( int theAttrId /**< (I) The unique identifier of the attribute */ ); /** Sets the value for the specified property of an existing attribute */ extern ICS_API int ICS_attribute_set_property( int theAttrId, /**< (I) The unique identifier of the attribute */ const char* thePropertyName, /**< (I) The specified property. Possible values are:
NAME
SHORT_NAME
REFERENCE
UNIT1
UNIT2
FLAGS
USER1
USER2
DEFAULT_VALUE
DEFAULT_VALUE2
DESCRIPTION */ const char* thePropertyValue /**< (I) The value for the specified property */ ); /** Returns the value for the specified property of an existing attribute */ extern ICS_API int ICS_attribute_ask_property( int theAttrId, /**< (I) The unique identifier of the attribute */ const char* thePropertyName, /**< (I) The specified property. For possible values see #ICS_attribute_set_property and additionally:
ID
FORMAT1
FORMAT2
COMMENT */ char** thePropertyValue /**< (OF) The value of the given property */ ); /** Returns the count and the values of the shared sites */ extern ICS_API int ICS_attribute_ask_shared_sites( int theAttrId, /**< (I) The unique identifier of the attribute */ int* theSiteCount, /**< (O) The number of shared sites */ char*** theSharedSites /**< (OF) theSiteCount The shared sites. Need to be freed using #MEM_free */ ); /** Returns all classes where this attribute is used */ extern ICS_API int ICS_attribute_ask_references( int theAttrId, /**< (I) The unique identifier of the attribute */ int* theRefCount, /**< (O) The number of classes where this attribute is used */ char*** theRefs /**< (OF) theRefCount The classes where this attribute is used */ ); /** Returns the tag for the given Attribute Id */ extern ICS_API int ICS_attribute_ask_tag( int theAttrId, /**< (I) The Attribute Id */ tag_t* theTag /**< (O) The Tag */ ); /** Returns the Attribute Id for the given tag */ extern ICS_API int ICS_attribute_ask_id( tag_t theTag, /**< (I) The Tag */ int* theAttrId /**< (O) The Attribute Id */ ); /** Call this function to define an attribute - given by its attribute ID in the Classification dictionary - as reference attribute.
Returns ITK_ok or different kinds of errors, for example trying to set a Reference Attribute type that does not exist. @note Use 0 as theReferenceAttributeType to define the attribute to be a "normal" attribute (non reference attribute). */ int ICS_API ICS_attribute_set_as_reference( int theAttributeID, /**< (I) Attribute ID of the attribute that you want to define as reference attribute. The parameter must specify an existing attribute ID. */ int theReferenceAttributeType, /**< (I) One of the following values:
0 - non reference attribute (in this case the subsequent parameters are not used)
#ICS_REFATTR_CLASSIFIED_OBJECT - a property or attribute of the classified object
#ICS_REFATTR_MASTERFORM - a property or attribute of the Masterform of the classified item or item revision
#ICS_REFATTR_RELATED_OBJECT - a property or attribute of an object that is related (via an IMAN Relation) to the classified object
#ICS_REFATTR_ICO - an attribute of a different ICO */ int theFlags, /**< (I) Set to 0 or any combination of:
#ICS_REFATTR_PROPERTY: set this flag if you want to define an IMAN property - do not set it if you want to define a POM Attribute
#ICS_REFATTR_ITEM_ATTR: set this flag if you want to define a reference attribute of an item. This means that if the classified object is an item revision the reference attribute value will be read from the item (or its masterform / an object that is related to the item) of the classified item revision. */ const char *theClassName, /**< (I) Depending on theReferenceAttributeType specify the following value: (The second alternatives are valid if #ICS_REFATTR_PROPERTY is specified in parameter theFlags) */ const char *theAttrName, /**< (I) This parameter must not be NULL.
Depending on theReferenceAttributeType specify the following value: (The second alternatives are valid if ICS_PROPERTY is specified in theFlags) */ const char *theRelationName /**< (I) If theReferenceAttributeType is #ICS_REFATTR_RELATED_OBJECT then this parameter specifies the name of the IMAN Relation with which the related object is attached to the classified object (may be NULL to specify that any relation is possible).
For all other Reference Attribute types this parameter is not used. */ ); /** Call this function to ask the reference attribute properties of an attribute given by its attribute ID in the Classification dictionary.
Returns ICS_invalid_attribute_id if no attribute with the given attribute ID exists. */ int ICS_API ICS_attribute_ask_reference_props( int theAttributeID, /**< (I) Attribute ID of the attribute from which you want to read the reference attribute definition. The parameter must specify an existing attribute ID. */ int *theReferenceAttributeType, /**< (O) One of the following values: */ int *theFlags, /**< (O) 0 or a combination of:
#ICS_REFATTR_PROPERTY: this flag is set if an IMAN property is defined - if it is not set then a POM attribute is defined
#ICS_REFATTR_ITEM_ATTR: this flag is set if a reference attribute of an item is defined. This means that if the classified object is an item revision the reference attribute value will be read from the item (or its masterform / an object that is related to the item) of the classified item revision. */ char **theClassName, /**< (OF) Depending on theReferenceAttributeType this parameter specifies one the following values: (The second alternatives are valid if #ICS_REFATTR_PROPERTY is set in theFlags) */ char **theAttrName, /**< (OF) Depending on theReferenceAttributeType this parameter specifies the following value: (The second alternatives are valid if #ICS_REFATTR_PROPERTY is set in theFlags) */ char **theRelationName /**< (OF) If theReferenceAttributeType is #ICS_REFATTR_RELATED_OBJECT: name of the IMAN Relation with which the related object is attached to the classified object (may be NULL to specify that any relation is possible).
For all other Reference Attribute types this parameter is set to NULL. */ ); /** This function returns all dictionary attributes that match the given search criteria values.
The input to all output parameter except theCount can be NULL to indicate that the output should not be returned. */ extern ICS_API int ICS_attribute_search( const char* theQuery, /**< (I) the query: (unct) (op) (value), e.g. "-401 = attributename". Supported values for unct are: */ int theSortAttrID, /**< (I) specifies the ID to be used for sorting the result, Possible value is one of the supported values for unct in theQuery */ int theOptions, /**< (I) search options, supported is #ICS_SEARCH_CASE_INSENSITIVE to search without case sensitivity, when searching for IDs -401, -402, -403, -405 and -407 */ int *theCount, /**< (O) Number of attributes found */ tag_t **theTags, /**< (OF) theCount Tags of the attributes found */ int **theIDs, /**< (OF) theCount Ids of the attributes */ char* **theNames /**< (OF) theCount Names of the attributes */ ); /** This function convert the attribute value from one unit to another unit. */ extern ICS_API int ICS_attribute_convert_attribute_values( const char* theInputUnit, /**< (I) The input unit */ const char* theInputValue, /**< (I) The input value */ const char* theOutputUnit, /**< (I) The output unit */ int theOutputAttributeFormat, /**< (I) The attribute format */ char** theOutputValue /**< (OF)The output value */ ); /** @} */ /** @name KeyLOV functions Common return values: #ICS_err_invalid_keylov_id
#ICS_err_kelov_does_not_exist
#ICS_err_keylov_key_not_unique
#ICS_err_keylov_key_unknown
#ICS_err_object_referenced @{ */ /** Creates a new KeyLOV with the given parameters */ extern ICS_API int ICS_keylov_create( const char* theKeyLOVId, /**< (I) Unique identifier of the KeyLOV @note Even if theKeyLOVId is of type char*, only id's representing a negative integer can be used as definition from an attribute. */ const char* theKeyLOVName, /**< (I) Optional name of the KeyLOV */ int theOptions, /**< (I) Not used in V8.1.1 and below */ int theCount, /**< (I) The count of the entries ( key + value ) */ char** theKeys, /**< (I) Required list of keys The keys will be stored in the ICO */ char** theValues /**< (I) Optional corresponding list of values. The Values are only used for display. @note If a list of values are passed in, it must contain one value for each key which might be "" but not NULL */ ); /** Creates a new KeyLOV with a unique id and with the given parameters For the description of the parameter please refer ICS_keylov_create() */ extern ICS_API int ICS_keylov_create_unique( const char *theKeyLOVName, /**< (I) Key LOV Name */ int theOptions, /**< (I) The flags */ int theCount, /**< (I) The count */ char **theKeys, /**< (I) The Keys for the Key LOV */ char **theValues, /**< (I) The Values for the Key LOV */ char* *theNewId /**< (OF) The Unique Id of the Key LOV created */ ); /** Removes the KeyLOV definition identified by theKeyLOVId permanently from the database */ extern ICS_API int ICS_keylov_remove( const char* theKeyLOVId /**< (I) The unique identifier of the KeyLOV */ ); /** Adds keys and values to a KeyLOV */ extern ICS_API int ICS_keylov_insert_entries( const char* theKeyLOVId, /**< (I) The unique identifier of the KeyLOV */ const char* theInsertKey, /**< (I) In front of this existing key the following keys are inserted. If theInsertKey = NULL or "" then the inserted keys are added at the end of the existing keys. */ int theCount, /**< (I) The number of keys to be added to the KeyLOV */ char** theKeys, /**< (I) The KeyLOV keys to be added to the KeyLOV */ char** theValues /**< (I) The values for the added keys */ ); /** Removes keys and values from a KeyLOV */ extern ICS_API int ICS_keylov_remove_entries( const char* theKeyLOVId, /**< (I) The unique identifier of the KeyLOV */ int theCount, /**< (I) The number of keys to be removed */ char** theKeys /**< (I) The keys to be removed */ ); /** Sets the hide key option for the KeyLOV identified by theKeyLOVId To enable the setting set theOptions to 1. To disable the setting set it to 0. Return value: ICS_err_kelov_does_not_exist if the KeyLOV does not exist */ extern ICS_API int ICS_keylov_set_options( const char* theKeyLOVId, /**< (I) The Key LOV Id*/ int theOptions /**< (I) */ ); /** Sets the value for the specified property of an existing key LOV. @returns */ extern ICS_API int ICS_keylov_set_property( const char* theKeyLOVId, /**< (I) The Key LOV ID */ const char* thePropertyName, /**< (I) The specified property. Valid values are: */ const char* thePropertyValue /**< (I) The value for the specified property. */ ); /** Retrieves the value for the specified property of an existing key LOV. @returns */ extern ICS_API int ICS_keylov_ask_property( const char* theKeyLOVId, /**< (I) The Key LOV ID */ const char* thePropertyName, /**< (I) The specified property. Valid values are "NAME", "HIDEKEYS" and "ID". */ char** thePropertyValue /**< (OF) The value of the given property */ ); /** Overwrites all existing values of the KeyLOV with the provided ones. @returns */ extern ICS_API int ICS_keylov_set_entries( const char* theKeyLOVId, /**< (I) The unique identifier of the KeyLOV */ const unsigned int theCount, /**< (I) The number of keys to be added to the KeyLOV */ const char **theKeys, /**< (I) theCount The KeyLOV keys to be set into the KeyLOV */ const char **theValues, /**< (I) theCount The values for the keys to be set @note If an entry in @p theValues is a 0 pointer, the value will be set to an empty string*/ const logical *theDeprecateStatus /**< (I) theCount The deprecation status corresponding to KeyLOV keys. @note If no entry is to be deprecated, use a 0 pointer.*/ ); /** Returns the count and the values of the shared sites */ extern ICS_API int ICS_keylov_ask_shared_sites( const char* theKeyLOVId, /**< (I) The unique identifier of the KeyLOV */ int* theSiteCount, /**< (O) The number of shared sites */ char*** theSharedSites /**< (OF) theSiteCount The shared sites. Need to be freed using #MEM_free */ ); /** Returns all attributes Ids which use the KeyLOV identified by theKeyLOVId */ extern ICS_API int ICS_keylov_ask_references( const char* theKeyLOVId, /**< (I) The unique identifier of the KeyLOV */ int* theRefCount, /**< (O) The number of references */ int** theRefs /**< (OF) theRefCount The references */ ); /** Returns the POM tag for the given KeyLOV Id */ extern ICS_API int ICS_keylov_ask_tag( const char* theKeyLOVId, /**< (I) The unique Id of the Key LOV */ tag_t* theTag /**< (O) The POM Tag */ ); /** Returns the KeyLOV Id for the given POM tag */ extern ICS_API int ICS_keylov_ask_id( tag_t theTag, /**< (I) The POM Tag */ char** theKeyLOVId /**< (OF) The unique Id of the Key LOV*/ ); /** This function returns all keylovs that match the given search criteria values.
The input to all output parameter except theCount can be NULL to indicate that the output should not be returned. */ extern ICS_API int ICS_keylov_search( const char* theQuery, /**< (I) the query: (unct) (op) (value), e.g. "-430 = keylovid" * Supported values for unct are: */ int theSortAttrID, /**< (I) specifies the unct to be used for sorting the result, Possible value is one of the supported values for unct in theQuery */ int theOptions, /**< (I) search options, supported is #ICS_SEARCH_CASE_INSENSITIVE to search without case sensitivity */ int *theCount, /**< (O) Number of keylovs found */ tag_t **theTags, /**< (OF) theCount Tags of the keylovs found */ char* **theIDs, /**< (OF) theCount Ids of the keylovs */ char* **theNames /**< (OF) theCount Names of the keylovs */ ); /** Deprecates/Un-deprecates the specified Key LOV entries for the given LOV Keys. */ extern ICS_API int ICS_keylov_deprecate_entries( const char *key_lov_id , /* <(I)> The unique identifier of the Key LOV */ int n_lov_value_keys, /* <(I)> Number of Keys of the LOV values */ char **lov_value_keys, /* <(I)> n_lov_value_keys Array of LOV value Keys */ logical *deprecate_status /* <(I)> n_lov_value_keys Array of Logical values true/false, indicates Deprecate/Un-deprecate status corresponds Key LOV value in the lov_value_keys array*/ ); /** Returns all values of the Key LOV for the specified Key LOV ID. */ extern ICS_API int ICS_keylov_get_keylov( const char* key_lov_id, /* The unique identifier of the Key LOV */ char **key_lov_name, /* The name of Key LOV */ int *options, /* The options for the Key LOV */ int *n_lov_entries, /* Number of Key LOV values */ char ***lov_keys, /* n_lov_entries Array of LOV Keys */ char ***lov_values, /* n_lov_entries Array of LOV values */ logical **deprecated_staus, /* n_lov_entries Array of Deprecated status of each Key LOV value */ char **owning_site, /* The owning site*/ int *n_shared_sites, /* The number of shared sites*/ char ***shared_sites /* n_shared_sites Array of shared sites */ ); /** Returns the deprecated status of given LOV Key. */ extern ICS_API int ICS_keylov_is_entry_deprecated( const char *key_lov_id, /**< (I) The unique identifier of the KeyLov*/ const char *lov_value_key, /**< (I)KeyLOV Value*/ logical *deprecate /**Deprecated status of the entry*/ ); /** Returns true if the ICO attribute is localizable */ extern ICS_API int ICS_ico_property_isLocalizable( tag_t theICOTag, /**< (I) The ICO Tag */ const int theAttributeId, /**< (I) The Attribute id*/ logical *isLocalizable /**< (O) is Localizable*/ ); /** Returns the list of localizable ICO attributes */ extern ICS_API int ICS_ico_ask_localizable_properties( tag_t theICOTag, /**< (I) The ICO Tag */ int *theAttributeCount, /**< (O) The Attribute count*/ int **theAttributeIds /**< (OF) theAttributeCount The Localizable Attribute Ids*/ ); /** Sets one or more values on a string property. */ extern ICS_API int ICS_ico_set_localized_value_strings( tag_t theICOTag, /**< (I) The ICO Tag*/ int noAttributes, /**< (I) The Attribute count */ int* theAttributeIds, /**< (I) List of attribute Id */ const char* locale, /**< (I) locale for which the value need to set*/ int* theAttributeValCount, /**< (I) Array of number of values*/ char*** theAttributeValues, /**< (I) List of value array */ char** localization_statuses, /**< (I) Array of localisation */ logical isMaster /**< (I) Flag to Indicate wether the locale is master*/ ); /** Asks one or more values of a string property. The property can be single-valued or multi-valued (i.e., array or list). */ extern ICS_API int ICS_ico_ask_localized_value_strings( tag_t theICOTag, /**< (I) The ICO Tag */ const int theAttributeId, /**< (I) Attribute Id of the ICO */ const char* locale, /**< (I) The locale of the property value */ int* theAttributeValCount, /**< (O) Number of values returned. */ char*** theAttributeValues, /**< (OF) theAttributeValCount The num values of the property. This must be a list or array of constant chars. */ char** localization_statuses, /**< (OF) theAttributeValCount The list of localization statuses each applicable to the corresponding property value in the values array. */ logical* isMaster /**< (O) specifies if the locale specified as input is the master locale for each property value in the values array. */ ); /** Returns true if theTag is of the asked type */ extern ICS_API logical ICS_is_keylov( tag_t theTag /**< (I) */ ); /** Returns true if theTag is of the asked type */ extern ICS_API logical ICS_is_attribute( tag_t theTag /**< (I) */ ); /** Returns true if theTag is of the asked type */ extern ICS_API logical ICS_is_class( tag_t theTag /**< (I) */ ); /** Returns true if theTag is of the asked type */ extern ICS_API logical ICS_is_view( tag_t theTag /**< (I) */ ); /** Returns true if theTag is of the asked type */ extern ICS_API logical ICS_is_subclass( tag_t theTag /**< (I) */ ); /** Returns true if theTag is of the asked type */ extern ICS_API logical ICS_is_ico( tag_t theTag /**< (I) */ ); /** Imports the content of the given sml file */ extern ICS_API int ICS_sml_import( char *file, /**< (I) absolute pathname of file to import from */ char *importMode /**< (I) import mode: Use "1" to insert and "2" to update. */ ); /** Auto-compute attribute values for classification object (ICO) based on custom program registered with BMF_ICS_exec_custom_attribute_logic operation in BMIDE */ extern ICS_API int ICS_ico_auto_compute( const char *theICOid, /**< (I) ICO id */ const char *theClassId, /**< (I) Class id */ const char *theViewId, /**< (I) View id */ const int theUnitSystem, /**< (I) Unit System of the ICO */ tag_t theWsoTag, /**< (I) Workspace object tag that is being classified */ const int theMode, /**< (I) AutoCompute operation mode */ const int theAttributeCount, /**< (I) The number of attributes */ const int *theAttributeIds, /**< (I) Array of attribute ids */ const int *theAttrValueCounts, /**< (I) Array of attribute value count */ const char ***theAttributeValues, /**< (I) Array of attribute values */ const int *theAttributeLengths, /**< (I) Array of attribute array sizes */ const char **theAttributeUnits, /**< (I) Array of attribute units */ const int *theAttributeFlags, /**< (I) Array of attribute flags */ const logical *theModifiedFlag, /**< (I) Array of flags specifying the updated attributes */ int *theAutoComputedCount, /**< (O) The number of auto computed attributes */ int **theAutoComputedIds, /**< (OF) theAutoComputedCount Array of auto computed attribute ids */ int **theAutoComputedValueCounts, /**< (OF) theAutoComputedCount Array of attribute value count */ char ****theAutoComputedValues, /**< (OF) theAutoComputedCount Array of auto computed attribute values */ int **theAutoComputedLengths, /**< (OF) theAutoComputedCount Array of attribute array sizes */ char ***theAutoComputedUnits, /**< (OF) theAutoComputedCount Array of auto computed attribute units */ int **theAutoComputedFlags /**< (OF) theAutoComputedCount Array of auto computed attribute flags */ ); /** This API is to be used for writing the custom program to be registered with BMF_ICS_exec_custom_attribute_logic operation in BMIDE. Register the attribute dependencies for auto-computed attributes. */ extern ICS_API int ICS_auto_compute_register_attrs( const char *class_id, /**< (I) Class Id */ const char *view_id, /**< (I) View Id */ const int size, /**< (I) No of Attributes */ ICS_auto_compute_attr_t *auto_compute_attrs, /**< (I) Array of attribute structures */ logical toOverride /**< (I) Flag to indicate overiding of the parent class registration*/ ); /** This API is to be used for writing the custom program to be registered with BMF_ICS_exec_custom_attribute_logic operation in BMIDE. Set the auto computed attribute values. This API to be used with attributes with an array of values. */ extern ICS_API int ICS_auto_compute_set_attr_values( const int theAttributeId, /**< (I) Attribute Id */ const int theAttrValueCount, /**< (I) Attribute Value Count */ const char **theAttributeValues, /**< (I) Attribute Value Array */ const char *theUnit /**< (I) Attribute Unit System */ ); /** This API is to be used for writing the custom program to be registered with BMF_ICS_exec_custom_attribute_logic operation in BMIDE. Set the auto computed attribute value */ extern ICS_API int ICS_auto_compute_set_attr_value( const int theAttributeId, /**< (I) Attribute Id */ const char *theAttributeValue, /**< (I) Attribute Value */ const char *theUnit /**< (I) Attribute Unit System */ ); /** This API is to be used for writing the custom program to be registered with BMF_ICS_exec_custom_attribute_logic operation in BMIDE. Set the auto computed attribute property */ extern ICS_API int ICS_auto_compute_set_attr_prop( const int theAttributeId, /**< (I) Attribute Id */ const int thePropType, /**< (I) Property Type */ const logical theValue /**< (I) Property Value */ ); /** This API is to be used for writing the custom program to be registered with BMF_ICS_exec_custom_attribute_logic operation in BMIDE. The method is used for retreiving the values of the attribute. This API is to be used with attributes with an array of values. */ extern ICS_API int ICS_auto_compute_get_attr_values( const int attributeId, /**< (I) attribute id */ int *valueCount, /**< (O) Attribute Value count */ char ***value, /**<(OF) valueCount array of values for the attribute */ int *format, /**< (O) The attribute format */ char **unit /**<(OF) valueCount value of the unit */ ); /** This API is to be used for writing the custom program to be registered with BMF_ICS_exec_custom_attribute_logic operation in BMIDE. The method is used for retreiving the value of the attribute */ extern ICS_API int ICS_auto_compute_get_attr_value( const int attributeId, /**< (I) attribute id */ char **value, /**<(OF) value of the attribute id */ int *format, /**< (O) The attribute format */ char **unit /**<(OF) value of the unit */ ); /** This API is to be used for writing the custom program to be registered with BMF_ICS_exec_custom_attribute_logic operation in BMIDE. The method is used for retreiving the property value of the attribute id */ extern ICS_API int ICS_auto_compute_get_attr_prop( const int theAttributeId, /**< (I) attribute id */ int thePropType, /**< (I) property type of the attribute */ logical *theValue /**< (O) true/false for the specified property */ ); /** This API is used for checking the privialge of the Inclass object like Class,Subclass,Class Attributes,View Attributes based on the ACL information configured in the classification Admin */ extern ICS_API int ICS_check_privilege( tag_t theInstanceTag,/**< (I) Instance Tag */ const char *thePrivilegeName,/**< (I) The name of the privilage to be checked*/ logical *isGrantedExt /**< (O) true/false for the specified privilage */ ); /** Removes the class and its hierarchy with the given parameters */ extern ICS_API int ICS_class_remove_hierarchy ( const char *theClassId, /**< (I) class id */ logical theRecurseOption, /**< (I) theRecurseOption for child elements */ logical theViewsOption, /**< (I) Option to remove views */ logical theIcosOption, /**< (I) Option to remove Icos */ logical theWSOOption, /**< (I) Option to remove WSO */ logical theChildrenOnlyOption, /**< (I) Option to remove the ChildrenOnly */ logical theIgnoreOption, /**< (I) theIgnoreOption */ logical thePurgeAttrs, /**< (I) thePurgeAttrs */ logical thePurgeKeyLOV, /**< (I) thePurgeKeyLOV */ int *theFailedObjectsCount, /**< (O) the number of failed objects count */ char* *theFailedObjects /**< (OF) theFailedObjectsCount the failed class id's */ ); /*=========================================================================== ** ICS_class_search_libraries returns the information about the libraries found by searchStrings ** ** theCount : the number of classes matching theQuery ** ** NOTE: The input to all following values can be NULL to indicate ** that the output should not be returned. ** ** theTags : the tags of the found classes ** theTypes : the types of the classes ** Posible values are: Group, Class, StorrageClass ** theCIDs : the unique class ids ** theparentCIDs : the unique class ids of parent ** theNames : the class names ** theInstancesCounts : the number of instances stored in each class (including subclass instances) ** theChildCounts : the number of children (of type Group,Class or StorrageClass) each class has ** theLibraries : the library value for found libraries ** ** Return value : ** ITK_OK ** Error discovered ** */ /** Returns the information about the libraries found by theSearchStrings */ extern ICS_API int ICS_class_search_libraries( int theNumSearchStrings, /**< (I) Number of search strings */ const char* *theSearchStrings, /**< (I) Array of search strings */ int *theCount, /**< (O) Number of classes found */ tag_t **theTags, /**< (OF) theCount Tags of the classes found */ char* **theTypes, /**< (OF) theCount Types of the classes */ char* **theCIDs, /**< (OF) theCount Ids of the classes */ char* **theParentCIDs, /**< (OF) theCount Parent ids of the classes */ char* **theNames, /**< (OF) theCount Names of the classes */ int **theInstancesCounts, /**< (OF) Number of instances stored in the class and any child class */ int **theChildCounts, /**< (OF) Number of children of the classes */ char* **theLibraries /**< (OF) theCount library values for classes */ ); /*=========================================================================== ** ICS_class_ask_parentinfo returns the information about all the parents found by theChildCIDs ** ** theParentCount : the number of classes matching theChildCIDs ** ** NOTE: The input to all following values can be NULL to indicate ** that the output should not be returned. ** ** theparentTags : the tags of the found parent classes ** theparentTypes : the types of the parent classes ** Posible values are: Group, Class, StorrageClass ** theparentCIDs : the unique class ids of parents ** theNames : the class names of parents ** theInstancesCounts : the number of instances stored in each parent class (including subclass instances) ** theChildCounts : the number of children (of type Group,Class or StorrageClass) each parent class has ** ** Return value : ** ITK_OK ** Error discovered ** */ /** Returns the information about all the parents found by theChildCIDs */ extern ICS_API int ICS_class_ask_parentinfo( int theNumCIDs, /**< (I) Number of the child classes */ const char* *theChildCIDs, /**< (I) Array of child class IDs */ int *theParentCount, /**< (O) The number of parents found */ tag_t **theParentTags, /**< (OF) theParentCount Tags of the parents found */ char* **theParentTypes, /**< (OF) theParentCount Types of the parent classes Posible values are: Group, Class, StorageClass */ char* **theParentCIDs, /**< (OF) theParentCount Class IDs of the Parent classes */ char* **theNames, /**< (OF) theParentCount Names of the parent classes */ int **theInstancesCounts, /**< (OF) Number of instances stored in the class and any child class */ int **theChildCounts /**< (OF) Number of children of the classes */ ); /** Retrieves the information about dependent attributes in the given class when the selected attribute value has changed.
Values are returned for all given UI attributes that have changed in the parameters @p selected_attr / @p selected_value.
The @p class_id parameter must be a valid class ID and not NULL
All other input values can be set as follows:
USE CASE selected_attr selected_value ui_attr_count ui_attr_ids ui_attr_values
User has selected a value valid attr ID valid value UI attr count UI attr IDs UI attr values
User has deselected a value valid attr ID "" or NULL UI attr count UI attr IDs UI attr values
Initial view 0 0 UI attr count UI attr IDs NULL or empty UI attr values
Edit Mode 0 0 UI attr count UI attr IDs ICO values (currently displayed in the view)
@returns
  • #ITK_ok on success
  • #SML_ERR_NO_INSTANCE_FOUND if the class does not exist.
  • #SML_ERR_ATTR_NOT_IN_CLASS if the selected attribute is not in the class
*/ extern ICS_API int ICS_class_attr_ask_dep_keylovs( const char* class_id, /**< (I) Class ID, must not be NULL */ int selected_attr, /**< (I) The selected attribute */ const char* selected_value, /**< (I) The selected value */ int ui_attr_count, /**< (I) Number of attributes in the UI */ const int* ui_attr_ids, /**< (I) UI attribute IDs */ const char** ui_attr_values, /**< (I) UI attribute values */ int *changed_attr_count, /**< (O) Number of changed keylovs */ ICS_keylov_descriptor_p_t **changed_keylovs /**< (OF) changed_attr_count The changed Keylovs */ ); /** Retrieves the information about the 'common' attributes for the input classes.
The attributes searched and returned must:
  • belong to the 'Search Index View'
  • have 'Used as facet' flag set.
@returns #ITK_ok always.
In case of invalid inputs, no results will be returned (attribute count equals to 0). */ extern ICS_API int ICS_ask_common_attributes_used_as_facets2( int class_ids_count, /**< (I) The Class ID count. */ const char **class_ids, /**< (I) The Class IDs for which the attributes are to be found. */ int *attribute_count, /**< (O) The count of the matching attributes found. */ int **attribute_ids, /**< (OF) attribute_count The IDs of the matching attributes. */ int **attribute_metric_formats, /**< (OF) attribute_count The metric format values of the attributes.
The attribute format defines the type of value that can be stored for the attribute.
For additional information about the attribute format definition, refer #ICS_describe_format. */ int **attribute_non_metric_formats, /**< (OF) The non-metric format values of the attributes. */ char ***attribute_names, /**< (OF) attribute_count The attribute names.The output string array is SM-packed, hence should be freed by calling #MEM_free on the container only. */ char ***attribute_metric_units, /**< (OF) attribute_count The metric unit value for attributes.The output string array is SM-packed, hence should be freed by calling #MEM_free on the container only. */ char ***attribute_non_metric_units /**< (OF) attribute_count The non metric unit value for attributes.The output string array is SM-packed, hence should be freed by calling #MEM_free on the container only. */ ); /** Retrieves the information about the "indexable" attributes in the system.
The attributes searched and returned must:
  • belong to the 'Search Index View'
@returns
  • #ITK_ok on success
  • POM enquiry related error otherwise.
*/ extern ICS_API int ICS_ask_indexable_attributes( int *attribute_count, /**< (O) The count of the matching attributes found. */ int **attribute_ids, /**< (OF) attribute_count The IDs of the matching attributes. */ int **attribute_metric_formats, /**< (OF) attribute_count The metric format values of the attributes.
The attribute format defines the type of value that can be stored for the attribute.
For additional information about the attribute format definition, refer #ICS_describe_format. */ int **attribute_non_metric_formats, /**< (OF) The non-metric format values of the attributes. */ char ***attribute_names, /**< (OF) attribute_count The attribute names.The output string array is packed, hence should be freed by calling #MEM_free on the container only. */ char ***attribute_metric_units, /**< (OF) attribute_count The metric unit value for attributes.The output string array is packed, hence should be freed by calling #MEM_free on the container only. */ char ***attribute_non_metric_units /**< (OF) attribute_count The non metric unit value for attributes.The output string array is packed, hence should be freed by calling #MEM_free on the container only. */ ); /** Retrieves the dependent classified workspace object. @returns
  • #ITK_ok on success
  • #SML_ERR_MISSING_PARAMETER in case of invalid input.
*/ extern ICS_API int ICS_ask_dependent_classified_WSO( const tag_t theWSOTag, /**< (I) The WorkspaceObject tag */ tag_t *theDependentClassifiedWSO /**< (O) The dependent WorkspaceObject tag */ ); /** @} */ #ifdef __cplusplus } #endif /** @} */ #include #endif