blob: 87dccdd01ce6ea0af3bd0fb431f164ad2e196a8f [file] [log] [blame]
//
// -------------------------------------------------------------
// Copyright 2004-2008 Synopsys, Inc.
// All Rights Reserved Worldwide
//
// Licensed under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in
// writing, software distributed under the License is
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See
// the License for the specific language governing
// permissions and limitations under the License.
// -------------------------------------------------------------
//
`ifndef VMM_SQL_DB_ASCII__SV
`define VMM_SQL_DB_ASCII__SV
class vmm_sql_db_ascii extends vmm_sql_db;
local bit last_failed;
local int fp;
extern function new(string dbname,
bit append = 0);
extern virtual function int status();
extern virtual function int statement(string sql_stmt);
extern virtual function void close();
// Return an ID that is unique in the DB
extern local virtual function int get_unique_id();
endclass: vmm_sql_db_ascii
//------------------------------------------------------------------
//
// Implementation
//
function vmm_sql_db_ascii::new(string dbname,
bit append = 0);
string expanded_name;
super.new();
expanded_name = Xexpand_nameX(dbname);
this.last_failed = 0;
this.log = new("SQLdb", expanded_name);
this.fp = $fopen(expanded_name, (append) ? "a" : "w");
if (!this.fp) begin
`vmm_error(this.log, {"Unable to open ", expanded_name, " for writing."});
this.last_failed = 1;
end else begin
Xcreate_system_tablesX();
end
endfunction: new
function int vmm_sql_db_ascii::status();
return(this.last_failed);
endfunction: status
function int vmm_sql_db_ascii::statement(string sql_stmt);
if (!this.fp) begin
`vmm_error(this.log,
{"File ",
this.log.get_instance(),
" not open for writing."});
this.last_failed = 1;
end else begin
$fwrite(this.fp, "%s\n", sql_stmt);
this.last_failed = 0;
end
return(this.last_failed);
endfunction: statement
function void vmm_sql_db_ascii::close();
$fclose(this.fp);
endfunction: close
function int vmm_sql_db_ascii::get_unique_id();
return $ftell(this.fp);
endfunction: get_unique_id
`endif