C �з��� Lua ���ñ����Ż�
������д����ʱ�õ�֮ǰд��һ���� Lua ���ñ��� cache ģ�� ���о����������Dz������㡣�ҽ��춯�����������һ�¡�
�����������ģ�
��Ŀ�зdz����������Ϣ������ Lua �� ����״�㼶�ģ�table �У���������ֱ���� Lua ������ֱ�ӷ��ʡ����ǣ�������������Ҫ���ҵ������ C ��ʵ�ֵģ�C function ��Ҳ��Ҫ��ȡ��Щ����� Lua �е��������ݡ�
������������Ŀ����������dz�Ƶ������������һ��С���ԣ���������ñ����ô������ɵķ�ʽ�ѱ����ɶ�Ӧ�� C/C++ �ṹ������ C side ���� Lua �е������ؽ�һ�� C ����Ҳδ�����ɡ������ google protobuf �ٷ����õķ�ʽ���ô������ɵķ�ʽ���������ݵ� schema ������ C++ �࣬�� C++ ���Է��������Щ���ݣ���
���Ҳ�������ô���ӣ��˷ѣ�������ҵ��ѭ�������ܶ࣬����Ҫ��ȡ�����ñ���ȴ�Ƚϵ�һ������ȡ��ͬ����Ŀ�������ԣ���Ȼ��һ��ͨ���ַ��� key ���� Lua ���ñ�������Ϊ��Ч����ֻҪ�� C side ��һ�� cache ģ�黺���¸�Ƶ���ʵ�������Ӧ�þ��ܽ������ƿ����
�Ҳ�����һ���̶���С���ڴ���� hash cache ��key ʹ�ñ���ʱ������ 32bit int ���ú궨�������
���磬�������� name ��һ��Ͷ���һ����
PROTOTYPE(name, string)
����ʾ����һ�����ñ����� "name" ������������ string ��������չ��Ϊһ�� C ����
const char * get_name(struct cache *c, const char &key);
������ʵ��Ҳ���ɺ�չ���ģ�ʵ���ڲ���� name ����һ��Ψһ�� id ��
ps. һ��ʼ���� __LINE__
�����ƴ�ӳ�һ��Ψһ id ��ֻҪ�궨�岻��ͬһ�оͲ����г�ͻ���������֣����ڼ������еı�������֧���� __COUNTER__
����꣬��������������� id ��
��Ҫ�����ֵ���������ͣ�int float bool �� string ��ǰ�������Ͷ��� 32bit �ģ����ַ����� 64 λƽ̨����һ�� 64bit ָ�� const char * ��string ���ͷdz��ټ����� C �����м���������ʵ���������Ҽ���һ�� union �������ϸ��������ͻ�Ƚ��˷ѡ���Ϊ������ÿ�� hash slot ����Ҫ 4 (key) + 8 (value) �ֽڡ����ǵ��� cpu cache �ѺõĻ����һ�� key value ���������һ�������� 64bit ƽ̨�ϣ��ٿ��Ƕ������⣬ÿ�� slot ������Ҫ 16 �ֽ� ��
����һ��˼�����ҷ�����ֻ��Ҫ�������� string ���ʹ�������������� slot �У�ÿ�� slot ���һ��Ϳ����ˡ�������ÿ�� slot ��ֻ��Ҫ 4 + 4 �ֽڼ��ɡ�
��� cache �������㷨�������ģ�
ͨ��
get_xxx
�� C API ���� cache ��������Ϊ xxx ������һ��Ψһ 32bit id �� key ���Դ� key ��ѯ cache ��������У�ֱ��ȡ�� value �����������Ϣ�DZ����������ģ����Կ��Դ� value �� union ��ȡ����ȷ�����͡���� cache miss ����ͨ����������¼�� key string ȥ Lua side ��ѯ����� value ��������̻����Գ���ʱ���ǿ��Խ��ܵġ������ Lua side �Ҳ�����Ӧ����׳� error ��Ӱ�� C cache ���ҵ��Ļ������¶�Ӧ�� C cache ��Ŀ��
����Ӧ����Ŀ���ַ���ʱ�������ھ����������� hash ʱԪ����ż����ŵ� slot �ϣ���Ϊ�ô����������� slot �����Ÿ���Ŀ����Ҫ�˶����� slot ��Ӧ�� key �����¶�Ӧ�� value �����ؽ����Ҫ������ slot �ϵ� value ֵ�ϲ�Ϊһ�� const char * ���ء�
��ʹ��ʱ����Ҫ�� C side �����õ������ñ���� key ȫ��������һ�� .h �ļ��У����������ͳһ���� id ��key �����ǵ�ָ���ַ�������Ӧ Lua �е���״�༶����
�� C �в��ṩһ�ζ�ȡһ�������ñ��� api ��
�� C �в��ܵ������ñ���