annotate foosdk/sdk/pfc/filehandle.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 namespace pfc {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 typedef HANDLE fileHandle_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 const fileHandle_t fileHandleInvalid = INVALID_HANDLE_VALUE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 typedef int fileHandle_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 constexpr fileHandle_t fileHandleInvalid = -1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 void fileHandleClose( fileHandle_t h ) noexcept;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 fileHandle_t fileHandleDup( fileHandle_t h );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 class fileHandle {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 fileHandle( fileHandle_t val ) : h(val) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 fileHandle() : h ( fileHandleInvalid ) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 ~fileHandle() noexcept { close(); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 fileHandle( fileHandle && other ) noexcept { h = other.h; other.clear(); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 void operator=( fileHandle && other ) noexcept { close(); h = other.h; other.clear(); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 void operator=( fileHandle_t other ) { close(); h = other; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 void close() noexcept;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 void clear() noexcept { h = fileHandleInvalid; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 bool isValid() noexcept { return h != fileHandleInvalid; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 fileHandle_t h;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 fileHandle( const fileHandle & ) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 void operator=( const fileHandle & ) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 }