// ------------------------------- // // -------- Start of File -------- // // ------------------------------- // // ----------------------------------------------------------- // // C++ Header File Name: grocery.h // Compiler Used: MSVC, BCC32, GCC, HPUX aCC, SOLARIS CC // Produced By: DataReel Software Development Team // File Creation Date: 09/18/1997 // Date Last Modified: 06/17/2016 // Copyright (c) 2001-2024 DataReel Software Development // ----------------------------------------------------------- // // ---------- Include File Description and Details ---------- // // ----------------------------------------------------------- // /* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA This is a test program use to test the Persistent base class. */ // ----------------------------------------------------------- // #ifndef __GROCERY_HPP__ #define __GROCERY_HPP__ #include "gxdlcode.h" #include "gpersist.h" #include "gxfloat.h" // Type definitions typedef char * Name_t; // String type typedef gxFLOAT64 Price_t; // Floating point type typedef gxINT32 StockNumber_t; // Integer type // Constants const unsigned MAX_NAME_LENGTH = 64; // Max object name length const gxClassID ClassGroceryID = 1024; // Arbitrary class ID const Name_t null_name = 0; // Value used for null item names // Primary key type used by this database struct GroceryKey_t { char object_name[MAX_NAME_LENGTH]; // Object name gxObjectID object_id; // Object data file address/identification number gxClassID class_id; // Object class identification number }; // Primary key class used by this database class GroceryKey : public DatabaseKeyB { public: GroceryKey(); GroceryKey(const char *name, gxObjectID oid = (gxObjectID_t)0, gxClassID cid = (gxClassID_t)0); public: // Base class interface size_t KeySize() { return sizeof(key); } int operator==(const DatabaseKeyB& k) const; int operator>(const DatabaseKeyB& k) const; // NOTE: This comparison function is only used if the // __USE_SINGLE_COMPARE__ preprocessor directive is // defined when the program is compiled. int CompareKey(const DatabaseKeyB& key) const; public: char *ObjectName() { return key.object_name; } gxObjectID ObjectID() const { return key.object_id; } gxClassID ClassID() const { return key.class_id; } void SetObjectName(const char *s); void SetObjectID(gxObjectID oid) { key.object_id = oid; } void SetClassID(gxClassID cid) { key.class_id = cid; } private: GroceryKey_t key; }; // Persistent object database class Grocery : public gxPersistent { public: Grocery(POD *podfile) : gxPersistent(podfile) { name = null_name; stock_number = (StockNumber_t)0; price = (Price_t)0; } Grocery(const POD *podfile) : gxPersistent(podfile) { name = null_name; stock_number = (StockNumber_t)0; price = (Price_t)0; } Grocery() { name = null_name; stock_number = (StockNumber_t)0; price = (Price_t)0; } public: StockNumber_t StockNumber() { return stock_number; } Price_t Price() { return price; } Name_t Name() { return name; } void SetStockNumber(StockNumber_t n) { stock_number = n; } void SetPrice(Price_t p) { price = p; } void SetName(Name_t n) { name = n; } void ClearName(); public: // Database utility functions int CompareIndex(unsigned index_number); int RebuildIndexFile(const char *fname, unsigned index_number, int num_trees, BtreeNodeOrder_t node_order); public: // Runtime type information functions gxClassID GetClassID() { return ClassGroceryID; } const char *GetClassName() { return (const char *)"Class Grocery"; } private: // Base class interface virtual gxDatabaseError Write(); virtual gxDatabaseError Read(FAU Address); virtual int Find(); virtual int Delete(); virtual __UWORD__ ObjectLength(); private: Name_t name; StockNumber_t stock_number; Price_t price; }; #endif // __GROCERY_HPP__ // ----------------------------------------------------------- // // ------------------------------- // // --------- End of File --------- // // ------------------------------- //