home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 March / CMCD0304.ISO / Software / Freeware / Programare / nullsoft / nsis20.exe / Source / ResourceVersionInfo.h < prev    next >
C/C++ Source or Header  |  2003-09-12  |  3KB  |  110 lines

  1. // ResourceVersionInfo.h: interface for the CResourceVersionInfo class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #if !defined(AFX_RESOURCEVERSIONINFO_H__80439ADA_49DA_4623_8DA9_1663FF356E76__INCLUDED_)
  6. #define AFX_RESOURCEVERSIONINFO_H__80439ADA_49DA_4623_8DA9_1663FF356E76__INCLUDED_
  7.  
  8. #if _MSC_VER > 1000
  9. #pragma once
  10. #endif // _MSC_VER > 1000
  11.  
  12. #ifdef NSIS_SUPPORT_VERSION_INFO
  13.  
  14. #include <algorithm>
  15. using namespace std;
  16.  
  17. struct version_string_list {
  18.   int codepage;
  19.   LANGID lang_id;
  20.   int name;
  21.   DefineList *pChildStrings;
  22. };
  23.  
  24. class CVersionStrigList : public SortedStringListND<struct version_string_list>
  25. {
  26. public:
  27.     ~CVersionStrigList()
  28.     {
  29.       struct version_string_list *itr = (struct version_string_list *) gr.get();
  30.       int i = gr.getlen() / sizeof(struct version_string_list);
  31.  
  32.       while (i--)
  33.       {
  34.         delete itr[i].pChildStrings;
  35.       }
  36.     }
  37.  
  38.     int add(LANGID langid, int codepage)
  39.     {
  40.       char Buff[10];
  41.       sprintf(Buff, "%04x", langid);
  42.       int pos = SortedStringListND<struct version_string_list>::add(Buff);
  43.       if (pos == -1) return false;
  44.       ((struct version_string_list*)gr.get())[pos].pChildStrings = new DefineList;
  45.       ((struct version_string_list*)gr.get())[pos].codepage = codepage;
  46.       ((struct version_string_list*)gr.get())[pos].lang_id = langid;
  47.       return pos;
  48.     }
  49.  
  50.     LANGID get_lang(int idx)
  51.     {
  52.       version_string_list *data=(version_string_list *)gr.get();
  53.       return data[idx].lang_id;
  54.     }
  55.  
  56.     int get_codepage(int idx)
  57.     {
  58.       version_string_list *data=(version_string_list *)gr.get();
  59.       return data[idx].codepage;
  60.     }
  61.  
  62.     DefineList* get_strings(int idx)
  63.     {
  64.       version_string_list *data=(version_string_list *)gr.get();
  65.       return data[idx].pChildStrings;
  66.     }
  67.  
  68.     int find(LANGID lang_id, int codepage)
  69.     {
  70.       char Buff[10];
  71.       sprintf(Buff, "%04x", lang_id);
  72.       return SortedStringListND<struct version_string_list>::find(Buff);
  73.     }
  74.  
  75.     int getlen()
  76.     {
  77.       return strings.getlen();
  78.     }
  79.  
  80.     int getnum()
  81.     {
  82.       return gr.getlen()/sizeof(struct version_string_list);
  83.     }
  84. };
  85.  
  86. /////////////////////////////////////////////////////////////////////////////////////////////
  87. class CResourceVersionInfo 
  88. {
  89.     VS_FIXEDFILEINFO m_FixedInfo;
  90.     CVersionStrigList m_ChildStringLists;
  91.     
  92. public:
  93.     CResourceVersionInfo();
  94.     virtual ~CResourceVersionInfo();
  95.     int SetKeyValue(LANGID lang_id, int codepage, char* AKeyName, char* AValue);
  96.     void SetFileFlags(int Value);
  97.     void SetFileVersion(int HighPart, int LowPart);
  98.     void SetProductVersion(int HighPart, int LowPart);
  99.     void ExportToStream(GrowBuf &strm, int Index);
  100.     int GetStringTablesCount();
  101.     LANGID GetLangID(int Index);
  102.     int GetCodePage(int Index);
  103.     char *FindKey(LANGID LangID, int codepage, char *pKeyName);
  104.     //bool IsValidCodePage(WORD codePage );
  105. };
  106.  
  107. #endif
  108.  
  109. #endif // !defined(AFX_RESOURCEVERSIONINFO_H__80439ADA_49DA_4623_8DA9_1663FF356E76__INCLUDED_)
  110.