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.
107 lines
2.7 KiB
C++
107 lines
2.7 KiB
C++
#ifndef INTERFACESPEC_H
|
|
#define INTERFACESPEC_H
|
|
|
|
#include "clstepcore/dictionaryInstance.h"
|
|
#include "clstepcore/explicitItemId.h"
|
|
#include "implicitItemId.h"
|
|
|
|
#include "sc_export.h"
|
|
|
|
class SC_CORE_EXPORT Interface_spec : public Dictionary_instance {
|
|
public:
|
|
#ifdef _MSC_VER
|
|
#pragma warning( push )
|
|
#pragma warning( disable: 4251 )
|
|
#endif
|
|
Express_id _current_schema_id; // schema containing the USE/REF stmt
|
|
#ifdef _MSC_VER
|
|
#pragma warning( pop )
|
|
#endif
|
|
// set of objects from USE/REFERENCE stmt(s)
|
|
Explicit_item_id__set_var _explicit_items;
|
|
Implicit_item_id__set_var _implicit_items; //not yet initialized for schema
|
|
|
|
#ifdef _MSC_VER
|
|
#pragma warning( push )
|
|
#pragma warning( disable: 4251 )
|
|
#endif
|
|
// non-SDAI, not useful for SDAI use of Interface_spec (it would need to
|
|
// be a list).
|
|
// schema that defined the USE/REFd objects
|
|
Express_id _foreign_schema_id;
|
|
#ifdef _MSC_VER
|
|
#pragma warning( pop )
|
|
#endif
|
|
|
|
// non-SDAI, not useful for SDAI use of Interface_spec (it would need to
|
|
// be a list of ints).
|
|
// schema USEs or REFERENCEs all objects from foreign schema
|
|
int _all_objects;
|
|
|
|
Interface_spec();
|
|
Interface_spec( Interface_spec & ); // not tested
|
|
Interface_spec( const char * cur_sch_id, const char * foreign_sch_id,
|
|
int all_objects = 0 );
|
|
virtual ~Interface_spec();
|
|
|
|
Express_id current_schema_id_() {
|
|
return _current_schema_id;
|
|
}
|
|
Express_id foreign_schema_id_() {
|
|
return _foreign_schema_id;
|
|
}
|
|
|
|
Explicit_item_id__set_var explicit_items_() {
|
|
return _explicit_items;
|
|
}
|
|
|
|
// this is not yet initialized for the schema
|
|
Implicit_item_id__set_var implicit_items_() {
|
|
return _implicit_items;
|
|
}
|
|
|
|
// private:
|
|
void current_schema_id_( const Express_id & ei ) {
|
|
_current_schema_id = ei;
|
|
}
|
|
void foreign_schema_id_( const Express_id & fi ) {
|
|
_foreign_schema_id = fi;
|
|
}
|
|
|
|
int all_objects_() {
|
|
return _all_objects;
|
|
}
|
|
void all_objects_( int ao ) {
|
|
_all_objects = ao;
|
|
}
|
|
};
|
|
|
|
typedef Interface_spec * Interface_spec_ptr;
|
|
|
|
class SC_CORE_EXPORT Interface_spec__set {
|
|
public:
|
|
Interface_spec__set( int = 16 );
|
|
~Interface_spec__set();
|
|
|
|
Interface_spec_ptr & operator[]( int index );
|
|
void Insert( Interface_spec_ptr, int index );
|
|
void Append( Interface_spec_ptr );
|
|
void Remove( int index );
|
|
int Index( Interface_spec_ptr );
|
|
|
|
int Count();
|
|
void Clear();
|
|
private:
|
|
void Check( int index );
|
|
private:
|
|
Interface_spec_ptr * _buf;
|
|
int _bufsize;
|
|
int _count;
|
|
};
|
|
|
|
typedef Interface_spec__set * Interface_spec__set_ptr;
|
|
typedef Interface_spec__set_ptr Interface_spec__set_var;
|
|
|
|
|
|
#endif //INTERFACESPEC_H
|