mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
This is a follow-up of 3cd1253. A C++ program was written to automate the license update originally. That program was translated to Python so it can be kept in the repository and run when needed. It has been tested on Windows using the standard Python 3 installation and on Linux.
The original version skipped files that had "//" at the beginning since most were files that should be excluded. The relevant files are now in an exclusion list and the rest are processed normally. The .hpp file extension has been added as well. The script rewrote CompressorJNI.cpp to remove the carriage returns from its line endings.
48 lines
1.7 KiB
C++
48 lines
1.7 KiB
C++
/*----------------------------------------------------------------------------*/
|
|
/* Copyright (c) FIRST 2008-2016. All Rights Reserved. */
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
|
/* the project. */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include "../Errors.h"
|
|
#include "HAL/cpp/priority_mutex.h"
|
|
|
|
#include <vector>
|
|
|
|
// TODO: Replace this with something appropriate to avoid conflicts with
|
|
// wpilibC++ Resource class (which performs an essentially identical function).
|
|
namespace hal {
|
|
|
|
/**
|
|
* The Resource class is a convenient way to track allocated resources.
|
|
* It tracks them as indicies in the range [0 .. elements - 1].
|
|
* E.g. the library uses this to track hardware channel allocation.
|
|
*
|
|
* The Resource class does not allocate the hardware channels or other
|
|
* resources; it just tracks which indices were marked in use by
|
|
* Allocate and not yet freed by Free.
|
|
*/
|
|
class Resource {
|
|
public:
|
|
Resource(const Resource&) = delete;
|
|
Resource& operator=(const Resource&) = delete;
|
|
explicit Resource(uint32_t size);
|
|
virtual ~Resource() = default;
|
|
static void CreateResourceObject(Resource** r, uint32_t elements);
|
|
uint32_t Allocate(const char* resourceDesc);
|
|
uint32_t Allocate(uint32_t index, const char* resourceDesc);
|
|
void Free(uint32_t index);
|
|
|
|
private:
|
|
std::vector<bool> m_isAllocated;
|
|
priority_recursive_mutex m_allocateLock;
|
|
|
|
static priority_recursive_mutex m_createLock;
|
|
};
|
|
|
|
} // namespace hal
|