📄 parameter_data.cpp
字号:
//---------------------------------------------------------
bool CSG_Parameter_Data_Object_Output::Set_DataObject_Type(TSG_Data_Object_Type Type)
{
if( m_Type == DATAOBJECT_TYPE_Undefined ) // m_Type should not be changed after set once!!!...
{
switch( Type )
{
default:
break;
case DATAOBJECT_TYPE_Grid:
case DATAOBJECT_TYPE_Table:
case DATAOBJECT_TYPE_Shapes:
case DATAOBJECT_TYPE_TIN:
m_Type = Type;
return( true );
}
}
return( false );
}
///////////////////////////////////////////////////////////
// //
// Grid //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Grid::CSG_Parameter_Grid(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data_Object(pOwner, Constraint)
{
m_Type = GRID_TYPE_Undefined;
}
CSG_Parameter_Grid::~CSG_Parameter_Grid(void)
{}
//---------------------------------------------------------
bool CSG_Parameter_Grid::Set_Value(void *Value)
{
CSG_Grid_System *pSystem;
if( Value == DATAOBJECT_CREATE && !m_pOwner->is_Optional() )
{
Value = DATAOBJECT_NOTSET;
}
if( m_pDataObject != Value )
{
pSystem = Get_System();
if( Value == DATAOBJECT_NOTSET || Value == DATAOBJECT_CREATE
|| pSystem == NULL || pSystem->is_Equal(((CSG_Grid *)Value)->Get_System()) )
{
m_pDataObject = (CSG_Data_Object *)Value;
return( true );
}
else if( !m_pOwner->Get_Owner()->is_Managed() && pSystem != NULL )
{
pSystem->Assign(((CSG_Grid *)Value)->Get_System());
m_pDataObject = (CSG_Data_Object *)Value;
return( true );
}
}
return( false );
}
//---------------------------------------------------------
CSG_Grid_System * CSG_Parameter_Grid::Get_System(void)
{
if( m_pOwner->Get_Parent() && m_pOwner->Get_Parent()->Get_Type() == PARAMETER_TYPE_Grid_System )
{
return( m_pOwner->Get_Parent()->asGrid_System() );
}
return( NULL );
}
//---------------------------------------------------------
void CSG_Parameter_Grid::Set_Preferred_Type(TSG_Grid_Type Type)
{
m_Type = Type;
}
//---------------------------------------------------------
void CSG_Parameter_Grid::On_Assign(CSG_Parameter_Data *pSource)
{
CSG_Parameter_Data_Object::On_Assign(pSource);
m_Type = ((CSG_Parameter_Grid *)pSource)->m_Type;
}
///////////////////////////////////////////////////////////
// //
// Table //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Table::CSG_Parameter_Table(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data_Object(pOwner, Constraint)
{}
CSG_Parameter_Table::~CSG_Parameter_Table(void)
{}
//---------------------------------------------------------
bool CSG_Parameter_Table::Set_Value(void *Value)
{
int i;
CSG_Parameters *pParameters;
if( m_pDataObject != Value )
{
m_pDataObject = (CSG_Data_Object *)Value;
pParameters = m_pOwner->Get_Owner();
for(i=0; i<pParameters->Get_Count(); i++)
{
if( pParameters->Get_Parameter(i)->Get_Parent() == m_pOwner
&& pParameters->Get_Parameter(i)->Get_Type() == PARAMETER_TYPE_Table_Field )
{
pParameters->Get_Parameter(i)->Set_Value(0);
}
}
return( true );
}
return( false );
}
///////////////////////////////////////////////////////////
// //
// Shapes //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Shapes::CSG_Parameter_Shapes(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data_Object(pOwner, Constraint)
{
m_Type = SHAPE_TYPE_Undefined;
}
CSG_Parameter_Shapes::~CSG_Parameter_Shapes(void)
{}
//---------------------------------------------------------
bool CSG_Parameter_Shapes::Set_Value(void *Value)
{
int i;
CSG_Parameters *pParameters;
if( Value != DATAOBJECT_NOTSET && Value != DATAOBJECT_CREATE
&& m_Type != SHAPE_TYPE_Undefined && m_Type != ((CSG_Shapes *)Value)->Get_Type() )
{
return( false );
}
if( m_pDataObject != Value )
{
m_pDataObject = (CSG_Data_Object *)Value;
pParameters = m_pOwner->Get_Owner();
for(i=0; i<pParameters->Get_Count(); i++)
{
if( pParameters->Get_Parameter(i)->Get_Parent() == m_pOwner
&& pParameters->Get_Parameter(i)->Get_Type() == PARAMETER_TYPE_Table_Field )
{
pParameters->Get_Parameter(i)->Set_Value(0);
}
}
return( true );
}
return( false );
}
//---------------------------------------------------------
void CSG_Parameter_Shapes::Set_Shape_Type(TSG_Shape_Type Type)
{
m_Type = Type;
}
//---------------------------------------------------------
void CSG_Parameter_Shapes::On_Assign(CSG_Parameter_Data *pSource)
{
CSG_Parameter_Data_Object::On_Assign(pSource);
m_Type = ((CSG_Parameter_Shapes *)pSource)->m_Type;
}
///////////////////////////////////////////////////////////
// //
// TIN //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_TIN::CSG_Parameter_TIN(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data_Object(pOwner, Constraint)
{}
CSG_Parameter_TIN::~CSG_Parameter_TIN(void)
{}
//---------------------------------------------------------
bool CSG_Parameter_TIN::Set_Value(void *Value)
{
int i;
CSG_Parameters *pParameters;
if( m_pDataObject != Value )
{
m_pDataObject = (CSG_Data_Object *)Value;
pParameters = m_pOwner->Get_Owner();
for(i=0; i<pParameters->Get_Count(); i++)
{
if( pParameters->Get_Parameter(i)->Get_Parent() == m_pOwner
&& pParameters->Get_Parameter(i)->Get_Type() == PARAMETER_TYPE_Table_Field )
{
pParameters->Get_Parameter(i)->Set_Value(0);
}
}
return( true );
}
return( false );
}
///////////////////////////////////////////////////////////
// //
// List //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_List::CSG_Parameter_List(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data(pOwner, Constraint)
{
m_Objects = NULL;
m_nObjects = 0;
}
CSG_Parameter_List::~CSG_Parameter_List(void)
{
Del_Items();
}
//---------------------------------------------------------
const SG_Char * CSG_Parameter_List::asString(void)
{
if( Get_Count() > 0 )
{
m_String.Printf(SG_T("%d %s ("), Get_Count(), Get_Count() == 1 ? LNG("[VAL] object") : LNG("[VAL] objects"));
for(int i=0; i<Get_Count(); i++)
{
if( i > 0 )
{
m_String.Append(SG_T(", "));
}
m_String.Append(asDataObject(i)->Get_Name());
}
m_String.Append(SG_T("))"));
}
else
{
m_String.Printf(LNG("[VAL] No objects"));
}
return( m_String );
}
//---------------------------------------------------------
void CSG_Parameter_List::Add_Item(CSG_Data_Object *pObject)
{
if( pObject )
{
m_Objects = (CSG_Data_Object **)SG_Realloc(m_Objects, (m_nObjects + 1) * sizeof(CSG_Data_Object *));
m_Objects[m_nObjects++] = pObject;
}
}
//---------------------------------------------------------
int CSG_Parameter_List::Del_Item(int iObject)
{
int i;
if( iObject >= 0 && iObject < m_nObjects )
{
m_nObjects--;
for(i=iObject; i<m_nObjects; i++)
{
m_Objects[i] = m_Objects[i + 1];
}
m_Objects = (CSG_Data_Object **)SG_Realloc(m_Objects, m_nObjects * sizeof(CSG_Data_Object *));
}
return( m_nObjects );
}
int CSG_Parameter_List::Del_Item(CSG_Data_Object *pObject)
{
int i;
for(i=0; i<m_nObjects; i++)
{
if( pObject == m_Objects[i] )
{
return( Del_Item(i) );
}
}
return( 0 );
}
//---------------------------------------------------------
void CSG_Parameter_List::Del_Items(void)
{
if( m_nObjects > 0 )
{
SG_Free(m_Objects);
m_Objects = NULL;
m_nObjects = 0;
}
}
//---------------------------------------------------------
void CSG_Parameter_List::On_Assign(CSG_Parameter_Data *pSource)
{
Del_Items();
for(int i=0; i<((CSG_Parameter_List *)pSource)->Get_Count(); i++)
{
Add_Item(((CSG_Parameter_List *)pSource)->asDataObject(i));
}
}
//---------------------------------------------------------
bool CSG_Parameter_List::On_Serialize(CSG_File &Stream, bool bSave)
{
if( bSave )
{
for(int i=0; i<Get_Count(); i++)
{
if( asDataObject(i)->Get_File_Name() )
{
Stream.Printf(SG_T("%s\n"), asDataObject(i)->Get_File_Name());
}
}
Stream.Printf(SG_T("%s\n"), ENTRY_DATAOBJECTLIST_END);
}
else
{
CSG_String sLine;
CSG_Data_Object *pObject;
while( Stream.Read_Line(sLine) && sLine.Cmp(ENTRY_DATAOBJECTLIST_END) )
{
if( (pObject = SG_UI_DataObject_Find(sLine, -1)) != NULL )
{
Add_Item(pObject);
}
}
}
return( true );
}
///////////////////////////////////////////////////////////
// //
// Grid_List //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Grid_List::CSG_Parameter_Grid_List(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_List(pOwner, Constraint)
{
}
CSG_Parameter_Grid_List::~CSG_Parameter_Grid_List(void)
{}
//---------------------------------------------------------
CSG_Grid_System * CSG_Parameter_Grid_List::Get_System(void)
{
if( m_pOwner->Get_Parent() && m_pOwner->Get_Parent()->Get_Type() == PARAMETER_TYPE_Grid_System )
{
return( m_pOwner->Get_Parent()->asGrid_System() );
}
return( NULL );
}
///////////////////////////////////////////////////////////
// //
// Table_List //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Table_List::CSG_Parameter_Table_List(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_List(pOwner, Constraint)
{}
CSG_Parameter_Table_List::~CSG_Parameter_Table_List(void)
{}
///////////////////////////////////////////////////////////
// //
// Shapes_List //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Shapes_List::CSG_Parameter_Shapes_List(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_List(pOwner, Constraint)
{
m_Type = SHAPE_TYPE_Undefined;
}
CSG_Parameter_Shapes_List::~CSG_Parameter_Shapes_List(void)
{}
//---------------------------------------------------------
void CSG_Parameter_Shapes_List::Set_Shape_Type(TSG_Shape_Type Type)
{
m_Type = Type;
}
//---------------------------------------------------------
void CSG_Parameter_Shapes_List::On_Assign(CSG_Parameter_Data *pSource)
{
CSG_Parameter_List::On_Assign(pSource);
m_Type = ((CSG_Parameter_Shapes_List *)pSource)->m_Type;
}
///////////////////////////////////////////////////////////
// //
// TIN_List //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_TIN_List::CSG_Parameter_TIN_List(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_List(pOwner, Constraint)
{}
CSG_Parameter_TIN_List::~CSG_Parameter_TIN_List(void)
{}
///////////////////////////////////////////////////////////
// //
// Parameters //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Parameters::CSG_Parameter_Parameters(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data(pOwner, Constraint)
{
m_pParameters = new CSG_Parameters(pOwner->Get_Owner()->Get_Owner(), pOwner->Get_Name(), pOwner->Get_Description());
}
CSG_Parameter_Parameters::~CSG_Parameter_Parameters(void)
{
delete(m_pParameters);
}
//---------------------------------------------------------
const SG_Char * CSG_Parameter_Parameters::asString(void)
{
m_String.Printf(SG_T("%d %s"), m_pParameters->Get_Count(), LNG("parameters"));
return( m_String );
}
//---------------------------------------------------------
void CSG_Parameter_Parameters::On_Assign(CSG_Parameter_Data *pSource)
{
m_pParameters->Assign(((CSG_Parameter_Parameters *)pSource)->m_pParameters);
}
//---------------------------------------------------------
bool CSG_Parameter_Parameters::On_Serialize(CSG_File &Stream, bool bSave)
{
return( m_pParameters->Serialize(Stream, bSave) );
}
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -