The library itself is written in C and it allows you to have as many LCDs as you can fit on your platform of choice. It is built upon the wiring environment in order to retain compatibility among various AVR chips.
- 8bit and 4bit LCD operations
- Operation thru a 74xx164 or compatible shift register
- Read from LCD 
- Write to DDRAM/CGRAM 
- Support for multiple LCDs, each with its own mode, in a program.
I am now in the process of documenting and commenting the library as well as optimizing the code. I have only tested the shift register implementation as it is the easiest to wire. I am not, by any means, trying to reinvent the wheel here. This is a tried and done subject.
What I'd like to ask of people is to comment on the code on how to make it far more optimal, small binary footprint is the primary goal, secondary goal being as little as RAM usage as possible. I follow the principle that if there's a solution that can be implemented in the hardware (by means of a circuit), it should take priority over a software solution. I am thinking of extending the shift register implementation to use a monostable multivibrator (one shot) to eliminate the need of a software clock for the LCD. I have yet to decide how to do this, however. If interest arises, I will post on it.
The library is under the GPLv3, feel free to do with it as you please, as long as you respect that license.
 Thread is now buried somewhere in the Arduino forums, can't find it
 http://code.google.com/p/breadstick-ent ... 0/generic/
 Status flag, Address Counter and DDRAM
 read operation available in 4bit and 8 bit implementations only
 CGRAM write support provided only for 5x8 character size operation, sample implementation for 5x10 character size included with documentation