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; }; }