-
balaskoa authored
Signed-off-by:
balaskoa <Jeno.Balasko@ericsson.com> Change-Id: I9e57bdb502fbe75eeb0de12a91eec37cfc1a2df0
balaskoa authoredSigned-off-by:
balaskoa <Jeno.Balasko@ericsson.com> Change-Id: I9e57bdb502fbe75eeb0de12a91eec37cfc1a2df0
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
profiler.h 2.92 KiB
/******************************************************************************
* Copyright (c) 2000-2020 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Balasko, Jeno
* Baranyi, Botond
*
******************************************************************************/
#ifndef PROFILER_H
#define PROFILER_H
#include "../main.hh"
#ifdef __cplusplus
extern "C" {
#endif
/** Structure containing one code line or function for the profiler */
typedef struct profiler_code_line_t {
/** Name of the file containing this line */
char* file_name;
/** Name of the function that starts at this line (or null if no function starts here) */
char* function_name;
/** Code line number */
size_t line_no;
} profiler_code_line_t;
/** Profiler database
*
* Contains entries for the code lines in the processed TTCN-3 files.
* Used for initializing the TTCN3_Profiler (in runtime) with all the code
* lines and functions in the processed files, so it can determine which the
* unused lines and functions. */
typedef struct profiler_data_t {
profiler_code_line_t *lines;
size_t nof_lines;
size_t size;
} profiler_data_t;
/** Initializes the database (must be called once, at the start of compilation) */
void init_profiler_data(tcov_file_list* p_file_list);
/** Returns 1 if the specified file is in the profiler's file list,
* otherwise returns 0.*/
boolean is_file_profiled(const char* p_file_name);
/** Inserts one code line or function to the database
* @param p_file_name [in] name of the file containing the line/function
* @param p_function_name [in] name of the function (for functions) or null (for lines)
* @param p_line_no [in] line number (for lines) or the function's starting line
* (for functions) */
void insert_profiler_code_line(const char* p_file_name,
const char* p_function_name, size_t p_line_no);
/** Retrieves the next code line or function from the specified file. Calling this
* function with the same file parameter will keep returning the next code line
* or function until the end of the database is reached. If the file parameter is
* changed, the function will start again from the beginning of the database.
* @param p_file_name [in] name of the file to search for
* @param p_function_name [out] contains the function name if a function was found
* @param p_line_no [out] contains the line number of function start line
* @return 1 if a line or function was found, otherwise 0 */
boolean get_profiler_code_line(const char *p_file_name,
char **p_function_name, int *p_line_no);
/** Frees the database (must be called once, at the end of compilation) */
void free_profiler_data(void);
#ifdef __cplusplus
}
#endif
#endif /* PROFILER_H */