---
title: "For developers: Hidden fasterRaster functions"
output: rmarkdown::html_vignette
author: "Adam B. Smith"
date: "`r Sys.Date()`"
vignette: >
  %\VignetteIndexEntry{For developers: Hidden fasterRaster functions}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
fig.path = 'man/figures/'
```

**fasterRaster** contains a set of "private" functions that users can access using `fasterRaster:::functionName`. These functions are useful for power users and developers. Not all hidden functions are listed here. Often, a method will have a hidden function of the same name that starts with a period (e.g., `.plot()`). This "period" function is intended to be supplied the [`sources()`](https://adamlilith.github.io/fasterRaster/reference/sources.html) name of a `GRaster` or `GVector` from other functions so that the calling function does not need to spend the time creating the `GRaster` or `GVector` pointer before calling the function. "Period" functions will, though, often work on `GRaster`s or `GVector`s, though some error-checking and region re-definition is not conducted.

## General
* `.backdoor()`: Calls [faster()] and sets **GRASS** folder to "C:/Program Files/GRASS GIS X.Y", plus other options useful for development.
* `.fileExt()`: Get file extension
* `.ls()`: Lists the `sources` of all objects in the active **GRASS** "project/location"
* `.message()`: Display a warning or message if the given warning has not been displayed since **fasterRaster** was attached or if a given number of hours has passed
* `.quiet()`: Returns "quiet" if `faster("debug")` is `TRUE`
* `.workDir()`: Working directory of a `GLocation` object

## Rasters and vectors
* `.copyGSpatial()`: Make a copy of the **GRASS** file pointed to by a `GRaster` or `GVector`
* `.exists()`: Does the **GRASS** file of a `GRaster` or `GVector` exist?
* `.ext()`: Extent from the [`sources()`](https://adamlilith.github.io/fasterRaster/reference/sources.html) name of a `GRaster` or `GVector`
* `.makeSourceNames()`: Makes one or more statistically unique strings that can be used as file names to represent rasters or vectors in **GRASS**
* `.plot()`: Plot using the [`sources()`](https://adamlilith.github.io/fasterRaster/reference/sources.html) name of a `GRaster` or `GVector`
* `.projection()`: Value of the `@projection` slot in a `GRaster` or `GVector`
* `.rastInfo()` and `.vectInfo()`: Metadata for a **GRASS** raster or vector
* `.rename()`: Rename a **GRASS** raster or vector
* `.rm()`: Delete rasters or vectors in **GRASS**

## Vectors
* `.aggDisaggVect()`: Aggregate or disaggregate a vector using its [`sources()`](https://adamlilith.github.io/fasterRaster/reference/sources.html) name.
* `.geomtype()`: Geometry type ("point", "line", or "area") from the [`sources()`](https://adamlilith.github.io/fasterRaster/reference/sources.html) name of a `GVector`
* `.validVector()`: Test if a `GVector` is valid.
* `.vAsDataTable()`: Convert the attribute table linked to a vector in **GRASS** to a `data.table`. This table is distinct from the attribute table attached to a `GVector`
* `.vAttachDatabase()`: Add a database table to the **GRASS** representation of a `GVector`
* `.vCats()`: Get a `data.table` with a single column named `cat`, which corresponds to the **GRASS** attribute table's `cat` column
* `.vDetachDatabase()`: Detach the **GRASS** database from a **GRASS** vector
* `.vHasDatabase()`: Tests if **GRASS** vector has a database
* `.vIncrementCats()`: Increment category values of a `GVector`
* `.vNames()`: "**GRASS**" vector attribute table column names
* `.vRecat()`: Change **GRASS** category indices of a **GRASS** vector
* `.vValidCats()`: Are category values of a vector valid?

## Rasters
* `.layerIndex()`: Gets the index of `GRaster` layers from a numeric, integer, character, or logical vector
* `.makeGRaster()` and `.makeGVector()`: Make `GRaster`s or `GVector`s from a vector of `sources`, which are pointers to files in **GRASS**
* `.minVal()` and `.maxVal()`: Values in the `@minVal` and `@maxVal` slots in a `GRaster`
* `.nlevels()`: Number of levels in a `SpatVector`, `data.frame`, `data.table`, empty string, or a list of `data.frame`s, `data.table`s, and/or empty strings.

## **GRASS** "Projects/locations" and "mapsets"
* `.locationCreate()` Make a connection to **GRASS** (i.e., start **GRASS** from within **R**) and create a location
* `.locationDelete()` Deletes all files associated with a **GRASS** "location" and mapset
* `.locationFind()`: Find a specific **GRASS** "location" that already exists
* `.locationRestore()` Reconnect **GRASS** to a previously-created **GRASS** "location"
* `.locations()`: List of all available "locations"
* `.g.proj()`: Runs **GRASS** `g.proj` module to display projection of current "project"
* `.g.region()`: Runs **GRASS** `g.region` module to display region of current "project"
* `.mapset()`: **GRASS** "mapset" of an object or the active session

## **GRASS** "regions"
* `.region()`: Change or report the active region's extent and resolution
* `.regionDim()]`: Change or report the active region's resolution (also [`dim()`](https://adamlilith.github.io/fasterRaster/reference/dim.html) and related functions, with no arguments)
* `.regionExt()`: Change or report the active region's extent (also [`ext()`](https://adamlilith.github.io/fasterRaster/reference/ext.html) and related functions, with no arguments)
* `.regionRes()`: Change or report the active region's dimensions (also [`res()`](https://adamlilith.github.io/fasterRaster/reference/res.html) and related functions, with no arguments)

~ FINIS ~