std::string EmblemCellRenderer::do_get_property(GParamSpec* pspec) { std::string tmp = pspec->name; if (tmp == "icon-name") { return this->_icon_name; } else if (tmp == "emblem-name") { return this->_emblem_name; } else if (tmp == "icon-tint") { return this->_icon_tint; } else { throw AttributeError(std::string("unknown property ") + pspec->name); } }
iterator operator[](const char* key) { unsigned int i = 0; while (i != SelfClass::__fields_len__) { if (this->_fields[i]->getName() == key) { return iterator(*this, i); } ++i; } throw AttributeError( "Attribute not found: '" + std::string(key) + "' in class '" + SelfClass::__name__ + "'." ); }
void EmblemCellRenderer::do_set_property(GParamSpec* pspec, std::string value) { std::string tmp = pspec->name; if (tmp == "icon-name") { this->_icon_name = value; } else if (tmp == "emblem-name") { this->_emblem_name = value; } else if (tmp == "icon-tint") { this->_icon_tint = value; if (!this->_icon_tint.empty()) { this->_tint_color = new Gdk::RGBA(value); } else { delete this->_tint_color; this->_tint_color = 0; } } else { throw AttributeError(std::string("unknown property ") + pspec->name); } }
// Make this a wrapped function so that error bubbling can be done properly double _Props(std::string Output, std::string Name1, double Prop1, std::string Name2, double Prop2, std::string Ref) { if (get_debug_level()>5){ std::cout<<__FILE__<<": "<<Output.c_str()<<","<<Name1.c_str()<<","<<Prop1<<","<<Name2.c_str()<<","<<Prop2<<","<<Ref.c_str()<<std::endl; } /* If the fluid name is not actually a refrigerant name, but a string beginning with "REFPROP-", then REFPROP is used to calculate the desired property. */ if (IsREFPROP(Ref)) // First eight characters match "REFPROP-" { // Stop here if there is no REFPROP support if (REFPROPFluidClass::refpropSupported()) { return REFPROP(Output,Name1,Prop1,Name2,Prop2,Ref); } else { throw AttributeError(format("Your refrigerant [%s] is from REFPROP, but CoolProp does not support REFPROP on this platform, yet.",Ref.c_str())); return -_HUGE; } } else if (IsCoolPropFluid(Ref)) { pFluid = Fluids.get_fluid(Ref); // Convert all the parameters to integers long iOutput = get_param_index(Output); if (iOutput<0) throw ValueError(format("Your output key [%s] is not valid. (names are case sensitive)",Output.c_str())); long iName1 = get_param_index(std::string(Name1)); if (iName1<0) throw ValueError(format("Your input key #1 [%s] is not valid. (names are case sensitive)",Name1.c_str())); long iName2 = get_param_index(std::string(Name2)); if (iName2<0) throw ValueError(format("Your input key #2 [%s] is not valid. (names are case sensitive)",Name2.c_str())); // Call the internal method that uses the parameters converted to longs return _CoolProp_Fluid_Props(iOutput,iName1,Prop1,iName2,Prop2,pFluid); } // It's a brine, call the brine routine else if (IsBrine((char*)Ref.c_str())) { //Enthalpy and pressure are the inputs if ((Name1.c_str()[0]=='H' && Name2.c_str()[0]=='P') || (Name2.c_str()[0]=='H' && Name1.c_str()[0]=='P')) { if (Name2.c_str()[0]=='H' && Name1.c_str()[0]=='P') { std::swap(Prop1,Prop2); std::swap(Name1,Name2); } // Start with a guess of 10 K below max temp of fluid double Tguess = SecFluids('M',Prop1,Prop2,(char*)Ref.c_str())-10; // Solve for the temperature double T =_T_hp_secant(Ref,Prop1,Prop2,Tguess); // Return whatever property is desired return SecFluids(Output[0],T,Prop2,(char*)Ref.c_str()); } else if ((Name1.c_str()[0] == 'T' && Name2.c_str()[0] =='P') || (Name1.c_str()[0] == 'P' && Name2.c_str()[0] == 'T')) { if (Name1.c_str()[0] =='P' && Name2.c_str()[0] =='T'){ std::swap(Prop1,Prop2); } return SecFluids(Output[0],Prop1,Prop2,(char*)Ref.c_str()); } else { throw ValueError("For brine, inputs must be (order doesnt matter) 'T' and 'P', or 'H' and 'P'"); } } // It's an incompressible liquid, call the routine else if (IsIncompressibleLiquid((char*)Ref.c_str())) { //Enthalpy and pressure are the inputs if ((Name1.c_str()[0]=='H' && Name2.c_str()[0]=='P') || (Name2.c_str()[0]=='H' && Name1.c_str()[0]=='P')) { if (Name2.c_str()[0]=='H' && Name1.c_str()[0]=='P') { std::swap(Prop1,Prop2); std::swap(Name1,Name2); } // Solve for the temperature double T =_T_hp_secant(Ref,Prop1,Prop2,300); // Return whatever property is desired return IncompLiquid(get_param_index(Output),T,Prop2,(char*)Ref.c_str()); } else if ((Name1.c_str()[0] == 'T' && Name2.c_str()[0] =='P') || (Name1.c_str()[0] == 'P' && Name2.c_str()[0] == 'T')) { if (Name1.c_str()[0] =='P' && Name2.c_str()[0] =='T'){ std::swap(Prop1,Prop2); } return IncompLiquid(get_param_index(Output),Prop1,Prop2,Ref); } else { throw ValueError("For brine, inputs must be (order doesnt matter) 'T' and 'P', or 'H' and 'P'"); } } else { throw ValueError(format("Your fluid name [%s] is not a CoolProp fluid, a REFPROP fluid, a brine or a liquid",Ref.c_str())); } }