一、 Pathname类的使用
实现了一个类,Pathname来实现对目录的操作。该类的new方法是protected的,表示外部不可以调用new方法创建该对象实例。而是要通过其他方法来得到对象实例。
调用类的create方法,获取单例对象实例。需要传入待操作的目录。
以下是Pathname类提供的外部可以调用的方法:
如以下代码:
abs_dir设置为一个绝对路径的文件。
执行结果:
对于一个非绝对路径的文件。
执行结果,因为是相对路径,因此isAbsolute函数返回0。
二、 Pathname类解析
在Pathname类中,有一个qs类型的变量comp。
这是一个typedef定义的类型,在svlib_private_base_pkg.svh中,有定义。
qs是一个字符串类型的队列。
对于Pathname类,create方法。该方法,是获取单例对象。调用Obstack类,获取单例对象。然后调用Pathname类中的set方法。
对于Obstack,是一个参数化的类。参数就是类,这里就是Pathname。该类,继承Pathname,因此可以使用Pathname类的new方法,创建对象实例。
Pathname类的set方法。首先是调用Str类的create方法.
Str是一个类,该类的new方法也是protected,因此外部不能调用new方法创建该类对象实例。需要调用create方法,来获取对象实例。
同样是调用Obstack得到对象实例。然后调用Str类的setClean方法。其实就是将类中的protect变量value,设置为传入的参数。
调用Str类的split方法,对类中的value变量,按照指定的分隔符,进行切分,结果保存在动态数组components中。
将components中的内容,保存到 Pathname类的comps队列中。同时判断value的第一个字符内容是不是/,是的话,表示绝对路径,否则不是绝对路径。
假如传递的path为 /home/jun.lu/test/test.sv。
假如传递的path为../test/test.sv
Pathname类中的set,append,apendPN,copy方法,会对comps这个队列内容进行修改。
而Pathname类中的其他的方法,其实就是根据comps队列的内容,然后进行处理,返回不同的信息。
#### 更多相关阅读
sv与c之间字符串传递的DPI实现
svlib(1)-介绍
使用IMC将覆盖率转化为网页格式