Difference between revisions of "User:Marc"

From Lazarus wiki
Jump to navigationJump to search
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
== My Todo ==
 
== My Todo ==
 +
* Make this todo uptodate
 
=== LCL ===
 
=== LCL ===
 +
* Implement TIcon
 
* Make imagelist widgetset specific
 
* Make imagelist widgetset specific
 
* adjust Listviews for imagelists
 
* adjust Listviews for imagelists
Line 11: Line 13:
  
 
=== Debugger ===
 
=== Debugger ===
* Fix bugs
+
*Fix bugs
* Make native win32 debugger
+
*Make native win32/64 debugger (in progress)
 +
*Document
 +
**[[IDE Window:Breakpoints|Breakpoints]]
 +
**[[IDE Window:Breakpoint properties|Breakpoint properties]]
 +
**[[IDE Window: Call Stack|Call Stack]]
 +
**[[IDE Window: Debug Output|Debug Output]]
 +
**[[IDE Window: Debugger Options|Debugger Options]]
 +
**[[IDE Window:Evaluate/Modify|Evaluate/Modify]]
 +
**[[IDE Window:Event Log|Event Log]]
 +
**[[IDE Window: Local Variables|Local Variables]]
 +
**[[IDE Window:Variable Inspector|Variable Inspector]]
 +
**[[IDE Window: Watch list|Watch list]]
 +
**[[IDE Window: Watch Properties|Watch properties]]
  
 
=== Linux 64 ===
 
=== Linux 64 ===
 
* Make it work™
 
* Make it work™
  
=== Spark ===
+
=== Sparc ===
 
* Fix gtk scrollbars
 
* Fix gtk scrollbars
  
 
== Installing Carbon on OSX ==
 
== Installing Carbon on OSX ==
=== Install Apples Universal PInterfaces ===
+
[[Carbon Interface]]
The most easy way to do it, is to follow step 0 of http://www.freepascal.org/xcode.html
 
  
This way the interfaces are patched to work with PFC. Side effect is that you need XCode. If everything went OK, you now have the Carbon interface sources in /Developer/Pascal/UPInterfaces
+
== DWARF compiler improvements ==
  
TODO: document steps for Lazarus alone
+
===classes/interfaces===
 +
;DW_AT_artificial: flag for Self and Result
 +
;DW_TAG_class_type: use this one instead of DW_TAG_structure_type for classes
  
=== Compile the PInterfaces ===
+
;DW_TAG_inheritance: reference to the ancestor class. Its not clear if this tag is only used for the definiition of the derived class, or for the description of each inherited class member
The way the interfaces are setup look like they are compiled each time for your project. This is IMO not neccesary. You don't compile the LCL each time for your own app (or do you ?).
 
* Create a Units/powerpc-darwin subdir in the /Developer/Pascal/UPInterfaces dir
 
* Compile Carbon.p:
 
:<pre>ppcppc Carbon.p -Mmacpas -FE/Developer/Pascal/UPInterfaces/Units/powerpc-darwin</pre>
 
:Now you have a compiled carbon interface, which only has to be recompiled as the interfaces changes.
 
* Edit the global /etc/fpc.cfg (or your local .fpc.cfg) and add the lines:
 
:<pre><nowiki>-Fu/Developer/Pascal/UPInterfaces/Units/$fpctarget
 
-k-framework Carbon</nowiki></pre>
 
:eventually you can add:
 
:<pre><nowiki>-Fu<your_lazarus_dir>/lcl/units/$fpctarget
 
-Fu<your_lazarus_dir>/lcl/units/$fpctarget/carbon
 
-Fu<your_lazarus_dir>/components/units/$fpctarget</nowiki></pre>
 
  
=== Compile the LCL ===
+
 
Now we are ready to compile the LCL (from your lazarusdir):
+
;DW_TAG_subprogram: for class (interface?) members. It seems not to be generated.
<pre>make lcl LCL_PLATFORM=carbon</pre>
+
:;DW_AT_vtable_elem_location: for virtual class members
When you already have a running (and compiled) gtk interface, it can be easier. Go to the lcl/interfaces/carbon dir and type make.
+
:;DW_AT_object_pointer: a reference to Self
 +
:what to do with class methods ?
 +
 
 +
====properties====
 +
;DW_TAG_access_declaration: not sure, but I think this one can be used when the scope of a properety is increased
 +
 
 +
;DW_TAG_variant_part: unions. cant we do a property with this, a read and a write variant ?
 +
;location expressions: is it possible to describe properties this way ? i.e. present is as data member ? What to do with read and write ?
 +
 
 +
 
 +
===misc===
 +
 
 +
;DW_AT_decl_file, DW_AT_decl_line, DW_AT_decl_column: source code locations for types (lineinfo is only for code)
 +
 
 +
;DW_AT_calling_convention: might be usefull, however the given conventions are limited, maybe add more ?
 +
 
 +
;DW_TAG_with_stmt: defines the address range of a with block. Also the type of the with var
 +
 
 +
;DW_TAG_try_block, DW_TAG_catch_block: defines the address range of a try block / exceptopnhandler block
 +
 
 +
;DW_TAG_subroutine_type: -> procedural type                         
 +
   
 +
;DW_TAG_string_type: use this instead of pointer to char
 +
 
 +
;DW_TAG_file_type: for file types (is it already generated ?)
 +
 
 +
;DW_AT_data_location: can this be used for strings/dynarrs/properties ?

Latest revision as of 01:25, 4 January 2007

My Todo

  • Make this todo uptodate

LCL

  • Implement TIcon
  • Make imagelist widgetset specific
  • adjust Listviews for imagelists
  • update toolbar
  • update treeview

Carbon interface

  • make initial interface so that a hello world would work
  • Make a Ansistring based CFString (CFStringCreateWithCStringNoCopy, add refcount and release with contentsDeallocator)

Debugger

Linux 64

  • Make it work™

Sparc

  • Fix gtk scrollbars

Installing Carbon on OSX

Carbon Interface

DWARF compiler improvements

classes/interfaces

DW_AT_artificial
flag for Self and Result
DW_TAG_class_type
use this one instead of DW_TAG_structure_type for classes
DW_TAG_inheritance
reference to the ancestor class. Its not clear if this tag is only used for the definiition of the derived class, or for the description of each inherited class member


DW_TAG_subprogram
for class (interface?) members. It seems not to be generated.
DW_AT_vtable_elem_location
for virtual class members
DW_AT_object_pointer
a reference to Self
what to do with class methods ?

properties

DW_TAG_access_declaration
not sure, but I think this one can be used when the scope of a properety is increased
DW_TAG_variant_part
unions. cant we do a property with this, a read and a write variant ?
location expressions
is it possible to describe properties this way ? i.e. present is as data member ? What to do with read and write ?


misc

DW_AT_decl_file, DW_AT_decl_line, DW_AT_decl_column
source code locations for types (lineinfo is only for code)
DW_AT_calling_convention
might be usefull, however the given conventions are limited, maybe add more ?
DW_TAG_with_stmt
defines the address range of a with block. Also the type of the with var
DW_TAG_try_block, DW_TAG_catch_block
defines the address range of a try block / exceptopnhandler block
DW_TAG_subroutine_type
-> procedural type
DW_TAG_string_type
use this instead of pointer to char
DW_TAG_file_type
for file types (is it already generated ?)
DW_AT_data_location
can this be used for strings/dynarrs/properties ?