BRL-CAD
Loading...
Searching...
No Matches
directory Struct Reference

#include <directory.h>

Collaboration diagram for directory:
[legend]

Data Fields

uint32_t d_magic
 Magic number.
 
chard_namep
 pointer to name string
 
union { 
 
   b_off_t   file_offset 
 disk address in obj file More...
 
   void *   ptr 
 ptr to in-memory-only obj More...
 
d_un 
 
struct directoryd_forw
 link to next dir entry
 
struct animated_animate
 link to animation
 
long d_uses
 number of uses, from instancing
 
size_t d_len
 number of of db granules used
 
long d_nref
 number of times ref'ed by COMBs
 
int d_flags
 flags
 
unsigned char d_major_type
 object major type
 
unsigned char d_minor_type
 object minor type
 
struct bu_list d_use_hd
 heads list of uses (struct soltab l2)
 
char d_shortname [16]
 Stash short names locally.
 
voidu_data
 void pointer hook for user data. user is responsible for freeing.
 

Detailed Description

One of these structures is allocated in memory to represent each named object in the database.

Note that a d_addr of RT_DIR_PHONY_ADDR ((b_off_t)-1) means that database storage has not been allocated yet.

Note that there is special handling for RT_DIR_INMEM "in memory" overrides.

Construction should be done only by using RT_GET_DIRECTORY() Destruction should be done only by using db_dirdelete().

Special note: In order to reduce the overhead of acquiring heap memory (e.g., via bu_strdup()) to stash the name in d_namep, we carry along enough storage for small names right in the structure itself (d_shortname). Thus, d_namep should never be assigned to directly, it should always be accessed using RT_DIR_SET_NAMEP() and RT_DIR_FREE_NAMEP().

The in-memory name of an object should only be changed using db_rename(), so that it can be requeued on the correct linked list, based on new hash. This should be followed by rt_db_put_internal() on the object to modify the on-disk name.

Note that d_minor_type and the corresponding idb_minor_type of an rt_db_internal associated with a given directory structure should match.

Definition at line 62 of file directory.h.

Field Documentation

◆ d_magic

uint32_t d_magic

Magic number.

Definition at line 63 of file directory.h.

◆ d_namep

char* d_namep

pointer to name string

Definition at line 64 of file directory.h.

◆ file_offset

b_off_t file_offset

disk address in obj file

Definition at line 66 of file directory.h.

◆ ptr

void* ptr

ptr to in-memory-only obj

Definition at line 67 of file directory.h.

◆ [union]

union { ... } d_un

◆ d_forw

struct directory* d_forw

link to next dir entry

Definition at line 69 of file directory.h.

◆ d_animate

struct animate* d_animate

link to animation

Definition at line 70 of file directory.h.

◆ d_uses

long d_uses

number of uses, from instancing

Definition at line 71 of file directory.h.

◆ d_len

size_t d_len

number of of db granules used

Definition at line 72 of file directory.h.

◆ d_nref

long d_nref

number of times ref'ed by COMBs

Definition at line 73 of file directory.h.

◆ d_flags

int d_flags

flags

Definition at line 74 of file directory.h.

◆ d_major_type

unsigned char d_major_type

object major type

Definition at line 75 of file directory.h.

◆ d_minor_type

unsigned char d_minor_type

object minor type

Definition at line 76 of file directory.h.

◆ d_use_hd

struct bu_list d_use_hd

heads list of uses (struct soltab l2)

Definition at line 77 of file directory.h.

◆ d_shortname

char d_shortname[16]

Stash short names locally.

Definition at line 78 of file directory.h.

◆ u_data

void* u_data

void pointer hook for user data. user is responsible for freeing.

Definition at line 79 of file directory.h.


The documentation for this struct was generated from the following file: