Changeset 355 in dev for trunk/abdev/BasicCompiler_Common/src/Class.cpp
- Timestamp:
- Nov 2, 2007, 2:53:56 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/src/Class.cpp
r353 r355 1294 1294 compiler.GetNamespaceSupporter().GetLivingNamespaceScopes() = objClass.GetNamespaceScopes(); 1295 1295 1296 DWORD dwFlags = 0; 1297 if( objClass.GetName() == "_System_TypeBase" ) 1298 { 1299 // _System_TypeBaseクラスはグローバル、スタティック領域を初期化するためのクラスなのでここでの初期化は除外する 1300 dwFlags |= DIMFLAG_NONCALL_CONSTRACTOR; 1301 } 1302 1296 1303 int i=0; 1297 1304 BOOST_FOREACH( CMember *member, objClass.GetStaticMembers() ){ … … 1304 1311 member->GetInitializeExpression().c_str(), 1305 1312 member->GetConstructParameter().c_str(), 1306 0);1313 dwFlags); 1307 1314 1308 1315 i++; … … 1892 1899 // 未使用のクラスは無視する 1893 1900 continue; 1894 } 1901 } 1895 1902 1896 1903 char referenceOffsetsBuffer[1024] = ""; … … 1911 1918 1912 1919 sprintf( temporary 1913 , "Add(%c%c_System_TypeForClass (\"%s\",\"%s\",[%s],%d))"1920 , "Add(%c%c_System_TypeForClass[strNamespace=\"%s\",name=\"%s\",fullName=\"%s\",referenceOffsets=[%s],numOfReference=%d])" 1914 1921 , 1 1915 , ESC_NEW 1916 , "" // 名前空間 (TODO: 実装) 1917 , objClass.GetName().c_str() // クラス名 1918 , referenceOffsetsBuffer // 参照メンバオフセット配列 1919 , numOfReference // 参照メンバの個数 1922 , ESC_SYSTEM_STATIC_NEW 1923 , objClass.GetNamespaceScopes().ToString().c_str() // 名前空間 1924 , objClass.GetName().c_str() // クラス名 1925 , objClass.GetFullName().c_str() // フルネーム 1926 , referenceOffsetsBuffer // 参照メンバオフセット配列 1927 , numOfReference // 参照メンバの個数 1920 1928 ); 1921 1929 1922 1930 // コンパイル 1923 1931 ChangeOpcode( temporary ); 1924 } 1925 1926 1932 1933 objClass.SetTypeInfoDataTableOffset( 1934 compiler.GetObjectModule().dataTable.GetLastMadeConstObjectDataTableOffset() 1935 ); 1936 } 1937 } 1938 void Classes::Compile_System_InitializeUserTypesForBaseType() 1939 { 1940 extern int cp; 1941 cp = -1; 1927 1942 //////////////////////////////////////////////////////////////////// 1928 1943 // 基底クラスを登録 1929 1944 //////////////////////////////////////////////////////////////////// 1930 1945 1946 char temporary[VN_SIZE]; 1931 1947 sprintf(temporary, "%c%ctempType=Nothing%c%cTypeBaseImpl" 1932 1948 , HIBYTE( COM_DIM ) … … 1950 1966 if( objClass.HasSuperClass() ){ 1951 1967 sprintf( temporary 1952 , "tempType=Search(\"%s\",\"%s\")" 1953 , "" // 名前空間 (TODO: 実装) 1954 , objClass.GetName().c_str() // クラス名 1968 , "tempType=Search(\"%s\")" 1969 , objClass.GetFullName().c_str() 1955 1970 ); 1956 1971 … … 1959 1974 1960 1975 sprintf( temporary 1961 , "tempType.SetBaseType(Search(\"%s\",\"%s\"))" 1962 , "" // 名前空間 (TODO: 実装) 1963 , objClass.GetSuperClass().GetName().c_str() // 基底クラス名 1976 , "tempType.SetBaseType(Search(\"%s\"))" 1977 , objClass.GetSuperClass().GetFullName().c_str() 1964 1978 ); 1965 1979
Note:
See TracChangeset
for help on using the changeset viewer.