diff options
Diffstat (limited to 'private/unimodem/new/mic/ini.h')
-rw-r--r-- | private/unimodem/new/mic/ini.h | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/private/unimodem/new/mic/ini.h b/private/unimodem/new/mic/ini.h new file mode 100644 index 000000000..1c2933b1b --- /dev/null +++ b/private/unimodem/new/mic/ini.h @@ -0,0 +1,210 @@ +// +// Copyright (c) 1996 Microsoft Corporation +// +// +// INI.H -- Header for Classes: +// CIniFile +// CIniFileLine +// CIniFileSection +// CIniFileEntry +// +// History: +// 05/21/96 JosephJ Created +// +// + +class CIniFile; +class CIniFileLine; +class CIniFileSection; +class CIniFileEntry; + +/////////////////////////////////////////////////////////////////////////// +// CLASS CIniFile +/////////////////////////////////////////////////////////////////////////// + +// Represents a windows INI file. + +class CIniFile +{ + +public: + + CIniFile(void); + ~CIniFile(); + + //-------------- Load ------------------ + // Loads the specified file. (Obviously) only one file can be loaded at + // a time. + BOOL Load (const TCHAR rgchPathname[]); + + //-------------- Unload ------------------ + // Unloads a previously loaded file. If there are open sessions to this + // object, Unload returns a handle which will be signalled when all + // sessions are closed. New sessions will not be allowed after this + // function returns. The call should free the handle. + HANDLE Unload (void); + + //-------------- OpenSession ------------------ + // Open a session to this object. The object will not be unloaded until + // this session is closed. 0 indicates failure. + // TODO: unimplemented + const void * OpenSession (void) const {return (const void *) 1;} + + //-------------- CloseSession ------------------ + // Close the specified session to this object. + // TODO: unimplemented + void CloseSession (const void *) const {} + + //-------------- GetFirstLine ------------------ + // Get the first line in the file. Subsequent lines can be got by + // calling Next() on the line object. + const CIniFileLine * GetFirstLine (void) const; + + //-------------- GetFirstSection ------------------ + // Get the first section in the file. + const CIniFileSection * GetFirstSection (void) const; + + //-------------- LookupSection ------------------ + // Lookup a section in the file, given a name. Comparison is case- + // insensitive. + const CIniFileSection * LookupSection (const TCHAR * pchName) const; + + //-------------- Dump ------------------ + // Dump state + void Dump(void) const; + + //-------------- GetName ------------------ + // Returns the file name + const CInfSymbol * GetName (void) const + { + return m_pSymFileName; + } + +protected: + + //-------------- mfn_GetProp --------------- + // Gets the property value associated with this object. + void * mfn_GetProp(void) {return m_pvProp;} + + //-------------- mfn_SetProp --------------- + // Sets the property value associated with this object. + // Returns previously-set value, if any. + void * mfn_SetProp(void *pvNew) + { + void *pv; + mfn_EnterCrit(); + pv = m_pvProp; + m_pvProp = pvNew; + mfn_LeaveCrit(); + return pv; + } + + //-------------- mfn_EnterCrit ------------------ + void mfn_EnterCrit(void) const {m_sync.EnterCrit();} + + + //-------------- mfn_LeaveCrit ------------------ + void mfn_LeaveCrit(void) const {m_sync.LeaveCrit();} + + +private: + + CSync m_sync; + void * m_pvProp; + const CInfSymbol * m_pSymFileName; +}; + + +/////////////////////////////////////////////////////////////////////////// +// CLASS CIniFileLine +/////////////////////////////////////////////////////////////////////////// + +// Represents a single line in an INI file. +// TODO: unimplemented +// Note: Only CIniFile member functions can construct/destruct these +// objects. + +class CIniFileLine +{ + +protected: + + CIniFileLine(void) {} + ~CIniFileLine() {} + +private: + + friend class CIniFile; +}; + + +/////////////////////////////////////////////////////////////////////////// +// CLASS CIniFileSection +/////////////////////////////////////////////////////////////////////////// + +// Represents a single section in an INI file. +// Note: Only CIniFile member functions can construct/destruct these +// objects. + +class CIniFileSection +{ + +public: + + const CInfSymbol * GetName (void) const + { + // TODO + return gSymtab.Lookup(TEXT("Steroids"), TRUE); + } + + CIniFileEntry * GetFirstEntry (void) const; + const CIniFileEntry * LookupEntry (const TCHAR rgchName[]) const; + const CIniFileSection * Next(void) const; + void Release(void) const; +protected: + + CIniFileSection(void) {/*TODO*/} + ~CIniFileSection() {/*TODO*/} + +private: + + friend class CIniFile; +}; + + +/////////////////////////////////////////////////////////////////////////// +// CLASS CIniFileEntry +/////////////////////////////////////////////////////////////////////////// + +// Represents a single entry in a section in an INI file. +// Note: Only CIniFileSection member functions can construct/destruct these +// objects. + +class CIniFileEntry +{ + +public: + + const CInfSymbol * GetLHS (void) const + { + // TODO + return gSymtab.Lookup(TEXT("%bongo101%"), TRUE); + } + const CInfSymbol * GetRHS (void) const; + const CIniFileLine * GetFirstLine (void) const; + BOOL * BecomeNext (void) + { + return FALSE; + } + + void Release(void) const; + +protected: + + CIniFileEntry(void) {/*TODO*/} + ~CIniFileEntry() {/*TODO*/} + +private: + + friend class CIniFileSection; +}; |