⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 value.cxx

📁 ecos实时嵌入式操作系统
💻 CXX
📖 第 1 页 / 共 5 页
字号:
// ----------------------------------------------------------------------------// Get hold of the current flavor.CdlValueFlavorCdlValue::get_flavor(void) const{    CYG_REPORT_FUNCNAMETYPE("CdlValue::get_flavor", "result %d");    CYG_REPORT_FUNCARG1XV(this);    CYG_PRECONDITION_THISC();    CdlValueFlavor result = flavor;    CYG_REPORT_RETVAL(result);    return result;}// ----------------------------------------------------------------------------// set_flavor() may be invoked once or twice for a given entity. The first// time is from inside the constructor with the default flavor for this// particular class of entity. It may then be called again if the// entity has a "flavor" property that overrides this. All old data// will be lost, so evaluating a default value etc. should be done after// the call to set_flavor(), and there should be no subsequent calls to// set_flavor().voidCdlValue::set_flavor(CdlValueFlavor flavor_arg){    CYG_REPORT_FUNCNAME("CdlValue:: set_flavor");    CYG_REPORT_FUNCARG2XV(this, flavor_arg);        // No precondition here, set_flavor() is called from inside the constructor    CYG_PRECONDITIONC((CdlValueFlavor_None     == flavor_arg) || \                      (CdlValueFlavor_Bool     == flavor_arg) || \                      (CdlValueFlavor_BoolData == flavor_arg) || \                      (CdlValueFlavor_Data     == flavor_arg));    flavor = flavor_arg;    switch(flavor) {      case CdlValueFlavor_None :        {            // All value sources are enabled, but "default" remains            // the only valid one. All data parts are set to "1",            // although that should not really matter.            enabled[CdlValueSource_Default]     = true;            enabled[CdlValueSource_Inferred]    = true;            enabled[CdlValueSource_Wizard]      = true;            enabled[CdlValueSource_User]        = true;                        CdlSimpleValue simple_val((cdl_int) 1);            values[CdlValueSource_Default]      = simple_val;            values[CdlValueSource_Inferred]     = simple_val;            values[CdlValueSource_Wizard]       = simple_val;            values[CdlValueSource_User]         = simple_val;            break;        }                case CdlValueFlavor_Bool :        {            // All value sources start out as disabled, but with a            // constant data part of 1. Users can only control the            // boolean part. This is consistent with header file            // generation: no #define is generated for disabled            // options, but if the option is enabled then the data            // part will be used for the value.            enabled[CdlValueSource_Default]     = false;            enabled[CdlValueSource_Inferred]    = false;            enabled[CdlValueSource_Wizard]      = false;            enabled[CdlValueSource_User]        = false;            // BLV - keep the data part at 0 for now. There is too            // much confusion in the code between value as a string            // representation, and value as the data part of the            // bool/data pair. This needs to be fixed, but it requires            // significant API changes.#if 0                        CdlSimpleValue simple_val(cdl_int(1));#else            CdlSimpleValue simple_val(cdl_int(0));#endif                        values[CdlValueSource_Default]      = simple_val;            values[CdlValueSource_Inferred]     = simple_val;            values[CdlValueSource_Wizard]       = simple_val;            values[CdlValueSource_User]         = simple_val;            break;        }                case CdlValueFlavor_BoolData :        {            // All value sources start out as disabled, just like            // booleans. Nothing is known about the data part.            enabled[CdlValueSource_Default]       = false;            enabled[CdlValueSource_Inferred]      = false;            enabled[CdlValueSource_Wizard]        = false;            enabled[CdlValueSource_User]          = false;            break;        }                case CdlValueFlavor_Data :        {            // All value sources start out as enabled, and cannot be            // changed. Nothing is known about the data part.            enabled[CdlValueSource_Default]       = true;            enabled[CdlValueSource_Inferred]      = true;            enabled[CdlValueSource_Wizard]        = true;            enabled[CdlValueSource_User]          = true;            break;        }      default :        break;    }        CYG_REPORT_RETURN();}//}}}//{{{  Source manipulation                      // ----------------------------------------------------------------------------voidCdlValue::set_source(CdlValueSource source){    CYG_REPORT_FUNCNAME("CdlValue::set_source");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_INVARIANT_THISC(CdlValue);    CYG_PRECONDITIONC((0 <= source) && (source <= CdlValue_number_of_sources));    CYG_PRECONDITIONC(source_valid[source]);    current_source = source;    CYG_REPORT_RETURN();}CdlValueSourceCdlValue::get_source(void) const{    CYG_REPORT_FUNCNAMETYPE("CdlValue::get_source", "source %d");    CYG_REPORT_FUNCARG1XV(this);    CYG_PRECONDITION_THISC();    CdlValueSource result = current_source;    CYG_REPORT_RETVAL(result);    return result;}boolCdlValue::has_source(CdlValueSource source) const{    CYG_REPORT_FUNCNAMETYPE("CdlValue::has_source", "result %d");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_PRECONDITION_THISC();    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    bool result = source_valid[source];    CYG_REPORT_RETVAL(result);    return result;}// ----------------------------------------------------------------------------// Invalidate a specific source. If that source happens to be the current one,// switch to the highest-priority valid source.voidCdlValue::invalidate_source(CdlValueSource source){    CYG_REPORT_FUNCNAME("CdlValue::invalidate_source");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_PRECONDITION_THISC();    CYG_PRECONDITIONC(CdlValueSource_Default != source);    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    if (CdlValueSource_Default != source) {        source_valid[source]        = false;        if (current_source == source) {            if (source_valid[CdlValueSource_User]) {                current_source = CdlValueSource_User;            } else if (source_valid[CdlValueSource_Wizard]) {                current_source = CdlValueSource_Wizard;            } else if (source_valid[CdlValueSource_Inferred]) {                current_source = CdlValueSource_Inferred;            } else {                current_source = CdlValueSource_Default;            }        }    }        CYG_POSTCONDITIONC(source_valid[current_source]);}//}}}//{{{  Retrieving the data                      // ----------------------------------------------------------------------------// Check the enabled flag for the appropriate source. The specified source// is normally provided by a default argument CdlValueSource_Current, which// 99.9...% of the time is what we are after.//// Note that this member can be used even for entities of flavor none// and data, and the result will be true. However it is not legal to// disable such entities.boolCdlValue::is_enabled(CdlValueSource source) const{    CYG_REPORT_FUNCNAMETYPE("CdlValue::is_enabled", "enabled %d");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_PRECONDITION_THISC();    if (CdlValueSource_Current == source) {        source = current_source;    }    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    CYG_PRECONDITIONC(source_valid[source]);    bool result = enabled[source];    CYG_REPORT_RETVAL(result);    return result;}// ----------------------------------------------------------------------------// Access to the value field.std::stringCdlValue::get_value(CdlValueSource source) const{    CYG_REPORT_FUNCNAME("CdlValue::get_value");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_PRECONDITION_THISC();    if (CdlValueSource_Current == source) {        source = current_source;    }    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    CYG_PRECONDITIONC(source_valid[source]);    std::string result = values[source].get_value();    CYG_REPORT_RETURN();    return result;}boolCdlValue::has_integer_value(CdlValueSource source) const{    CYG_REPORT_FUNCNAMETYPE("CdlValue::has_integer_value", "result %d");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_INVARIANT_THISC(CdlValue);    if (CdlValueSource_Current == source) {        source = current_source;    }    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    CYG_PRECONDITIONC(source_valid[source]);    bool result = values[source].has_integer_value();    CYG_REPORT_RETVAL(result);    return result;}boolCdlValue::has_double_value(CdlValueSource source) const{    CYG_REPORT_FUNCNAMETYPE("CdlValue::has_value", "result %d");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_INVARIANT_THISC(CdlValue);        if (CdlValueSource_Current == source) {        source = current_source;    }    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    CYG_PRECONDITIONC(source_valid[source]);    bool result = values[source].has_double_value();    CYG_REPORT_RETVAL(result);    return result;}cdl_intCdlValue::get_integer_value(CdlValueSource source) const{    CYG_REPORT_FUNCNAMETYPE("CdlValue::get_integer_value", "value %ld");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_PRECONDITION_THISC();    if (CdlValueSource_Current == source) {        source = current_source;    }    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    CYG_PRECONDITIONC(source_valid[source]);    cdl_int result = values[source].get_integer_value();    CYG_REPORT_RETVAL(result);    return result;}doubleCdlValue::get_double_value(CdlValueSource source) const{    CYG_REPORT_FUNCNAME("CdlValue::get_double_value");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_PRECONDITION_THISC();    if (CdlValueSource_Current == source) {        source = current_source;    }    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    CYG_PRECONDITIONC(source_valid[source]);    double result = values[source].get_double_value();    CYG_REPORT_RETURN();    return result;}CdlSimpleValueCdlValue::get_simple_value(CdlValueSource source) const{    CYG_REPORT_FUNCNAME("CdlValue::get_simple_value");    CYG_REPORT_FUNCARG2XV(this, source);    CYG_PRECONDITION_THISC();    if (CdlValueSource_Current == source) {        source = current_source;    }    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    CYG_PRECONDITIONC(source_valid[source]);    CYG_REPORT_RETURN();    return values[source];}//}}}//{{{  Value modification                       // ----------------------------------------------------------------------------voidCdlValue::set_enabled(bool val, CdlValueSource source){    CYG_REPORT_FUNCNAME("CdlValue::set_enabled");    CYG_REPORT_FUNCARG3XV(this, val, source);    CYG_INVARIANT_THISC(CdlValue);    CYG_PRECONDITIONC((CdlValueFlavor_Bool == flavor) || (CdlValueFlavor_BoolData == flavor));    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    enabled[source] = val;    source_valid[source] = true;    if (source > current_source) {        current_source = source;    }        CYG_REPORT_RETURN();}voidCdlValue::set_value(CdlSimpleValue& val, CdlValueSource source){    CYG_REPORT_FUNCNAME("CdlValue::set_value");    CYG_REPORT_FUNCARG3XV(this, &val, source);    CYG_INVARIANT_THISC(CdlValue);    CYG_PRECONDITIONC((CdlValueFlavor_BoolData == flavor) || (CdlValueFlavor_Data == flavor));    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));        values[source] = val;    source_valid[source] = true;    if (source > current_source) {        current_source = source;    }        CYG_REPORT_RETURN();}voidCdlValue::set_enabled_and_value(bool enabled_arg, CdlSimpleValue& val, CdlValueSource source){    CYG_REPORT_FUNCNAME("CdlValue::set_enabled_and_value");    CYG_REPORT_FUNCARG4XV(this, enabled_arg, &val, source);    CYG_INVARIANT_THISC(CdlValue);    CYG_PRECONDITIONC(CdlValueFlavor_BoolData == flavor);    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    enabled[source]      = enabled_arg;    values[source]       = val;    source_valid[source] = true;    if (source > current_source) {        current_source = source;    }        CYG_REPORT_RETURN();}// ----------------------------------------------------------------------------// Given a SimpleValue, this member function does the right thing// for the flavor.voidCdlValue::set(CdlSimpleValue& val, CdlValueSource source){    CYG_REPORT_FUNCNAME("CdlValue::set");    CYG_REPORT_FUNCARG3XV(this, &val, source);    CYG_INVARIANT_THISC(CdlValue);    CYG_ASSERTC((CdlValueFlavor_Bool == flavor) || (CdlValueFlavor_BoolData == flavor) || (CdlValueFlavor_Data == flavor));    CYG_PRECONDITIONC((0 <= source) && (source < CdlValue_number_of_sources));    switch(flavor) {      case CdlValueFlavor_Bool:        enabled[source] = val.get_bool_value();        break;      case CdlValueFlavor_BoolData:        if (!val.get_bool_value()) {            enabled[source] = false;            values[source]  = (cdl_int) 0;        } else {            enabled[source] = true;            values[source]  = val;        }        break;                    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -