Support optimized surface export from grid model layers

* #7885 Update opm-common with optimized coordinate import
* #7885 Allow null as default result from a script method
* #7885 Propagate default parameter values to generated Python code
* #7885 Add CommandRouter as hub for worker methods
* #7885 Add support for use of CommadRouter from Python
This commit is contained in:
Magne Sjaastad
2021-08-23 11:58:32 +02:00
committed by GitHub
parent 2ef22f518c
commit 3a94078867
28 changed files with 1587 additions and 863 deletions

View File

@@ -182,16 +182,7 @@ QString caf::PdmPythonGenerator::generate( PdmObjectFactory* factory, std::vecto
}
else
{
QString valueString;
// Always make sure the default value for a ptrField is empty string
if ( !field->hasPtrReferencedObjects() )
{
QTextStream valueStream( &valueString );
scriptability->readFromField( valueStream, true, true );
}
if ( valueString.isEmpty() ) valueString = QString( "\"\"" );
valueString = pythonifyDataValue( valueString );
QString valueString = getDefaultValue( field );
QString fieldCode =
QString( " self.%1 = %2\n" ).arg( snake_field_name ).arg( valueString );
@@ -264,16 +255,20 @@ QString caf::PdmPythonGenerator::generate( PdmObjectFactory* factory, std::vecto
QStringList argumentComments;
outputArgumentStrings.push_back( QString( "\"%1\"" ).arg( methodName ) );
QString returnComment = method->defaultResult()->xmlCapability()->classKeyword();
QString returnComment;
if ( method->defaultResult() ) returnComment = method->defaultResult()->xmlCapability()->classKeyword();
for ( auto field : arguments )
{
bool isList = field->xmlCapability()->isVectorField();
QString defaultValue = isList ? "[]" : "None";
auto scriptability = field->capability<PdmAbstractFieldScriptingCapability>();
auto argumentName = camelToSnakeCase( scriptability->scriptFieldName() );
auto dataType = dataTypeString( field, false );
auto scriptability = field->capability<PdmAbstractFieldScriptingCapability>();
auto argumentName = camelToSnakeCase( scriptability->scriptFieldName() );
auto dataType = dataTypeString( field, false );
bool isList = field->xmlCapability()->isVectorField();
if ( isList ) dataType = "List of " + dataType;
QString defaultValue = getDefaultValue( field );
inputArgumentStrings.push_back( QString( "%1=%2" ).arg( argumentName ).arg( defaultValue ) );
outputArgumentStrings.push_back( QString( "%1=%1" ).arg( argumentName ) );
argumentComments.push_back(
@@ -406,6 +401,39 @@ QString caf::PdmPythonGenerator::generate( PdmObjectFactory* factory, std::vecto
return generatedCode;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString PdmPythonGenerator::getDefaultValue( PdmFieldHandle* field )
{
QString defaultValue = "None";
bool isList = field->xmlCapability()->isVectorField();
if ( isList )
{
defaultValue = "[]";
}
else
{
QString valueString;
// Always make sure the default value for a ptrField is empty string
if ( !field->hasPtrReferencedObjects() )
{
auto scriptability = field->template capability<PdmAbstractFieldScriptingCapability>();
QTextStream valueStream( &valueString );
scriptability->readFromField( valueStream, true, true );
}
if ( valueString.isEmpty() ) valueString = QString( "\"\"" );
valueString = pythonifyDataValue( valueString );
defaultValue = valueString;
}
return defaultValue;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -54,6 +54,9 @@ public:
static QString dataTypeString( const PdmFieldHandle* field, bool useStrForUnknownDataTypes );
static QString pythonifyDataValue( const QString& dataValue );
private:
static QString getDefaultValue( PdmFieldHandle* field );
};
} // namespace caf