// ========== Copyright Header Begin ========================================== // // OpenSPARC T2 Processor File: CTTransactionID.vr // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved // 4150 Network Circle, Santa Clara, California 95054, U.S.A. // // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; version 2 of the License. // // This program 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 General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // For the avoidance of doubt, and except that if any non-GPL license // choice is available it will apply instead, Sun elects to use only // the General Public License version 2 (GPLv2) at this time for any // software where a choice of GPL license versions is made // available with the language indicating that GPLv2 or any later version // may be used, or where a choice of which version of the GPL is applied is // otherwise unspecified. // // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, // CA 95054 USA or visit www.sun.com if you need additional information or // have any questions. // // ========== Copyright Header End ============================================ #include class CTTransactionID { //////////////////////////////////////////////////////////////////////////// // Member Variables // protected integer TransID; protected integer ContextID; protected integer StrategyID; // //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// // Member Methods // task new(integer ContextID = 'hx, integer StrategyID = 'hx, integer TransID = 'hx); virtual task SetTransID(integer value); virtual task SetContextID(integer value); virtual task SetStrategyID(integer value); virtual function integer GetTransID(); virtual function integer GetContextID(); virtual function integer GetStrategyID(); virtual function string GetString(); // return a string for printing IDs virtual function string GetSString(); // return a string for printing IDs (for backward compatibility) virtual function CTTransactionID NextContextID(); // return a new instantion of an ID object with the next ContextID virtual function CTTransactionID NextStrategyID(); // return a new instantion of an ID object with the next StrategyID virtual function CTTransactionID NextTransID(); // return a new instantion of an ID object with the next TransID // //////////////////////////////////////////////////////////////////////////// } //////////////////////////////////////////////////////////////////////////// // Set // task CTTransactionID::new(integer ContextID = 'hx, integer StrategyID = 'hx, integer TransID = 'hx) { this.SetContextID(ContextID); this.SetStrategyID(StrategyID); this.SetTransID(TransID); } task CTTransactionID::SetTransID(integer value) {TransID = value;} task CTTransactionID::SetContextID(integer value) {ContextID = value;} task CTTransactionID::SetStrategyID(integer value) {StrategyID = value;} // //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// // Get // function integer CTTransactionID::GetTransID() {GetTransID = TransID;} function integer CTTransactionID::GetContextID() {GetContextID = ContextID;} function integer CTTransactionID::GetStrategyID() {GetStrategyID = StrategyID;} function string CTTransactionID::GetString() { // sprintf (GetString, "TransID=%0d StrategyID=%0d ContextID=%0d", TransID, StrategyID, ContextID); sprintf (GetString, "(c%0d,s%0d,t%0d)", ContextID, StrategyID, TransID); } function string CTTransactionID::GetSString() { GetSString = GetString(); } // //////////////////////////////////////////////////////////////////////////// function CTTransactionID CTTransactionID::NextContextID() { NextContextID = new(ContextID++, 0, 0); } function CTTransactionID CTTransactionID::NextStrategyID() { NextStrategyID = new(ContextID, StrategyID++, 0); } function CTTransactionID CTTransactionID::NextTransID() { NextTransID = new(ContextID, StrategyID, TransID++); } // // end CTTransactionID //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////