1 // Copyright (c) 1998-1999 Matra Datavision
2 // Copyright (c) 1999-2014 OPEN CASCADE SAS
4 // This file is part of Open CASCADE Technology software library.
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
17 //---------- All Systems except windowsNT : ----------------------------------
19 #include <OSD_EnvironmentIterator.ixx>
20 #include <OSD_WhoAmI.hxx>
22 //const OSD_WhoAmI Iam = OSD_WEnvironmentIterator;
24 #import <TargetConditionals.h>
25 #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
26 extern char **environ;
28 #include <crt_externs.h>
29 #define environ (*_NSGetEnviron())
32 extern char **environ;
35 OSD_EnvironmentIterator::OSD_EnvironmentIterator(){
39 // For Windows NT compatibility
41 void OSD_EnvironmentIterator::Destroy () {}
43 // Is there another environment variable entry ?
45 Standard_Boolean OSD_EnvironmentIterator::More(){
46 if (environ[myCount+1] == NULL) return(Standard_False);
47 else return(Standard_True);
50 // Find next environment variable
52 void OSD_EnvironmentIterator::Next(){
53 if (More()) myCount++;
57 OSD_Environment OSD_EnvironmentIterator::Values(){
58 TCollection_AsciiString name,value;
60 name = environ[myCount]; // Copy environment variable
62 // Pour DEBUG cout << name << endl;
64 value = &environ[myCount][name.Search("=")]; // Gets its value
65 if (name.Length() != 0){
66 name = name.Token("="); // Gets its name
69 OSD_Environment result(name,value);
74 void OSD_EnvironmentIterator::Reset(){
78 Standard_Boolean OSD_EnvironmentIterator::Failed()const{
79 return( myError.Failed());
82 void OSD_EnvironmentIterator::Perror() {
87 Standard_Integer OSD_EnvironmentIterator::Error()const{
88 return( myError.Error());
93 //------------------------------------------------------------------------
94 //------------------- Windows NT sources for OSD_Directory --------------
95 //------------------------------------------------------------------------
100 #include <OSD_EnvironmentIterator.ixx>
102 OSD_EnvironmentIterator :: OSD_EnvironmentIterator () {
104 myEnv = GetEnvironmentStrings ();
105 myCount = ( Standard_Integer )myEnv;
109 void OSD_EnvironmentIterator :: Destroy () {
111 FreeEnvironmentStrings ( ( LPTSTR )myEnv );
113 } // end OSD_EnvironmentIterator :: Destroy
115 Standard_Boolean OSD_EnvironmentIterator :: More () {
117 return *( ( Standard_CString )myCount ) ? Standard_True : Standard_False;
119 } // end OSD_EnvironmentIterator :: More
121 void OSD_EnvironmentIterator :: Next () {
125 while ( *( Standard_CString )myCount ) ++myCount;
131 } // end OSD_EnvironmentIterator :: Next
133 OSD_Environment OSD_EnvironmentIterator :: Values () {
135 TCollection_AsciiString env, name, value;
137 env = ( Standard_CString )myCount;
139 name = env.Token ( TEXT( "=" ), 1 );
140 value = env.Token ( TEXT( "=" ), 2 );
142 if ( env.Value ( 1 ) == TEXT( '=' ) ) name.Insert ( 1, TEXT( '=' ) );
144 return OSD_Environment ( name, value );
146 } // end OSD_EnvironmentIterator :: Values
148 Standard_Boolean OSD_EnvironmentIterator :: Failed () const {
150 return myError.Failed ();
152 } // end OSD_EnvironmentIterator :: Failed
154 void OSD_EnvironmentIterator :: Reset () {
158 } // end OSD_EnvironmentIterator :: Reset
160 void OSD_EnvironmentIterator :: Perror () {
164 } // end OSD_EnvironmentIterator :: Perror
166 Standard_Integer OSD_EnvironmentIterator :: Error () const {
168 return myError.Error ();
170 } // end OSD_EnvironmentIterator :: Error