Files
2024-05-18 23:53:26 +08:00

321 lines
12 KiB
C

/**
* @file GoTools.h
* @brief Declares the GoTool classes.
*
* @internal
* Copyright (C) 2016-2021 by LMI Technologies Inc.
* Licensed under the MIT License.
* Redistributed files must retain the above copyright notice.
*/
#ifndef GO_TOOLS_H
#define GO_TOOLS_H
#include <GoSdk/GoSdkDef.h>
#include <GoSdk/Tools/GoTool.h>
#include <GoSdk/Tools/GoExtTool.h>
#include <GoSdk/Tools/GoProfileTools.h>
#include <GoSdk/Tools/GoRangeTools.h>
#include <GoSdk/Tools/GoSurfaceTools.h>
typedef kObject GoToolOption;
/**
* @class GoTools
* @extends kObject
* @ingroup GoSdk-Tools
* @brief Represents a collection of tools.
*/
typedef kObject GoTools;
/**
* Returns the current number of tools.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.0.10.27
* @param tools GoTools object.
* @return The current tool count.
*/
GoFx(kSize) GoTools_ToolCount(GoTools tools);
/**
* Returns a tool handle at the given index.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.0.10.27
* @param tools GoTools object.
* @param index The index with which to retrieve a tool.
* @return A handle to a tool at the given index or kNULL if the index is invalid.
*/
GoFx(GoTool) GoTools_ToolAt(GoTools tools, kSize index);
/**
* Moves a tool to another position in the array
*
* @public @memberof GoTools
* @version Introduced in firmware 4.7.9.77
* @param tools GoTools object.
* @param index The index with which tool to move around.
* @param newIndex The new index at which the tool will be moved too
* @return Operation status
*/
GoFx(kStatus) GoTools_MoveTool(GoTools tools, kSize index, kSize newIndex);
/**
* [Deprecated] Use GoTools_AddToolByName() instead.
*
* Adds a tool and returns a handle to it. NOTE: This function will always succeed,
* but the tool handle will be null if passed in and an error occurs.
*
* @deprecated
* @public @memberof GoTools
* @version Introduced in firmware 4.0.10.27
* @param tools GoTools object.
* @param type The tool type enumerator value representing the type of tool to add.
* @param tool A pointer to the newly added tool.
* @return Operation status.
*/
GoFx(kStatus) GoTools_AddTool(GoTools tools, GoToolType type, GoTool* tool);
/**
* Removes a tool at the given index.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.0.10.27
* @param tools GoTools object.
* @param index The index with which to remove a tool.
* @return Operation status.
*/
GoFx(kStatus) GoTools_RemoveTool(GoTools tools, kSize index);
/**
* Removes all tools in the given GoTools instance.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.0.10.27
* @param tools GoTools object.
* @return Operation status.
*/
GoFx(kStatus) GoTools_ClearTools(GoTools tools);
/**
* Returns an enabled measurement handle if the specified ID is valid.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.0.10.27
* @param tools GoTools object.
* @param id The measurement ID to search for.
* @return A GoMeasurement object if an enabled measurement with the ID is found, otherwise kNULL.
*/
GoFx(GoMeasurement) GoTools_FindMeasurementById(GoTools tools, k32u id);
/**
* Automatically update a given measurement to use a valid ID within the set of tools contained in the GoTools object.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.0.10.27
* @param tools GoTools object.
* @param measurement GoMeasurement object to update.
* @return Operation status.
*/
GoFx(kStatus) GoTools_AssignMeasurementId(GoTools tools, GoMeasurement measurement);
/**
* Returns the number of tool options available for the current configuration.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.3.3.124
* @param tools GoTools object.
* @return The number of tool options available for the current configuration.
*/
GoFx(kSize) GoTools_ToolOptionCount(GoTools tools);
/**
* Retrieves the tool option at the given index.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.3.3.124
* @param tools GoTools object.
* @param index The index of the option list to access.
* @return The tool option associated with the given index.
*/
GoFx(GoToolOption) GoTools_ToolOptionAt(GoTools tools, kSize index);
/**
* Returns the name associated with the given tool option.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.3.3.124
* @param option GoToolOption object.
* @return The name associated with the tool option.
*/
GoFx(const kChar*) GoToolOption_Name(GoToolOption option);
/**
* Returns the number of measurement options available for the given tool option.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.3.3.124
* @param option GoToolOption object.
* @return The number of measurement options available for the given tool option.
*/
GoFx(kSize) GoToolOption_MeasurementOptionCount(GoToolOption option);
/**
* Retrieves the measurement option at the given index of the tool option.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.3.3.124
* @param option GoToolOption object.
* @param index The index of the option list to access.
* @return The measurement option associated with the given index.
*/
GoFx(const GoMeasurementOption*) GoToolOption_MeasurementOptionAt(GoToolOption option, kSize index);
/**
* Returns the number of feature options available for the given tool option.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.6.3.27
* @param option GoToolOption object.
* @return The number of feature options available for the given tool option.
*/
GoFx(kSize) GoToolOption_FeatureOptionCount(GoToolOption option);
/**
* Retrieves the feature option at the given index of the tool option.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.6.3.27
* @param option GoToolOption object.
* @param index The index of the option list to access.
* @return The feature option associated with the given index.
*/
GoFx(const GoFeatureOption*) GoToolOption_FeatureOptionAt(GoToolOption option, kSize index);
/**
* Returns the number of tool data output options available for the given tool option.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.7.3.97
* @param option GoToolOption object.
* @return The number of tool data output options available for the given tool option.
*/
GoFx(kSize) GoToolOption_ToolDataOutputOptionCount(GoToolOption option);
/**
* Retrieves the tool data output option at the given index of the tool option.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.7.3.97
* @param option GoToolOption object.
* @param index The index of the option list to access.
* @return The tool data output option associated with the given index.
*/
GoFx(const GoToolDataOutputOption*) GoToolOption_ToolDataOutputOptionAt(GoToolOption option, kSize index);
/**
* Adds a tool by name.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.3.3.124
* @param tools GoTools object.
* @param optionName The name of the tool to add.
* @param tool A handle to the newly constructed tool. kNULL can be used.
* @return Operation status.
* @see GoTools_ToolOptionCount, GoTools_ToolOptionAt, GoToolOption_Name
*/
GoFx(kStatus) GoTools_AddToolByName(GoTools tools, const kChar* optionName, GoTool* tool);
/**
* Adds a measurement to a tool via a string representing the type.
*
* @public @memberof GoTools
* @version Introduced in firmware 4.3.3.124
* @param tools GoTools object.
* @param tool The tool of which the measurement is being added.
* @param type The measurement type represented as a string to be added.
* @param name The name to assign the new measurement.
* @param measurement A handle to the newly added measurement. kNULL can be used.
* @return Operation status.
* @see GoTools_ToolOptionCount, GoTools_ToolOptionAt,
* GoToolOption_MeasurementOptionCount, GoToolOption_MeasurementOptionAt
*/
GoFx(kStatus) GoTools_AddMeasurementByName(GoTools tools, GoTool tool, const kChar* type, const kChar* name, GoMeasurement* measurement);
/**
* @class GoScript
* @extends GoTool
* @ingroup GoSdk-Tools
* @brief Represents a script tool.
*/
typedef GoTool GoScript;
/**
* Gets the code for the script.
*
* @public @memberof GoScript
* @version Introduced in firmware 4.0.10.27
* @param tool GoScript object.
* @param code Receives a null-terminated string containing the script code.
* @return Operation status.
*/
GoFx(kStatus) GoScript_Code(GoScript tool, kChar** code);
/**
* Sets the code for the script.
*
* @public @memberof GoScript
* @version Introduced in firmware 4.0.10.27
* @param tool GoScript object.
* @param code The code to set.
* @return Operation status.
*/
GoFx(kStatus) GoScript_SetCode(GoScript tool, kChar* code);
/**
* Adds a script output.
*
* @public @memberof GoScript
* @version Introduced in firmware 4.0.10.27
* @param tool GoScript object.
* @param id An ID (must not already be used by other measurements) of the script output to add.
* @return Operation status.
*/
GoFx(kStatus) GoScript_AddOutput(GoScript tool, k32u id);
/**
* Removes a script output with the specific ID.
*
* @public @memberof GoScript
* @version Introduced in firmware 4.0.10.27
* @param tool GoScript object.
* @param id An ID of the script output to remove.
* @return Operation status.
*/
GoFx(kStatus) GoScript_RemoveOutput(GoScript tool, k32u id);
/**
* Returns the count of script tool outputs.
*
* @public @memberof GoScript
* @version Introduced in firmware 4.0.10.27
* @param tool GoScript object.
* @return Script output count.
*/
GoFx(kSize) GoScript_OutputCount(GoScript tool);
/**
* Returns a handle to a script output at the given index.
*
* @public @memberof GoScript
* @version Introduced in firmware 4.0.10.27
* @param tool GoScript object.
* @param index The index with which to return a corresponding script output.
* @return A GoScriptOutput object or kNULL if the index is invalid.
*/
GoFx(GoScriptOutput) GoScript_OutputAt(GoScript tool, kSize index);
#include <GoSdk/Tools/GoTools.x.h>
#endif