source: trunk/kStuff/kDbg/kDbgLine.cpp@ 3550

Last change on this file since 3550 was 3550, checked in by bird, 18 years ago

made kDbg compile again (not linking yet though).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 2.3 KB
Line 
1/* $Id: kDbgLine.cpp 3550 2007-08-26 01:13:35Z bird $ */
2/** @file
3 * kDbg - The Debug Info Read, Line Numbers.
4 */
5
6/*
7 * Copyright (c) 2006-2007 knut st. osmundsen <bird-src-spam@anduin.net>
8 *
9 * This file is part of kStuff.
10 *
11 * kStuff is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public
13 * License as published by the Free Software Foundation; either
14 * version 2.1 of the License, or (at your option) any later version.
15 *
16 * kStuff is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public
22 * License along with kStuff; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 *
25 */
26
27/*******************************************************************************
28* Header Files *
29*******************************************************************************/
30#include "kDbgInternal.h"
31#include <k/kHlpAlloc.h>
32
33
34/**
35 * Duplicates a line number.
36 *
37 * To save heap space, the returned line number will not own more heap space
38 * than it strictly need to. So, it's not possible to append stuff to the symbol
39 * or anything of that kind.
40 *
41 * @returns Pointer to the duplicate.
42 * This must be freed using kDbgSymbolFree().
43 * @param pLine The line number to be duplicated.
44 */
45KDBG_DECL(PKDBGLINE) kDbgLineDup(PCKDBGLINE pLine)
46{
47 kDbgAssertPtrReturn(pLine, NULL);
48 KSIZE cb = K_OFFSETOF(KDBGLINE, szFile[pLine->cchFile + 1]);
49 PKDBGLINE pNewLine = (PKDBGLINE)kHlpDup(pLine, cb);
50 if (pNewLine)
51 pNewLine->cbSelf = cb;
52 return pNewLine;
53}
54
55
56/**
57 * Frees a line number obtained from the kDbg API.
58 *
59 * @returns 0 on success.
60 * @returns KERR_INVALID_POINTER if pLine isn't a valid pointer.
61 *
62 * @param pLine The line number to be freed. The null pointer is ignored.
63 */
64KDBG_DECL(int) kDbgLineFree(PKDBGLINE pLine)
65{
66 if (pLine)
67 {
68 kDbgAssertPtrReturn(pLine, KERR_INVALID_POINTER);
69 pLine->cbSelf = 0;
70 kHlpFree(pLine);
71 }
72 return 0;
73}
74
Note: See TracBrowser for help on using the repository browser.