µOS++ IIIe Reference 7.0.0
The third edition of µOS++, a POSIX inspired open source framework, written in C++
Loading...
Searching...
No Matches
os::posix::directory_implementable< T > Class Template Reference

#include <directory.h>

+ Inheritance diagram for os::posix::directory_implementable< T >:

Public Types

using value_type = T
 

Public Member Functions

Constructors & Destructor
 directory_implementable (file_system &fs)
 
virtual ~directory_implementable () override
 
Public Member Functions
value_typeimpl (void) const
 
Public Member Functions
virtual direntread (void)
 
virtual void rewind (void)
 
virtual int close (void)
 
direntdir_entry (void)
 
class file_systemget_file_system (void) const
 

Detailed Description

template<typename T>
class os::posix::directory_implementable< T >

Definition at line 308 of file directory.h.

Member Typedef Documentation

◆ value_type

template<typename T >
using os::posix::directory_implementable< T >::value_type = T

Definition at line 313 of file directory.h.

Constructor & Destructor Documentation

◆ directory_implementable()

template<typename T >
os::posix::directory_implementable< T >::directory_implementable ( file_system fs)

Definition at line 519 of file directory.h.

521 : directory{ impl_instance_ }, //
522 impl_instance_{ fs }
523 {
524#if defined(OS_TRACE_POSIX_IO_DIRECTORY)
525 trace::printf ("directory_implementable::%s()=@%p\n", __func__, this);
526#endif
527 }
directory(directory_impl &impl)
Definition directory.cpp:33
int printf(const char *format,...)
Write a formatted string to the trace device.
Definition trace.cpp:59

References os::trace::printf().

◆ ~directory_implementable()

template<typename T >
os::posix::directory_implementable< T >::~directory_implementable
overridevirtual

Definition at line 535 of file directory.h.

536 {
537#if defined(OS_TRACE_POSIX_IO_DIRECTORY)
538 trace::printf ("directory_implementable::%s() @%p\n", __func__, this);
539#endif
540 }

References os::trace::printf().

Member Function Documentation

◆ close()

int os::posix::directory::close ( void  )
virtualinherited

Reimplemented in os::posix::directory_lockable< T, L >.

Definition at line 84 of file directory.cpp.

85 {
86#if defined(OS_TRACE_POSIX_IO_DIRECTORY)
87 trace::printf ("directory::%s() @%p\n", __func__, this);
88#endif
89
90 // assert(file_system_ != nullptr);
91 errno = 0;
92
93 // Execute the implementation specific code.
94 int ret = impl ().do_close ();
95 if (ret != 0)
96 {
97 trace::printf ("directory::%s() @%p do_close() returned %d\n",
98 __func__, this, ret);
99 }
100
101 // The file object will be deallocated at the next open.
103
104 return ret;
105 }
virtual int do_close(void)=0
class file_system & get_file_system(void) const
Definition directory.h:491
directory_impl & impl(void) const
Definition directory.h:503
void add_deferred_directory(directory *dir)

References os::posix::file_system::add_deferred_directory(), os::posix::directory_impl::do_close(), os::posix::directory::get_file_system(), os::posix::directory::impl(), and os::trace::printf().

Referenced by __posix_closedir(), and os::posix::directory_lockable< T, L >::close().

◆ dir_entry()

dirent * os::posix::directory::dir_entry ( void  )
inlineinherited

Definition at line 497 of file directory.h.

498 {
499 return &(impl ().dir_entry_);
500 }

References os::posix::directory::impl().

◆ get_file_system()

file_system & os::posix::directory::get_file_system ( void  ) const
inlineinherited

Definition at line 491 of file directory.h.

492 {
493 return impl ().get_file_system ();
494 }
class file_system & get_file_system(void) const
Definition directory.h:511

References os::posix::directory_impl::get_file_system(), and os::posix::directory::impl().

Referenced by os::posix::directory::close().

◆ impl()

template<typename T >
directory_implementable< T >::value_type & os::posix::directory_implementable< T >::impl ( void  ) const

Definition at line 545 of file directory.h.

546 {
547 return static_cast<value_type&> (impl_);
548 }

◆ read()

dirent * os::posix::directory::read ( void  )
virtualinherited

Reimplemented in os::posix::directory_lockable< T, L >.

Definition at line 50 of file directory.cpp.

51 {
52#if defined(OS_TRACE_POSIX_IO_DIRECTORY)
53 trace::printf ("directory::%s() @%p\n", __func__, this);
54#endif
55
56 // assert(file_system_ != nullptr);
57
58 // POSIX requires not to change errno when end of directory is
59 // encountered. However, in this implementation, errno is
60 // always cleared when entering system calls.
61 errno = 0;
62
63 // Execute the implementation specific code.
64 return impl ().do_read ();
65 }
virtual dirent * do_read(void)=0

References os::posix::directory_impl::do_read(), os::posix::directory::impl(), and os::trace::printf().

Referenced by __posix_readdir(), and os::posix::directory_lockable< T, L >::read().

◆ rewind()

void os::posix::directory::rewind ( void  )
virtualinherited

Reimplemented in os::posix::directory_lockable< T, L >.

Definition at line 68 of file directory.cpp.

69 {
70#if defined(OS_TRACE_POSIX_IO_DIRECTORY)
71 trace::printf ("directory::%s() @%p\n", __func__, this);
72#endif
73
74 // assert(file_system_ != nullptr);
75
76 // POSIX does not mention what to do with errno.
77 errno = 0;
78
79 // Execute the implementation specific code.
80 impl ().do_rewind ();
81 }
virtual void do_rewind(void)=0

References os::posix::directory_impl::do_rewind(), os::posix::directory::impl(), and os::trace::printf().

Referenced by __posix_rewinddir(), and os::posix::directory_lockable< T, L >::rewind().


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