Listing 3
// Record and Field class definitions
namespace OpenRJ
{
public __gc class Field;
public __gc class Record;
public __gc class Database;
}
namespace OpenRJ
{
[System::Reflection::DefaultMemberAttribute("Item")]
public __gc __abstract class Database
{
/// Construction
protected:
Database(::openrj::ORJDatabaseA const *database);
public:
~Database();
/// Operations
private:
void Close();
protected:
void Dispose();
/// Properties
public:
/// The number of lines in the database
__property int get_NumLines();
/// The number of fields in the database
__property int get_NumFields();
/// The number of records in the database
__property int get_NumRecords();
/// Enumerate the records in the database
IEnumerator *GetEnumerator();
/// Access the records by index
__property virtual Record *get_Item(int index);
/// Members
private:
::openrj::ORJDatabaseA const *m_database;
ArrayList *m_records;
};
}
namespace OpenRJ
{
[System::Reflection::DefaultMemberAttribute("Item")]
public __gc __sealed class Record
{
/// Construction
private public:
Record( ::openrj::ORJRecordA const *record
, ::OpenRJ::Database *database);
/// Properties
public:
/// The number of fields in the record
__property int get_NumFields();
/// The record within which this record resides
__property ::OpenRJ::Database *get_Database();
/// Enumerate the fields in the record
IEnumerator *GetEnumerator();
/// Access the fields by index
__property Field *get_Item(int index);
#ifdef INDEXER_RETURNS_STRING
__property String *get_Item(String *fieldName);
#else /* ? INDEXER_RETURNS_STRING */
__property Field *get_Item(String *fieldName);
#endif /* INDEXER_RETURNS_STRING */
/// Converts the record to a string form
String *ToString();
/// Members
private:
::openrj::ORJRecordA const *m_record;
::OpenRJ::Database *m_database;
ArrayList *m_fields;
};
}
namespace OpenRJ
{
public __gc __sealed class Field
{
/// Construction
private public:
Field(::openrj::ORJFieldA const *field, ::OpenRJ::Record *record);
/// Properties
public:
/// The name of the field
__property String *get_Name();
/// The value of the field
__property String *get_Value();
/// The record within which this field resides
__property ::OpenRJ::Record *get_Record();
/// Converts the field to a string form
String *ToString();
/// Members
public private:
::openrj::ORJFieldA const *m_field;
private:
::OpenRJ::Record *m_record;
};
}