mirror of
https://github.com/cc65/cc65.git
synced 2024-12-25 17:29:50 +00:00
Remove CollConstAt. Let CollAt and CollAtUnchecked take const pointers to
collections. Use const pointers in many places. Some other cleanups. git-svn-id: svn://svn.cc65.org/cc65/trunk@5226 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
88774521a3
commit
aff6d02c43
@ -810,7 +810,7 @@ static void CollAppendId (Collection* C, unsigned Id)
|
||||
|
||||
|
||||
|
||||
static void* CollAt (Collection* C, unsigned Index)
|
||||
static void* CollAt (const Collection* C, unsigned Index)
|
||||
/* Return the item at the given index */
|
||||
{
|
||||
/* Check the index */
|
||||
@ -822,19 +822,7 @@ static void* CollAt (Collection* C, unsigned Index)
|
||||
|
||||
|
||||
|
||||
static const void* CollConstAt (const Collection* C, unsigned Index)
|
||||
/* Return the item at the given index */
|
||||
{
|
||||
/* Check the index */
|
||||
assert (Index < C->Count);
|
||||
|
||||
/* Return the element */
|
||||
return C->Items[Index].Ptr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static unsigned CollIdAt (Collection* C, unsigned Index)
|
||||
static unsigned CollIdAt (const Collection* C, unsigned Index)
|
||||
/* Return the id at the given index */
|
||||
{
|
||||
/* Check the index */
|
||||
@ -921,7 +909,7 @@ static void DumpFileInfo (Collection* FileInfos)
|
||||
|
||||
/* File info */
|
||||
for (I = 0; I < CollCount (FileInfos); ++I) {
|
||||
const FileInfo* FI = CollConstAt (FileInfos, I);
|
||||
const FileInfo* FI = CollAt (FileInfos, I);
|
||||
printf ("File info %u:\n"
|
||||
" Name: %s\n"
|
||||
" Size: %lu\n"
|
||||
@ -3899,7 +3887,7 @@ static SpanInfoListEntry* FindSpanInfoByAddr (const SpanInfoList* L, cc65_addr A
|
||||
|
||||
|
||||
|
||||
static LineInfo* FindLineInfoByLine (Collection* LineInfos, cc65_line Line)
|
||||
static LineInfo* FindLineInfoByLine (const Collection* LineInfos, cc65_line Line)
|
||||
/* Find the LineInfo for a given line number. The function returns the line
|
||||
* info or NULL if none was found.
|
||||
*/
|
||||
@ -3932,7 +3920,7 @@ static LineInfo* FindLineInfoByLine (Collection* LineInfos, cc65_line Line)
|
||||
|
||||
|
||||
|
||||
static SegInfo* FindSegInfoByName (Collection* SegInfos, const char* Name)
|
||||
static SegInfo* FindSegInfoByName (const Collection* SegInfos, const char* Name)
|
||||
/* Find the SegInfo for a given segment name. The function returns the segment
|
||||
* info or NULL if none was found.
|
||||
*/
|
||||
@ -3986,7 +3974,7 @@ static int FindScopeInfoByName (const Collection* ScopeInfos, const char* Name,
|
||||
int Cur = (Lo + Hi) / 2;
|
||||
|
||||
/* Get item */
|
||||
const ScopeInfo* CurItem = CollConstAt (ScopeInfos, Cur);
|
||||
const ScopeInfo* CurItem = CollAt (ScopeInfos, Cur);
|
||||
|
||||
/* Compare */
|
||||
int Res = strcmp (CurItem->Name, Name);
|
||||
@ -4030,7 +4018,7 @@ static int FindSymInfoByName (const Collection* SymInfos, const char* Name,
|
||||
int Cur = (Lo + Hi) / 2;
|
||||
|
||||
/* Get item */
|
||||
const SymInfo* CurItem = CollConstAt (SymInfos, Cur);
|
||||
const SymInfo* CurItem = CollAt (SymInfos, Cur);
|
||||
|
||||
/* Compare */
|
||||
int Res = strcmp (CurItem->Name, Name);
|
||||
@ -4056,7 +4044,8 @@ static int FindSymInfoByName (const Collection* SymInfos, const char* Name,
|
||||
|
||||
|
||||
|
||||
static int FindSymInfoByValue (Collection* SymInfos, long Value, unsigned* Index)
|
||||
static int FindSymInfoByValue (const Collection* SymInfos, long Value,
|
||||
unsigned* Index)
|
||||
/* Find the SymInfo for a given value. The function returns true if the
|
||||
* value was found. In this case, Index contains the index of the first item
|
||||
* that matches. If the item wasn't found, the function returns false and
|
||||
@ -4828,8 +4817,7 @@ void cc65_free_dbginfo (cc65_dbginfo Handle)
|
||||
const cc65_libraryinfo* cc65_get_librarylist (cc65_dbginfo Handle)
|
||||
/* Return a list of all libraries */
|
||||
{
|
||||
DbgInfo* Info;
|
||||
Collection* LibInfoById;
|
||||
const DbgInfo* Info;
|
||||
cc65_libraryinfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -4837,18 +4825,15 @@ const cc65_libraryinfo* cc65_get_librarylist (cc65_dbginfo Handle)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
|
||||
/* Get a pointer to the library list */
|
||||
LibInfoById = &Info->LibInfoById;
|
||||
Info = Handle;
|
||||
|
||||
/* Allocate memory for the data structure returned to the caller */
|
||||
D = new_cc65_libraryinfo (CollCount (LibInfoById));
|
||||
D = new_cc65_libraryinfo (CollCount (&Info->LibInfoById));
|
||||
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (LibInfoById); ++I) {
|
||||
for (I = 0; I < CollCount (&Info->LibInfoById); ++I) {
|
||||
/* Copy the data */
|
||||
CopyLibInfo (D->data + I, CollConstAt (LibInfoById, I));
|
||||
CopyLibInfo (D->data + I, CollAt (&Info->LibInfoById, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -4864,14 +4849,14 @@ const cc65_libraryinfo* cc65_library_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* library information.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_libraryinfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->LibInfoById)) {
|
||||
@ -4882,7 +4867,7 @@ const cc65_libraryinfo* cc65_library_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
D = new_cc65_libraryinfo (1);
|
||||
|
||||
/* Fill in the data */
|
||||
CopyLibInfo (D->data, CollConstAt (&Info->LibInfoById, Id));
|
||||
CopyLibInfo (D->data, CollAt (&Info->LibInfoById, Id));
|
||||
|
||||
/* Return the result */
|
||||
return D;
|
||||
@ -4915,14 +4900,14 @@ const cc65_lineinfo* cc65_line_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* module information.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_lineinfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->LineInfoById)) {
|
||||
@ -4933,7 +4918,7 @@ const cc65_lineinfo* cc65_line_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
D = new_cc65_lineinfo (1);
|
||||
|
||||
/* Fill in the data */
|
||||
CopyLineInfo (D->data, CollConstAt (&Info->LineInfoById, Id));
|
||||
CopyLineInfo (D->data, CollAt (&Info->LineInfoById, Id));
|
||||
|
||||
/* Return the result */
|
||||
return D;
|
||||
@ -4947,8 +4932,8 @@ const cc65_lineinfo* cc65_line_bynumber (cc65_dbginfo Handle, unsigned FileId,
|
||||
* function returns NULL if no line information was found.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
FileInfo* F;
|
||||
const DbgInfo* Info;
|
||||
const FileInfo* F;
|
||||
cc65_lineinfo* D;
|
||||
LineInfo* L = 0;
|
||||
|
||||
@ -4956,7 +4941,7 @@ const cc65_lineinfo* cc65_line_bynumber (cc65_dbginfo Handle, unsigned FileId,
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the source file id is valid */
|
||||
if (FileId >= CollCount (&Info->FileInfoById)) {
|
||||
@ -4991,8 +4976,8 @@ const cc65_lineinfo* cc65_line_bysource (cc65_dbginfo Handle, unsigned FileId)
|
||||
* file id is invalid.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
FileInfo* F;
|
||||
const DbgInfo* Info;
|
||||
const FileInfo* F;
|
||||
cc65_lineinfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5000,7 +4985,7 @@ const cc65_lineinfo* cc65_line_bysource (cc65_dbginfo Handle, unsigned FileId)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the source file id is valid */
|
||||
if (FileId >= CollCount (&Info->FileInfoById)) {
|
||||
@ -5016,7 +5001,7 @@ const cc65_lineinfo* cc65_line_bysource (cc65_dbginfo Handle, unsigned FileId)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&F->LineInfoByLine); ++I) {
|
||||
/* Copy the data */
|
||||
CopyLineInfo (D->data + I, CollConstAt (&F->LineInfoByLine, I));
|
||||
CopyLineInfo (D->data + I, CollAt (&F->LineInfoByLine, I));
|
||||
}
|
||||
|
||||
/* Return the allocated struct */
|
||||
@ -5030,8 +5015,8 @@ const cc65_lineinfo* cc65_line_bysymdef (cc65_dbginfo Handle, unsigned SymId)
|
||||
* returns NULL if the symbol id is invalid, otherwise a list of line infos.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
SymInfo* S;
|
||||
const DbgInfo* Info;
|
||||
const SymInfo* S;
|
||||
cc65_lineinfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5039,7 +5024,7 @@ const cc65_lineinfo* cc65_line_bysymdef (cc65_dbginfo Handle, unsigned SymId)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the symbol id is valid */
|
||||
if (SymId >= CollCount (&Info->SymInfoById)) {
|
||||
@ -5055,7 +5040,7 @@ const cc65_lineinfo* cc65_line_bysymdef (cc65_dbginfo Handle, unsigned SymId)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&S->DefLineInfoList); ++I) {
|
||||
/* Copy the data */
|
||||
CopyLineInfo (D->data + I, CollConstAt (&S->DefLineInfoList, I));
|
||||
CopyLineInfo (D->data + I, CollAt (&S->DefLineInfoList, I));
|
||||
}
|
||||
|
||||
/* Return the allocated struct */
|
||||
@ -5069,8 +5054,8 @@ const cc65_lineinfo* cc65_line_bysymref (cc65_dbginfo Handle, unsigned SymId)
|
||||
* returns NULL if the symbol id is invalid, otherwise a list of line infos.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
SymInfo* S;
|
||||
const DbgInfo* Info;
|
||||
const SymInfo* S;
|
||||
cc65_lineinfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5078,7 +5063,7 @@ const cc65_lineinfo* cc65_line_bysymref (cc65_dbginfo Handle, unsigned SymId)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the symbol id is valid */
|
||||
if (SymId >= CollCount (&Info->SymInfoById)) {
|
||||
@ -5094,7 +5079,7 @@ const cc65_lineinfo* cc65_line_bysymref (cc65_dbginfo Handle, unsigned SymId)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&S->RefLineInfoList); ++I) {
|
||||
/* Copy the data */
|
||||
CopyLineInfo (D->data + I, CollConstAt (&S->RefLineInfoList, I));
|
||||
CopyLineInfo (D->data + I, CollAt (&S->RefLineInfoList, I));
|
||||
}
|
||||
|
||||
/* Return the allocated struct */
|
||||
@ -5124,7 +5109,7 @@ void cc65_free_lineinfo (cc65_dbginfo Handle, const cc65_lineinfo* Info)
|
||||
const cc65_moduleinfo* cc65_get_modulelist (cc65_dbginfo Handle)
|
||||
/* Return a list of all modules */
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_moduleinfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5132,7 +5117,7 @@ const cc65_moduleinfo* cc65_get_modulelist (cc65_dbginfo Handle)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Allocate memory for the data structure returned to the caller */
|
||||
D = new_cc65_moduleinfo (CollCount (&Info->ModInfoById));
|
||||
@ -5140,7 +5125,7 @@ const cc65_moduleinfo* cc65_get_modulelist (cc65_dbginfo Handle)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&Info->ModInfoById); ++I) {
|
||||
/* Copy the data */
|
||||
CopyModInfo (D->data + I, CollConstAt (&Info->ModInfoById, I));
|
||||
CopyModInfo (D->data + I, CollAt (&Info->ModInfoById, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5156,14 +5141,14 @@ const cc65_moduleinfo* cc65_module_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* module information.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_moduleinfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->ModInfoById)) {
|
||||
@ -5174,7 +5159,7 @@ const cc65_moduleinfo* cc65_module_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
D = new_cc65_moduleinfo (1);
|
||||
|
||||
/* Fill in the data */
|
||||
CopyModInfo (D->data, CollConstAt (&Info->ModInfoById, Id));
|
||||
CopyModInfo (D->data, CollAt (&Info->ModInfoById, Id));
|
||||
|
||||
/* Return the result */
|
||||
return D;
|
||||
@ -5203,7 +5188,7 @@ void cc65_free_moduleinfo (cc65_dbginfo Handle, const cc65_moduleinfo* Info)
|
||||
const cc65_spaninfo* cc65_get_spanlist (cc65_dbginfo Handle)
|
||||
/* Return a list of all spans */
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_spaninfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5211,7 +5196,7 @@ const cc65_spaninfo* cc65_get_spanlist (cc65_dbginfo Handle)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Allocate memory for the data structure returned to the caller */
|
||||
D = new_cc65_spaninfo (CollCount (&Info->SpanInfoById));
|
||||
@ -5219,7 +5204,7 @@ const cc65_spaninfo* cc65_get_spanlist (cc65_dbginfo Handle)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&Info->SpanInfoById); ++I) {
|
||||
/* Copy the data */
|
||||
CopySpanInfo (D->data + I, CollConstAt (&Info->SpanInfoById, I));
|
||||
CopySpanInfo (D->data + I, CollAt (&Info->SpanInfoById, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5235,14 +5220,14 @@ const cc65_spaninfo* cc65_span_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* span information.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_spaninfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->SpanInfoById)) {
|
||||
@ -5253,7 +5238,7 @@ const cc65_spaninfo* cc65_span_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
D = new_cc65_spaninfo (1);
|
||||
|
||||
/* Fill in the data */
|
||||
CopySpanInfo (D->data, CollConstAt (&Info->SpanInfoById, Id));
|
||||
CopySpanInfo (D->data, CollAt (&Info->SpanInfoById, Id));
|
||||
|
||||
/* Return the result */
|
||||
return D;
|
||||
@ -5266,14 +5251,18 @@ const cc65_spaninfo* cc65_span_byaddr (cc65_dbginfo Handle, unsigned long Addr)
|
||||
* if no spans were found for this address.
|
||||
*/
|
||||
{
|
||||
const DbgInfo* Info;
|
||||
SpanInfoListEntry* E;
|
||||
cc65_spaninfo* D = 0;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = Handle;
|
||||
|
||||
/* Search for spans that cover this address */
|
||||
E = FindSpanInfoByAddr (&((DbgInfo*) Handle)->SpanInfoByAddr, Addr);
|
||||
E = FindSpanInfoByAddr (&Info->SpanInfoByAddr, Addr);
|
||||
|
||||
/* Do we have spans? */
|
||||
if (E != 0) {
|
||||
@ -5303,8 +5292,8 @@ const cc65_spaninfo* cc65_span_byline (cc65_dbginfo Handle, unsigned LineId)
|
||||
* if the line id is invalid, otherwise the spans for this line (possibly zero).
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
LineInfo* L;
|
||||
const DbgInfo* Info;
|
||||
const LineInfo* L;
|
||||
cc65_spaninfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5312,7 +5301,7 @@ const cc65_spaninfo* cc65_span_byline (cc65_dbginfo Handle, unsigned LineId)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the line id is valid */
|
||||
if (LineId >= CollCount (&Info->LineInfoById)) {
|
||||
@ -5328,7 +5317,7 @@ const cc65_spaninfo* cc65_span_byline (cc65_dbginfo Handle, unsigned LineId)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&L->SpanInfoList); ++I) {
|
||||
/* Copy the data */
|
||||
CopySpanInfo (D->data + I, CollConstAt (&L->SpanInfoList, I));
|
||||
CopySpanInfo (D->data + I, CollAt (&L->SpanInfoList, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5342,8 +5331,8 @@ const cc65_spaninfo* cc65_span_byscope (cc65_dbginfo Handle, unsigned ScopeId)
|
||||
* the scope id is invalid, otherwise the spans for this scope (possibly zero).
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
ScopeInfo* S;
|
||||
const DbgInfo* Info;
|
||||
const ScopeInfo* S;
|
||||
cc65_spaninfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5351,7 +5340,7 @@ const cc65_spaninfo* cc65_span_byscope (cc65_dbginfo Handle, unsigned ScopeId)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the scope id is valid */
|
||||
if (ScopeId >= CollCount (&Info->ScopeInfoById)) {
|
||||
@ -5367,7 +5356,7 @@ const cc65_spaninfo* cc65_span_byscope (cc65_dbginfo Handle, unsigned ScopeId)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&S->SpanInfoList); ++I) {
|
||||
/* Copy the data */
|
||||
CopySpanInfo (D->data + I, CollConstAt (&S->SpanInfoList, I));
|
||||
CopySpanInfo (D->data + I, CollAt (&S->SpanInfoList, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5397,8 +5386,7 @@ void cc65_free_spaninfo (cc65_dbginfo Handle, const cc65_spaninfo* Info)
|
||||
const cc65_sourceinfo* cc65_get_sourcelist (cc65_dbginfo Handle)
|
||||
/* Return a list of all source files */
|
||||
{
|
||||
DbgInfo* Info;
|
||||
Collection* FileInfoById;
|
||||
const DbgInfo* Info;
|
||||
cc65_sourceinfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5406,18 +5394,15 @@ const cc65_sourceinfo* cc65_get_sourcelist (cc65_dbginfo Handle)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
|
||||
/* Get a pointer to the file list */
|
||||
FileInfoById = &Info->FileInfoById;
|
||||
Info = Handle;
|
||||
|
||||
/* Allocate memory for the data structure returned to the caller. */
|
||||
D = new_cc65_sourceinfo (CollCount (FileInfoById));
|
||||
D = new_cc65_sourceinfo (CollCount (&Info->FileInfoById));
|
||||
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (FileInfoById); ++I) {
|
||||
for (I = 0; I < CollCount (&Info->FileInfoById); ++I) {
|
||||
/* Copy the data */
|
||||
CopyFileInfo (D->data + I, CollConstAt (FileInfoById, I));
|
||||
CopyFileInfo (D->data + I, CollAt (&Info->FileInfoById, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5433,14 +5418,14 @@ const cc65_sourceinfo* cc65_source_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* source file information.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_sourceinfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->FileInfoById)) {
|
||||
@ -5451,7 +5436,7 @@ const cc65_sourceinfo* cc65_source_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
D = new_cc65_sourceinfo (1);
|
||||
|
||||
/* Fill in the data */
|
||||
CopyFileInfo (D->data, CollConstAt (&Info->FileInfoById, Id));
|
||||
CopyFileInfo (D->data, CollAt (&Info->FileInfoById, Id));
|
||||
|
||||
/* Return the result */
|
||||
return D;
|
||||
@ -5466,7 +5451,7 @@ const cc65_sourceinfo* cc65_source_bymodule (cc65_dbginfo Handle, unsigned Id)
|
||||
* otherwise a cc65_sourceinfo structure with one entry per source file.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
const ModInfo* M;
|
||||
cc65_sourceinfo* D;
|
||||
unsigned I;
|
||||
@ -5475,7 +5460,7 @@ const cc65_sourceinfo* cc65_source_bymodule (cc65_dbginfo Handle, unsigned Id)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the module id is valid */
|
||||
if (Id >= CollCount (&Info->ModInfoById)) {
|
||||
@ -5483,14 +5468,14 @@ const cc65_sourceinfo* cc65_source_bymodule (cc65_dbginfo Handle, unsigned Id)
|
||||
}
|
||||
|
||||
/* Get a pointer to the module info */
|
||||
M = CollConstAt (&Info->ModInfoById, Id);
|
||||
M = CollAt (&Info->ModInfoById, Id);
|
||||
|
||||
/* Allocate memory for the data structure returned to the caller */
|
||||
D = new_cc65_sourceinfo (CollCount (&M->FileInfoByName));
|
||||
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&M->FileInfoByName); ++I) {
|
||||
CopyFileInfo (D->data + I, CollConstAt (&M->FileInfoByName, I));
|
||||
CopyFileInfo (D->data + I, CollAt (&M->FileInfoByName, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5520,7 +5505,7 @@ void cc65_free_sourceinfo (cc65_dbginfo Handle, const cc65_sourceinfo* Info)
|
||||
const cc65_segmentinfo* cc65_get_segmentlist (cc65_dbginfo Handle)
|
||||
/* Return a list of all segments referenced in the debug information */
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_segmentinfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5528,7 +5513,7 @@ const cc65_segmentinfo* cc65_get_segmentlist (cc65_dbginfo Handle)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Allocate memory for the data structure returned to the caller */
|
||||
D = new_cc65_segmentinfo (CollCount (&Info->SegInfoById));
|
||||
@ -5536,7 +5521,7 @@ const cc65_segmentinfo* cc65_get_segmentlist (cc65_dbginfo Handle)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&Info->SegInfoById); ++I) {
|
||||
/* Copy the data */
|
||||
CopySegInfo (D->data + I, CollConstAt (&Info->SegInfoById, I));
|
||||
CopySegInfo (D->data + I, CollAt (&Info->SegInfoById, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5551,14 +5536,14 @@ const cc65_segmentinfo* cc65_segment_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* structure with one entry that contains the requested segment information.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_segmentinfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->SegInfoById)) {
|
||||
@ -5569,7 +5554,7 @@ const cc65_segmentinfo* cc65_segment_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
D = new_cc65_segmentinfo (1);
|
||||
|
||||
/* Fill in the data */
|
||||
CopySegInfo (D->data, CollConstAt (&Info->SegInfoById, Id));
|
||||
CopySegInfo (D->data, CollAt (&Info->SegInfoById, Id));
|
||||
|
||||
/* Return the result */
|
||||
return D;
|
||||
@ -5585,15 +5570,15 @@ const cc65_segmentinfo* cc65_segment_byname (cc65_dbginfo Handle,
|
||||
* information.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
SegInfo* S;
|
||||
const DbgInfo* Info;
|
||||
const SegInfo* S;
|
||||
cc65_segmentinfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Search for the segment */
|
||||
S = FindSegInfoByName (&Info->SegInfoByName, Name);
|
||||
@ -5636,14 +5621,14 @@ const cc65_symbolinfo* cc65_symbol_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* with this id was found.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_symbolinfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->SymInfoById)) {
|
||||
@ -5654,7 +5639,7 @@ const cc65_symbolinfo* cc65_symbol_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
D = new_cc65_symbolinfo (1);
|
||||
|
||||
/* Fill in the data */
|
||||
CopySymInfo (D->data, CollConstAt (&Info->SymInfoById, Id));
|
||||
CopySymInfo (D->data, CollAt (&Info->SymInfoById, Id));
|
||||
|
||||
/* Return the result */
|
||||
return D;
|
||||
@ -5667,8 +5652,7 @@ const cc65_symbolinfo* cc65_symbol_byname (cc65_dbginfo Handle, const char* Name
|
||||
* no symbol with this name was found.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
Collection* SymInfoByName;
|
||||
const DbgInfo* Info;
|
||||
cc65_symbolinfo* D;
|
||||
unsigned I;
|
||||
unsigned Index;
|
||||
@ -5678,13 +5662,10 @@ const cc65_symbolinfo* cc65_symbol_byname (cc65_dbginfo Handle, const char* Name
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
|
||||
/* Get a pointer to the symbol list */
|
||||
SymInfoByName = &Info->SymInfoByName;
|
||||
Info = Handle;
|
||||
|
||||
/* Search for the symbol */
|
||||
if (!FindSymInfoByName (SymInfoByName, Name, &Index)) {
|
||||
if (!FindSymInfoByName (&Info->SymInfoByName, Name, &Index)) {
|
||||
/* Not found */
|
||||
return 0;
|
||||
}
|
||||
@ -5693,8 +5674,8 @@ const cc65_symbolinfo* cc65_symbol_byname (cc65_dbginfo Handle, const char* Name
|
||||
* we have. Skip the first one, since we have at least one.
|
||||
*/
|
||||
Count = 1;
|
||||
while ((unsigned) Index + Count < CollCount (SymInfoByName)) {
|
||||
const SymInfo* S = CollConstAt (SymInfoByName, (unsigned) Index + Count);
|
||||
while ((unsigned) Index + Count < CollCount (&Info->SymInfoByName)) {
|
||||
const SymInfo* S = CollAt (&Info->SymInfoByName, (unsigned) Index + Count);
|
||||
if (strcmp (S->Name, Name) != 0) {
|
||||
break;
|
||||
}
|
||||
@ -5707,7 +5688,7 @@ const cc65_symbolinfo* cc65_symbol_byname (cc65_dbginfo Handle, const char* Name
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < Count; ++I) {
|
||||
/* Copy the data */
|
||||
CopySymInfo (D->data + I, CollConstAt (SymInfoByName, Index++));
|
||||
CopySymInfo (D->data + I, CollAt (&Info->SymInfoByName, Index++));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5723,9 +5704,9 @@ const cc65_symbolinfo* cc65_symbol_byscope (cc65_dbginfo Handle, unsigned ScopeI
|
||||
* symbol list.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_symbolinfo* D;
|
||||
ScopeInfo* S;
|
||||
const ScopeInfo* S;
|
||||
unsigned I;
|
||||
|
||||
|
||||
@ -5733,7 +5714,7 @@ const cc65_symbolinfo* cc65_symbol_byscope (cc65_dbginfo Handle, unsigned ScopeI
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (ScopeId >= CollCount (&Info->ScopeInfoById)) {
|
||||
@ -5749,7 +5730,7 @@ const cc65_symbolinfo* cc65_symbol_byscope (cc65_dbginfo Handle, unsigned ScopeI
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&S->SymInfoByName); ++I) {
|
||||
/* Copy the data */
|
||||
CopySymInfo (D->data + I, CollConstAt (&S->SymInfoByName, I));
|
||||
CopySymInfo (D->data + I, CollAt (&S->SymInfoByName, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5765,8 +5746,7 @@ const cc65_symbolinfo* cc65_symbol_inrange (cc65_dbginfo Handle, cc65_addr Start
|
||||
* symbols are ignored and not returned.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
Collection* SymInfoByVal;
|
||||
const DbgInfo* Info;
|
||||
Collection SymInfoList = COLLECTION_INITIALIZER;
|
||||
cc65_symbolinfo* D;
|
||||
unsigned I;
|
||||
@ -5776,23 +5756,20 @@ const cc65_symbolinfo* cc65_symbol_inrange (cc65_dbginfo Handle, cc65_addr Start
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
|
||||
/* Get a pointer to the symbol list */
|
||||
SymInfoByVal = &Info->SymInfoByVal;
|
||||
Info = Handle;
|
||||
|
||||
/* Search for the symbol. Because we're searching for a range, we cannot
|
||||
* make use of the function result.
|
||||
*/
|
||||
FindSymInfoByValue (SymInfoByVal, Start, &Index);
|
||||
FindSymInfoByValue (&Info->SymInfoByVal, Start, &Index);
|
||||
|
||||
/* Start from the given index, check all symbols until the end address is
|
||||
* reached. Place all symbols into SymInfoList for later.
|
||||
*/
|
||||
for (I = Index; I < CollCount (SymInfoByVal); ++I) {
|
||||
for (I = Index; I < CollCount (&Info->SymInfoByVal); ++I) {
|
||||
|
||||
/* Get the item */
|
||||
SymInfo* Item = CollAt (SymInfoByVal, I);
|
||||
SymInfo* Item = CollAt (&Info->SymInfoByVal, I);
|
||||
|
||||
/* The collection is sorted by address, so if we get a value larger
|
||||
* than the end address, we're done.
|
||||
@ -5823,7 +5800,7 @@ const cc65_symbolinfo* cc65_symbol_inrange (cc65_dbginfo Handle, cc65_addr Start
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&SymInfoList); ++I) {
|
||||
/* Copy the data */
|
||||
CopySymInfo (D->data + I, CollConstAt (&SymInfoList, I));
|
||||
CopySymInfo (D->data + I, CollAt (&SymInfoList, I));
|
||||
}
|
||||
|
||||
/* Free the collection */
|
||||
@ -5856,7 +5833,7 @@ void cc65_free_symbolinfo (cc65_dbginfo Handle, const cc65_symbolinfo* Info)
|
||||
const cc65_scopeinfo* cc65_get_scopelist (cc65_dbginfo Handle)
|
||||
/* Return a list of all scopes in the debug information */
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_scopeinfo* D;
|
||||
unsigned I;
|
||||
|
||||
@ -5864,7 +5841,7 @@ const cc65_scopeinfo* cc65_get_scopelist (cc65_dbginfo Handle)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Allocate memory for the data structure returned to the caller */
|
||||
D = new_cc65_scopeinfo (CollCount (&Info->ScopeInfoById));
|
||||
@ -5872,7 +5849,7 @@ const cc65_scopeinfo* cc65_get_scopelist (cc65_dbginfo Handle)
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&Info->ScopeInfoById); ++I) {
|
||||
/* Copy the data */
|
||||
CopyScopeInfo (D->data + I, CollConstAt (&Info->ScopeInfoById, I));
|
||||
CopyScopeInfo (D->data + I, CollAt (&Info->ScopeInfoById, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5886,14 +5863,14 @@ const cc65_scopeinfo* cc65_scope_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* with this id was found.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_scopeinfo* D;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->ScopeInfoById)) {
|
||||
@ -5904,7 +5881,7 @@ const cc65_scopeinfo* cc65_scope_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
D = new_cc65_scopeinfo (1);
|
||||
|
||||
/* Fill in the data */
|
||||
CopyScopeInfo (D->data, CollConstAt (&Info->ScopeInfoById, Id));
|
||||
CopyScopeInfo (D->data, CollAt (&Info->ScopeInfoById, Id));
|
||||
|
||||
/* Return the result */
|
||||
return D;
|
||||
@ -5917,7 +5894,7 @@ const cc65_scopeinfo* cc65_scope_bymodule (cc65_dbginfo Handle, unsigned ModId)
|
||||
* scope with the given id was found.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
const ModInfo* M;
|
||||
cc65_scopeinfo* D;
|
||||
unsigned I;
|
||||
@ -5926,7 +5903,7 @@ const cc65_scopeinfo* cc65_scope_bymodule (cc65_dbginfo Handle, unsigned ModId)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the module id is valid */
|
||||
if (ModId >= CollCount (&Info->ModInfoById)) {
|
||||
@ -5934,14 +5911,14 @@ const cc65_scopeinfo* cc65_scope_bymodule (cc65_dbginfo Handle, unsigned ModId)
|
||||
}
|
||||
|
||||
/* Get a pointer to the module info */
|
||||
M = CollConstAt (&Info->ModInfoById, ModId);
|
||||
M = CollAt (&Info->ModInfoById, ModId);
|
||||
|
||||
/* Allocate memory for the data structure returned to the caller */
|
||||
D = new_cc65_scopeinfo (CollCount (&M->ScopeInfoByName));
|
||||
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < CollCount (&M->ScopeInfoByName); ++I) {
|
||||
CopyScopeInfo (D->data + I, CollConstAt (&M->ScopeInfoByName, I));
|
||||
CopyScopeInfo (D->data + I, CollAt (&M->ScopeInfoByName, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -5955,9 +5932,9 @@ const cc65_scopeinfo* cc65_scope_byname (cc65_dbginfo Handle, const char* Name)
|
||||
* the given name was found, otherwise a non empty scope list.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
unsigned Index;
|
||||
ScopeInfo* S;
|
||||
const ScopeInfo* S;
|
||||
cc65_scopeinfo* D;
|
||||
unsigned Count;
|
||||
unsigned I;
|
||||
@ -5967,7 +5944,7 @@ const cc65_scopeinfo* cc65_scope_byname (cc65_dbginfo Handle, const char* Name)
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Search for the first item with the given name */
|
||||
if (!FindScopeInfoByName (&Info->ScopeInfoByName, Name, &Index)) {
|
||||
@ -5995,7 +5972,7 @@ const cc65_scopeinfo* cc65_scope_byname (cc65_dbginfo Handle, const char* Name)
|
||||
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < Count; ++I, ++Index) {
|
||||
CopyScopeInfo (D->data + I, CollConstAt (&Info->ScopeInfoByName, Index));
|
||||
CopyScopeInfo (D->data + I, CollAt (&Info->ScopeInfoByName, Index));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
@ -6010,16 +5987,16 @@ const cc65_scopeinfo* cc65_childscopes_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
* direct childs.
|
||||
*/
|
||||
{
|
||||
DbgInfo* Info;
|
||||
const DbgInfo* Info;
|
||||
cc65_scopeinfo* D;
|
||||
ScopeInfo* S;
|
||||
const ScopeInfo* S;
|
||||
unsigned I;
|
||||
|
||||
/* Check the parameter */
|
||||
assert (Handle != 0);
|
||||
|
||||
/* The handle is actually a pointer to a debug info struct */
|
||||
Info = (DbgInfo*) Handle;
|
||||
Info = Handle;
|
||||
|
||||
/* Check if the id is valid */
|
||||
if (Id >= CollCount (&Info->ScopeInfoById)) {
|
||||
@ -6034,7 +6011,7 @@ const cc65_scopeinfo* cc65_childscopes_byid (cc65_dbginfo Handle, unsigned Id)
|
||||
|
||||
/* Fill in the data */
|
||||
for (I = 0; I < D->count; ++I) {
|
||||
CopyScopeInfo (D->data + I, CollConstAt (S->ChildScopeList, I));
|
||||
CopyScopeInfo (D->data + I, CollAt (S->ChildScopeList, I));
|
||||
}
|
||||
|
||||
/* Return the result */
|
||||
|
Loading…
Reference in New Issue
Block a user