We want to be consistent with the previous layout, to avoid needlessly breaking existing codes. The header update means client codes are not required to include all of the stepcode library includes explicitly - i.e., stepcode itself does not force this requirement with its own internal includes. However, if client codes do not want to add the library prefixes to their own includes as we have for stepcode, they should still be able to add the various includes and work as before. Adjust the include directory names accordingly.
125 lines
3.4 KiB
C++
125 lines
3.4 KiB
C++
#ifndef EXPLICITITEMID_H
|
|
#define EXPLICITITEMID_H
|
|
|
|
#include "interfacedItem.h"
|
|
|
|
class SC_CORE_EXPORT Explicit_item_id : public Interfaced_item {
|
|
protected:
|
|
Explicit_item_id();
|
|
Explicit_item_id( const Explicit_item_id & );
|
|
Explicit_item_id( const char * foreign_schema, TypeDescriptor * ld,
|
|
const char * oi, const char * ni )
|
|
: Interfaced_item( foreign_schema ), _local_definition( ld ), _original_id( oi ), _new_id( ni ) {}
|
|
virtual ~Explicit_item_id();
|
|
public:
|
|
// definition in the local schema. The TypeDescriptor (or subtype) is not
|
|
// implemented quite right - the name in it is the original (foreign
|
|
// schema) name. The USE or REFERENCED renames are listed in
|
|
// TypeDescriptor's altNames member variable.
|
|
// Warning: This is currently a null ptr for objects other than
|
|
// types and entities - that is - if this is a USEd FUNCTION or PROCEDURE
|
|
// this ptr will be null.
|
|
const TypeDescriptor * _local_definition;
|
|
|
|
#ifdef _MSC_VER
|
|
#pragma warning( push )
|
|
#pragma warning( disable: 4251 )
|
|
#endif
|
|
// name in originating schema - only exists if it has been renamed.
|
|
Express_id _original_id;
|
|
|
|
Express_id _new_id; // original or renamed name via USE or REFERENCE (non-SDAI)
|
|
#ifdef _MSC_VER
|
|
#pragma warning( pop )
|
|
#endif
|
|
|
|
const TypeDescriptor * local_definition_() const {
|
|
return _local_definition;
|
|
}
|
|
|
|
const Express_id original_id_() const {
|
|
return _original_id;
|
|
}
|
|
|
|
// non-sdai, renamed name
|
|
const Express_id new_id_() const {
|
|
return _new_id;
|
|
}
|
|
|
|
// return string "USE" or "REFERENCE"
|
|
virtual const char * EXPRESS_type() = 0;
|
|
|
|
// private:
|
|
void local_definition_( const TypeDescriptor * td ) {
|
|
_local_definition = td;
|
|
}
|
|
void original_id_( const Express_id & ei ) {
|
|
_original_id = ei;
|
|
}
|
|
|
|
// non-sdai
|
|
void new_id_( const Express_id & ni ) {
|
|
_new_id = ni;
|
|
}
|
|
};
|
|
|
|
typedef Explicit_item_id * Explicit_item_id_ptr;
|
|
|
|
|
|
class SC_CORE_EXPORT Explicit_item_id__set {
|
|
public:
|
|
Explicit_item_id__set( int = 16 );
|
|
~Explicit_item_id__set();
|
|
|
|
Explicit_item_id_ptr & operator[]( int index );
|
|
void Insert( Explicit_item_id_ptr, int index );
|
|
void Append( Explicit_item_id_ptr );
|
|
void Remove( int index );
|
|
int Index( Explicit_item_id_ptr );
|
|
|
|
int Count();
|
|
void Clear();
|
|
private:
|
|
void Check( int index );
|
|
private:
|
|
Explicit_item_id_ptr * _buf;
|
|
int _bufsize;
|
|
int _count;
|
|
};
|
|
|
|
typedef Explicit_item_id__set * Explicit_item_id__set_ptr;
|
|
typedef Explicit_item_id__set_ptr Explicit_item_id__set_var;
|
|
|
|
class SC_CORE_EXPORT Used_item : public Explicit_item_id {
|
|
public:
|
|
Used_item() {}
|
|
Used_item( const char * foreign_schema, TypeDescriptor * ld,
|
|
const char * oi, const char * ni )
|
|
: Explicit_item_id( foreign_schema, ld, oi, ni ) {}
|
|
virtual ~Used_item() {}
|
|
|
|
const char * EXPRESS_type() {
|
|
return "USE";
|
|
}
|
|
};
|
|
|
|
typedef Used_item * Used_item_ptr;
|
|
|
|
class SC_CORE_EXPORT Referenced_item : public Explicit_item_id {
|
|
public:
|
|
Referenced_item() {}
|
|
Referenced_item( const char * foreign_schema, TypeDescriptor * ld,
|
|
const char * oi, const char * ni )
|
|
: Explicit_item_id( foreign_schema, ld, oi, ni ) {}
|
|
virtual ~Referenced_item() {}
|
|
|
|
const char * EXPRESS_type() {
|
|
return "REFERENCE";
|
|
}
|
|
};
|
|
|
|
typedef Referenced_item * Referenced_item_ptr;
|
|
|
|
|
|
#endif //EXPLICITITEMID_H
|