/** Function oyFilterNode_GetTags * @memberof oyFilterNode_s * @brief Get filter tags * * Tags are non persistent informations. Typical they are not directly user * visible other than filter core options, which can appear inside dialogs. * * @param[in,out] node filter object * @return the tags * * @version Oyranos: 0.5.0 * @date 2012/09/15 * @since 2012/09/15 (Oyranos: 0.5.0) */ OYAPI oyOptions_s * OYEXPORT oyFilterNode_GetTags( oyFilterNode_s * node ) { oyFilterNode_s_ * s = (oyFilterNode_s_*)node; if(!node) return 0; oyCheckType__m( oyOBJECT_FILTER_NODE_S, return NULL ) if(!s->tags) s->tags = oyOptions_New( 0 ); oyOptions_Copy( s->tags, 0 ); return s->tags; }
/** Function oyFilterGraph_Copy__Members * @memberof oyFilterGraph_s * @brief Custom FilterGraph copy constructor * @internal * * This function makes a copy of all values from the input * to the output object. The destination object and all of its * members should already be allocated. * * @param[in] src the oyFilterGraph_s_ input object * @param[out] dst the output oyFilterGraph_s_ object * * @version Oyranos: x.x.x * @since YYYY/MM/DD (Oyranos: x.x.x) * @date YYYY/MM/DD */ int oyFilterGraph_Copy__Members( oyFilterGraph_s_ * dst, oyFilterGraph_s_ * src) { int error = 0; #if 0 oyAlloc_f allocateFunc_ = 0; oyDeAlloc_f deallocateFunc_ = 0; #endif if(!dst || !src) return 1; #if 0 allocateFunc_ = dst->oy_->allocateFunc_; deallocateFunc_ = dst->oy_->deallocateFunc_; #endif /* Copy each value of src to dst here */ dst->nodes = oyFilterNodes_Copy( src->nodes, 0 ); dst->edges = oyFilterPlugs_Copy( src->edges, 0 ); dst->options = oyOptions_Copy( src->options, dst->oy_ ); return error; }
/** Function oyConfigs_FromDeviceClass * @memberof oyConfigs_s * @brief Ask a module for device informations or other direct calls * * @param[in] device_type the device type ::oyFILTER_REG_TYPE, * defaults to OY_TYPE_STD (optional) * @param[in] device_class the device class, e.g. "monitor", * ::oyFILTER_REG_APPLICATION * @param[in] options options to pass to the module, for zero * the usage instructions are requested, * a option "device_name" can be used * as filter * @param[out] devices the devices * @param[in] object the optional object * @return 0 - good, >= 1 - error * * @verbatim // pass empty options to the module to get a usage message oyOptions_s * options = 0; int error = oyConfigs_FromDeviceClass( OY_TYPE_STD, "monitor", options, 0, 0 ); @endverbatim * * @version Oyranos: 0.1.10 * @since 2009/01/28 (Oyranos: 0.1.10) * @date 2009/01/30 */ OYAPI int OYEXPORT oyConfigs_FromDeviceClass ( const char * device_type, const char * device_class, oyOptions_s * options, oyConfigs_s ** devices, oyObject_s object ) { int error = !device_class || !device_class[0]; oyConfig_s * device = 0; oyConfigs_s * configs = 0; int i, j, j_n; uint32_t count = 0, * rank_list = 0; char ** texts = 0, * device_class_registration = 0; const char * tmp = 0, * device_name = 0; if(error > 0) { WARNc_S( "\n No device_class argument provided. Give up" ); return 0; } /** 1. obtain detailed and expensive device informations */ if(options) { options = oyOptions_Copy( options, 0 ); device_name = oyOptions_FindString( options, "device_name", 0 ); } /** 1.2.1 build a device class registration string */ if(error <= 0) { device_class_registration = oyDeviceRegistrationCreate_( device_type, device_class, device_name, device_class_registration ); error = !device_class_registration; } /** 1.2.2 get all device class module names */ if(error <= 0) error = oyConfigDomainList ( device_class_registration, &texts, &count, &rank_list, 0 ); if(devices && !*devices) *devices = oyConfigs_New( object ); /** 1.3 ask each module */ for( i = 0; i < count; ++i ) { const char * registration_domain = texts[i]; /** 1.3.1 call into module */ error = oyConfigs_FromDomain( registration_domain, options, &configs, object); if(devices && *devices) j_n = oyConfigs_Count( configs ); else j_n = 0; for( j = 0; j < j_n; ++j ) { device = oyConfigs_Get( configs, j ); if(device_name) { /** 1.3.1.1 Compare the device_name with the device_name option * and collect the matching devices. */ tmp = oyConfig_FindString( device, "device_name", 0 ); if(tmp && oyStrcmp_( tmp, device_name ) == 0) oyConfigs_MoveIn( *devices, &device, -1 ); } else /** 1.3.1.2 ... or collect all device configurations */ oyConfigs_MoveIn( *devices, &device, -1 ); oyConfig_Release( &device ); } oyConfigs_Release( &configs ); } if(devices) j_n = oyConfigs_Count( *devices ); else j_n = 0; for( j = 0; j < j_n; ++j ) { device = oyConfigs_Get( *devices, j ); /** The basic call on how to obtain the configuration is added here as * the objects name. "properties" and "list" are known. */ if(oyOptions_FindString( options, "command", "properties" ) || oyOptions_FindString( options, "oyNAME_DESCRIPTION", 0 )) oyObject_SetName( device->oy_, "properties", oyNAME_NAME ); else if(oyOptions_FindString( options, "list", 0 )) oyObject_SetName( device->oy_, "list", oyNAME_NAME ); oyConfig_Release( &device ); } oyOptions_Release( &options ); return error; }