# ====================
# The VCDFile Object and Related Objects (the interface stuff)
# ====================
#' VCD2R -- Loading Value Change Dumps into R.
#'
#' TODO: Package doc.
#'
#' @section Foo: Blurb, section
#'
#' @docType package
#' @name VCD2R
NULL
#>NULL
#' Create an VCDFileObject
#'
#' @param filename The file to open.
#' @param parseHeader A flag whether the header should be parsed on opening the file. Default is TRUE.
#' @return An VCDFileObject containing information on \code{file}.
#' @examples
#' \dontrun{
#' VCDFile()
#' VCDFile("inter.vcd")
#' VCDFile("inter.vcd",F)
#' }
#' @export
VCDFile <- function(filename = NA_character_,parseHeader = T){
vcd <- list(
filename = filename,
date = NA,
version = NA_character_,
timescale = NA_integer_,
dumpstart = c(0,0), # keep track of where $enddefinitons was, so we can fast-forward to it at later parsing
hierarchy = NA
)
if (!is.na(filename)) {
if (!file.exists(filename)) {
warning("File does not exist: ", filename)
vcd$filename <- NA_character_
} else {
if (parseHeader) {
parseResult <- parseVCDHeader(vcd)
vcd$date <- parseResult$date
vcd$version <- parseResult$version
vcd$timescale <- parseResult$timescale
vcd$dumpstart <- parseResult$dumpstart
vcd$hierarchy <- parseResult$hierarchy
}
}
}
## Set the name for the class
class(vcd) <- append(class(vcd),"VCDFile")
return(vcd)
}
# =========================
# pretty printing function for VCDFile
# =========================
print.VCDFile <- function(x, printVars = F) {
writeLines(paste0("file: ",x$filename))
if (length(x$version) > 1) x$version <- c("",x$version)
if (length(x$date) > 1) x$date <- c("",x$date)
writeLines(paste0("generated by: ",paste0(x$version,collapse="\n ")))
writeLines(paste0("dump time: ",paste0(x$date,collapse="\n ")))
writeLines(paste0("timescale: ",paste0(x$timescale,collapse=" ")))
if (any(class(x$hierarchy)=="Node"))
nSignals <- x$hierarchy$leafCount
else
nSignals <- 0
writeLines(paste0("number of signals: ",nSignals))
if (printVars)
print(x$hierarchy,"humanReadableName")
invisible(x)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.