id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,lang,patch,platform
778,Make FileHandle Subclassable,whiteknight,,"There were some other related tickets (I can't find them now) about this, so sorry if I am duplicating anything.

FileHandles are not current subclassable in PIR because they have ATTRs that are not usable from PIR (char*, PIOOFF_T, etc). In order for a PMC like FileHandle to be properly subclassable, every one of it's ATTRs must be an INTVAL, FLOATVAL, STRING* or PMC*. Otherwise, the subclass will throw an exception if we try to access an ATTR that is not one of these from the parent type.

I want to make two changes to FileHandle (in addition to the cleanups I am working on in the io_cleanups branch right now) to make this possible:

1) Create a new IOBuffer PMC type to take care of buffering. FileHandle will then delegate it's buffering needs to a PMC of this type. The benefit here is that we can use this same buffering functionality from other IO PMC types (sockets, pipes, etc).
2) Convert the ATTRs file_pos and last_pos from type PIOOFF_T into type INTVAL. This may be a lossy transition but it's worth noting that almost every use of these two ATTRs, outside the IO API, are converted to INTVAL already.

#2 of course is a little sketchy, so I would be happy to hear about alternate ideas to fix this issue. Shortly after getting these ATTRs fixed (if not immediately thereafter) we should be able to properly subclass FileHandles.",RFC,closed,normal,,none,1.3.0,medium,duplicate,io oo pmc,,,,
