Panda3D
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions

PathReplace Class Reference

This encapsulates the user's command-line request to replace existing, incorrect pathnames to models and textures from a file with correct pathnames. More...

#include "pathReplace.h"

Inheritance diagram for PathReplace:
ReferenceCount MemoryBase

List of all members.

Classes

class  Component
class  Entry

Public Member Functions

void add_pattern (const string &orig_prefix, const string &replacement_prefix)
 Adds the indicated original/replace pattern to the specification.
void clear ()
 Removes all the patterns from the specification.
void clear_error ()
 Resets the error flag to the no-error state.
Filename convert_path (const Filename &orig_filename, const DSearchPath &additional_path=DSearchPath())
 Calls match_path() followed by store_path(), to replace the initial prefix and then convert the file for storing, as the user indicated.
void full_convert_path (const Filename &orig_filename, const DSearchPath &additional_path, Filename &resolved_path, Filename &output_path)
 Converts the input path into two different forms: A resolved path, and an output path.
int get_num_patterns () const
 Returns the number of original/replace patterns that have been added.
const string & get_orig_prefix (int n) const
 Returns the original prefix associated with the nth pattern.
int get_ref_count () const
 Returns the current reference count.
const string & get_replacement_prefix (int n) const
 Returns the replacement prefix associated with the nth pattern.
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object.
bool had_error () const
 Returns true if an error was detected since the last call to clear_error(), false otherwise.
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
bool is_empty () const
 Returns true if the PathReplace object specifies no action, or false if convert_path() may do something.
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
Filename match_path (const Filename &orig_filename, const DSearchPath &additional_path=DSearchPath())
 Looks for a match for the given filename among all the replacement patterns, and returns the first match found.
void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete[] (void *, void *)
void operator delete[] (void *ptr)
void * operator new (size_t size)
void * operator new (size_t size, void *ptr)
void * operator new[] (size_t size)
void * operator new[] (size_t size, void *ptr)
void ref () const
 Explicitly increments the reference count.
Filename store_path (const Filename &orig_filename)
 Given a path to an existing filename, converts it as specified in the _path_store and or _path_directory properties to a form suitable for storing in an output file.
bool test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
bool test_ref_count_nonzero () const
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
virtual bool unref () const
 Explicitly decrements the reference count.
void weak_ref (WeakPointerToVoid *ptv)
 Adds the indicated PointerToVoid as a weak reference to this object.
void weak_unref (WeakPointerToVoid *ptv)
 Removes the indicated PointerToVoid as a weak reference to this object.
void write (ostream &out, int indent_level=0) const

Static Public Member Functions

static TypeHandle get_class_type ()
static void init_type ()

Public Attributes

bool _exists
bool _noabs
DSearchPath _path
Filename _path_directory
PathStore _path_store

Protected Member Functions

bool do_test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
bool do_test_ref_count_nonzero () const
 Returns true if the reference count is nonzero, false otherwise.

Detailed Description

This encapsulates the user's command-line request to replace existing, incorrect pathnames to models and textures from a file with correct pathnames.

It corresponds to a sequence of -pr command-line options, as well as the -pp option.

This can also go the next step, which is to convert a known file into a suitable form for storing in a model file. In this capacity, it corresponds to the -ps and -pd options.

Definition at line 39 of file pathReplace.h.


Member Function Documentation

void PathReplace::add_pattern ( const string &  orig_prefix,
const string &  replacement_prefix 
) [inline]

Adds the indicated original/replace pattern to the specification.

If a filename is encountered whose initial prefix matches the indicated orig_prefix, that prefix will be replaced with replacement_prefix.

Definition at line 59 of file pathReplace.I.

Referenced by ProgramBase::dispatch_path_replace().

void PathReplace::clear ( void  ) [inline]

Removes all the patterns from the specification.

Definition at line 45 of file pathReplace.I.

References clear_error().

void PathReplace::clear_error ( ) [inline]

Resets the error flag to the no-error state.

had_error() will return false until a new error is generated.

Definition at line 24 of file pathReplace.I.

Referenced by clear().

Filename PathReplace::convert_path ( const Filename orig_filename,
const DSearchPath additional_path = DSearchPath() 
) [inline]

Calls match_path() followed by store_path(), to replace the initial prefix and then convert the file for storing, as the user indicated.

Definition at line 117 of file pathReplace.I.

References full_convert_path().

bool ReferenceCount::do_test_ref_count_integrity ( ) const [protected, inherited]

Does some easy checks to make sure that the reference count isn't completely bogus.

Returns true if ok, false otherwise.

Reimplemented in NodeReferenceCount, CachedTypedWritableReferenceCount, and NodeCachedReferenceCount.

Definition at line 29 of file referenceCount.cxx.

Referenced by ReferenceCount::do_test_ref_count_nonzero(), and ReferenceCount::test_ref_count_integrity().

bool ReferenceCount::do_test_ref_count_nonzero ( ) const [protected, inherited]

Returns true if the reference count is nonzero, false otherwise.

Definition at line 56 of file referenceCount.cxx.

References ReferenceCount::do_test_ref_count_integrity().

Referenced by ReferenceCount::test_ref_count_nonzero().

void PathReplace::full_convert_path ( const Filename orig_filename,
const DSearchPath additional_path,
Filename resolved_path,
Filename output_path 
)

Converts the input path into two different forms: A resolved path, and an output path.

The resolved path is an absolute path if at all possible. The output path is in the form specified by the -ps path store option.

Definition at line 210 of file pathReplace.cxx.

References VirtualFileSystem::exists(), Filename::get_basename(), VirtualFileSystem::get_global_ptr(), Filename::is_fully_qualified(), Filename::is_local(), and VirtualFileSystem::resolve_filename().

Referenced by convert_path(), and EggBase::convert_paths().

int PathReplace::get_num_patterns ( ) const [inline]

Returns the number of original/replace patterns that have been added.

Definition at line 70 of file pathReplace.I.

const string & PathReplace::get_orig_prefix ( int  n) const [inline]

Returns the original prefix associated with the nth pattern.

Definition at line 81 of file pathReplace.I.

int ReferenceCount::get_ref_count ( ) const [inline, inherited]
const string & PathReplace::get_replacement_prefix ( int  n) const [inline]

Returns the replacement prefix associated with the nth pattern.

Definition at line 93 of file pathReplace.I.

WeakReferenceList * ReferenceCount::get_weak_list ( ) const [inline, inherited]

Returns the WeakReferenceList associated with this ReferenceCount object.

If there has never been a WeakReferenceList associated with this object, creates one now.

Definition at line 307 of file referenceCount.I.

Referenced by ReferenceCount::weak_ref().

bool PathReplace::had_error ( ) const [inline]

Returns true if an error was detected since the last call to clear_error(), false otherwise.

Definition at line 35 of file pathReplace.I.

bool ReferenceCount::has_weak_list ( ) const [inline, inherited]

Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.

In general, this will be true if there was ever a WeakPointerTo created for this object (even if there is not any for it now).

Definition at line 294 of file referenceCount.I.

Referenced by ReferenceCount::weak_unref().

bool PathReplace::is_empty ( ) const [inline]

Returns true if the PathReplace object specifies no action, or false if convert_path() may do something.

Definition at line 105 of file pathReplace.I.

References DSearchPath::is_empty().

void ReferenceCount::local_object ( ) [inline, inherited]

This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.

This allows the object to be passed to functions that will increment and decrement the object's reference count temporarily, and it will prevent the object from being deleted (inappropriately), when the reference count returns to zero. It actually achieves this by setting a large positive value in the reference count field.

Definition at line 276 of file referenceCount.I.

Referenced by PGTop::cull_callback(), BoundingSphere::extend_by_hexahedron(), AsyncTaskManager::find_task(), AsyncTaskManager::find_tasks(), and AsyncTaskManager::find_tasks_matching().

Filename PathReplace::match_path ( const Filename orig_filename,
const DSearchPath additional_path = DSearchPath() 
)

Looks for a match for the given filename among all the replacement patterns, and returns the first match found.

If additional_path is nonempty, it is an additional search path on which to look for the file. The model_path is always implicitly searched.

Definition at line 53 of file pathReplace.cxx.

References VirtualFileSystem::exists(), VirtualFileSystem::get_global_ptr(), Filename::is_fully_qualified(), Filename::is_local(), and VirtualFileSystem::resolve_filename().

void ReferenceCount::ref ( ) const [inline, inherited]

Explicitly increments the reference count.

User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.

This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.

Definition at line 179 of file referenceCount.I.

References ReferenceCount::test_ref_count_integrity().

Referenced by CachedTypedWritableReferenceCount::cache_ref(), TypedWritable::decode_raw_from_bam_stream(), NodeCachedReferenceCount::node_ref(), NodeReferenceCount::node_ref(), BamCacheRecord::set_data(), CullableObject::set_draw_callback(), and ModelRoot::set_reference().

Filename PathReplace::store_path ( const Filename orig_filename)

Given a path to an existing filename, converts it as specified in the _path_store and or _path_directory properties to a form suitable for storing in an output file.

Definition at line 161 of file pathReplace.cxx.

References Filename::get_basename(), and Filename::is_local().

bool ReferenceCount::test_ref_count_integrity ( ) const [inline, inherited]
bool ReferenceCount::test_ref_count_nonzero ( ) const [inline, inherited]

Does some easy checks to make sure that the reference count isn't zero, or completely bogus.

Returns true if ok, false otherwise.

Definition at line 252 of file referenceCount.I.

References ReferenceCount::do_test_ref_count_nonzero().

Referenced by CopyOnWritePointer::test_ref_count_nonzero().

bool ReferenceCount::unref ( ) const [inline, virtual, inherited]

Explicitly decrements the reference count.

Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic.) However, see the helper function unref_delete().

User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.

This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.

The return value is true if the new reference count is nonzero, false if it is zero.

Reimplemented in GeomVertexArrayFormat, GeomVertexFormat, InternalName, RenderAttrib, RenderEffects, RenderState, and TransformState.

Definition at line 214 of file referenceCount.I.

References ReferenceCount::test_ref_count_integrity().

Referenced by CachedTypedWritableReferenceCount::cache_unref(), TypedWritable::decode_raw_from_bam_stream(), RenderEffect::finalize(), NodeCachedReferenceCount::node_unref(), NodeReferenceCount::node_unref(), TransformState::unref(), RenderState::unref(), RenderEffects::unref(), RenderAttrib::unref(), InternalName::unref(), GeomVertexFormat::unref(), and GeomVertexArrayFormat::unref().

void ReferenceCount::weak_ref ( WeakPointerToVoid ptv) [inline, inherited]

Adds the indicated PointerToVoid as a weak reference to this object.

Definition at line 321 of file referenceCount.I.

References WeakReferenceList::add_reference(), and ReferenceCount::get_weak_list().

void ReferenceCount::weak_unref ( WeakPointerToVoid ptv) [inline, inherited]

Removes the indicated PointerToVoid as a weak reference to this object.

It must have previously been added via a call to weak_ref().

Definition at line 334 of file referenceCount.I.

References WeakReferenceList::clear_reference(), and ReferenceCount::has_weak_list().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations