/* Chordata - .NET File Format Parser
 * Copyright (C) 2001-2002  Jay Freeman (saurik)
*/

/*
 *        Redistribution and use in source and binary
 * forms, with or without modification, are permitted
 * provided that the following conditions are met:
 * 
 * 1. Redistributions of source code must retain the
 *    above copyright notice, this list of conditions
 *    and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the
 *    above copyright notice, this list of conditions
 *    and the following disclaimer in the documentation
 *    and/or other materials provided with the
 *    distribution.
 * 3. The name of the author may not be used to endorse
 *    or promote products derived from this software
 *    without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#include "stdafx.h"
#include "chordata/Scope.h"

namespace Chordata {

void DIAPEXIS_CALL Scope::CloseEnum(CorEnum hEnum) {
}

HRESULT DIAPEXIS_CALL Scope::CountEnum(CorEnum hEnum, uint32_t *pulCount) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::ResetEnum(CorEnum hEnum, uint32_t ulPos) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumTypeDefs(CorEnum *phEnum, Tokens::mdTypeDef rTypeDefs[], uint32_t cMax, uint32_t *pcTypeDefs) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumInterfaceImpls(CorEnum *phEnum, Tokens::mdTypeDef td, Tokens::mdInterfaceImpl rImpls[], uint32_t cMax, uint32_t *pcImpls) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumTypeRefs(CorEnum *phEnum, Tokens::mdTypeRef rTypeRefs[], uint32_t cMax, uint32_t *pcTypeRefs) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::FindTypeDefByName(const wchar_t *szTypeDef, Token tkEnclosingClass, Tokens::mdTypeDef *ptd) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetScopeProps(wchar_t *szName, uint32_t cchName, uint32_t *pchName, GUID *pmvid) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetModuleFromScope(Tokens::mdModule *pmd) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetTypeDefProps(Tokens::mdTypeDef td, wchar_t *szTypeDef, uint32_t cchTypeDef, uint32_t *pchTypeDef, uint32_t *pdwTypeDefFlags, Token *ptkExtends) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetInterfaceImplProps(Tokens::mdInterfaceImpl iiImpl, Tokens::mdTypeDef *pClass, Token *ptkIface) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetTypeRefProps(Tokens::mdTypeRef tr, Token *ptkResolutionScope, wchar_t *szName, uint32_t cchName, uint32_t *pchName) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::ResolveTypeRef(Tokens::mdTypeRef tr, REFIID riid, Diapexis::Unknown **ppIScope, Tokens::mdTypeDef *ptd) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumMembers(CorEnum *phEnum, Tokens::mdTypeDef cl, Token rMembers[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumMembersWithName(CorEnum *phEnum, Tokens::mdTypeDef cl, const wchar_t *szName, Token rMembers[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumMethods(CorEnum *phEnum, Tokens::mdTypeDef cl, Tokens::mdMethodDef rMethods[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumMethodsWithName(CorEnum *phEnum, Tokens::mdTypeDef cl, const wchar_t *szName, Tokens::mdMethodDef rMethods[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumFields(CorEnum *phEnum, Tokens::mdTypeDef cl, Tokens::mdFieldDef  rFields[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumFieldsWithName(CorEnum *phEnum, Tokens::mdTypeDef cl, const wchar_t *szName, Tokens::mdFieldDef rFields[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumParams(CorEnum *phEnum, Tokens::mdMethodDef mb, Tokens::mdParamDef rParams[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumMemberRefs(CorEnum *phEnum, Token tkParent, Tokens::mdMemberRef rMemberRefs[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumMethodImpls(CorEnum *phEnum, Tokens::mdTypeDef td, Token rMethodBody[], Token rMethodDecl[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumPermissionSets(CorEnum *phEnum, Token tk, uint32_t dwActions, Tokens::mdPermission rPermission[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::FindMember(Tokens::mdTypeDef td, const wchar_t *name, const Signature *pvSigBlob, uint32_t cbSigBlob, Token *pmb) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::FindMethod(Tokens::mdTypeDef td, const wchar_t *name, const Signature *pvSigBlob, uint32_t cbSigBlob, Tokens::mdMethodDef *pmb) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::FindField(Tokens::mdTypeDef td, const wchar_t *name, const Signature *pvSigBlob, uint32_t cbSigBlob, Tokens::mdFieldDef *pmb) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::FindMemberRef(Tokens::mdTypeRef td, const wchar_t *szName, const Signature *pvSigBlob, uint32_t cbSigBlob, Tokens::mdMemberRef *pmr) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetMethodProps(Tokens::mdMethodDef mb, Tokens::mdTypeDef *pClass, wchar_t *szMethod, uint32_t cchMethod, uint32_t *pchMethod, uint32_t *pdwAttr, const Signature **ppvSigBlob, uint32_t *pcbSigBlob, uint32_t *pulCodeRVA, uint32_t *pdwImplFlags) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetMemberRefProps(Tokens::mdMemberRef mr, Token *ptk, wchar_t *szMember, uint32_t cchMember, uint32_t *pchMember, const Signature **ppvSigBlob, uint32_t *pbSig) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumProperties(CorEnum *phEnum, Tokens::mdTypeDef td, Tokens::mdProperty rProperties[], uint32_t cMax, uint32_t *pcProperties) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumEvents(CorEnum *phEnum, Tokens::mdTypeDef td, Tokens::mdEvent rEvents[], uint32_t cMax, uint32_t *pcEvents) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetEventProps(Tokens::mdEvent ev, Tokens::mdTypeDef *pClass, wcstr_t szEvent, uint32_t cchEvent, uint32_t *pchEvent, uint32_t *pdwEventFlags, Token *ptkEventType, Tokens::mdMethodDef *pmdAddOn, Tokens::mdMethodDef *pmdRemoveOn, Tokens::mdMethodDef *pmdFire, Tokens::mdMethodDef rmdOtherMethod[], uint32_t cMax, uint32_t *pcOtherMethod) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumMethodSemantics(CorEnum *phEnum, Tokens::mdMethodDef mb, Token rEventProp[], uint32_t cMax, uint32_t *pcEventProp) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetMethodSemantics(Tokens::mdMethodDef mb, Token tkEventProp, uint32_t *pdwSemanticsFlags) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetClassLayout(Tokens::mdTypeDef td, uint32_t *pdwPackSize, FieldOffset rFieldOffset[], uint32_t cMax, uint32_t *pcFieldOffset, uint32_t *pulClassSize) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetFieldMarshal(Token tk, const Signature **ppvNativeType, uint32_t *pcbNativeType) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetRVA(Token tk, uint32_t *pulCodeRVA, uint32_t *pdwImplFlags) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetPermissionSetProps(Tokens::mdPermission pm, uint32_t *pdwAction, void const **ppvPermission, uint32_t *pcbPermission) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetSigFromToken(Tokens::mdSignature mdSig, const Signature **ppvSig, uint32_t *pcbSig) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetModuleRefProps(Tokens::mdModuleRef mur, wchar_t *szName, uint32_t cchName, uint32_t *pchName) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumModuleRefs(CorEnum *phEnum, Tokens::mdModuleRef rModuleRefs[], uint32_t cmax, uint32_t *pcModuleRefs) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetTypeSpecFromToken(Tokens::mdTypeSpec typespec, const Signature **ppvSig, uint32_t *pcbSig) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetNameFromToken(Token tk, cstr_t *pszUtf8NamePtr) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumUnresolvedMethods(CorEnum *phEnum, Token rMethods[], uint32_t cMax, uint32_t *pcTokens) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetUserString(Tokens::mdString stk, wchar_t *szString, uint32_t cchString, uint32_t *pchString) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetPinvokeMap(Token tk, uint32_t *pdwMappingFlags, wchar_t *szImportName, uint32_t cchImportName, uint32_t *pchImportName, Tokens::mdModuleRef *pmrImportDLL) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumSignatures(CorEnum *phEnum, Tokens::mdSignature rSignatures[], uint32_t cmax, uint32_t *pcSignatures) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumTypeSpecs(CorEnum *phEnum, Tokens::mdTypeSpec rTypeSpecs[], uint32_t cmax, uint32_t *pcTypeSpecs) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumUserStrings(CorEnum *phEnum, Tokens::mdString rStrings[], uint32_t cmax, uint32_t *pcStrings) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetParamForMethodIndex(Tokens::mdMethodDef md, uint32_t ulParamSeq, Tokens::mdParamDef *ppd) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::EnumCustomAttributes(CorEnum *phEnum, Token tk, Token tkType, Tokens::mdCustomAttribute rCustomAttributes[], uint32_t cMax, uint32_t *pcCustomAttributes) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetCustomAttributeProps(Tokens::mdCustomAttribute cv, Token *ptkObj, Token *ptkType, void const **ppBlob, uint32_t *pcbSize) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::FindTypeRef(Token tkResolutionScope, const wchar_t *szName, Tokens::mdTypeRef *ptr) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetMemberProps(Token mb, Tokens::mdTypeDef *pClass, wchar_t *szMember, uint32_t cchMember, uint32_t *pchMember, uint32_t *pdwAttr, const Signature **ppvSigBlob, uint32_t *pcbSigBlob, uint32_t *pulCodeRVA, uint32_t *pdwImplFlags, uint32_t *pdwCPlusTypeFlag, void const **ppValue, uint32_t *pcbValue) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetFieldProps(Tokens::mdFieldDef mb, Tokens::mdTypeDef *pClass, wchar_t *szField, uint32_t cchField, uint32_t *pchField, uint32_t *pdwAttr, const Signature **ppvSigBlob, uint32_t *pcbSigBlob, uint32_t *pdwCPlusTypeFlag, void const **ppValue, uint32_t *pcbValue) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetPropertyProps(Tokens::mdProperty prop, Tokens::mdTypeDef *pClass, wchar_t *szProperty, uint32_t cchProperty, uint32_t *pchProperty, uint32_t *pdwPropFlags, const Signature **ppvSig, uint32_t *pbSig, uint32_t *pdwCPlusTypeFlag, void const **ppDefaultValue, uint32_t *pcbDefaultValue, Tokens::mdMethodDef *pmdSetter, Tokens::mdMethodDef *pmdGetter, Tokens::mdMethodDef rmdOtherMethod[], uint32_t cMax, uint32_t *pcOtherMethod) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetParamProps(Tokens::mdParamDef tk, Tokens::mdMethodDef *pmd, uint32_t *pulSequence, wchar_t *szName, uint32_t cchName, uint32_t *pchName, uint32_t *pdwAttr, uint32_t *pdwCPlusTypeFlag, void const **ppValue, uint32_t *pcbValue) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetCustomAttributeByName(Token tkObj, const wchar_t *szName, const void **ppData, uint32_t *pcbData) {
	return S_OK;
}

BOOL DIAPEXIS_CALL Scope::IsValidToken(Token tk) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetNestedClassProps(Tokens::mdTypeDef tdNestedClass, Tokens::mdTypeDef *ptdEnclosingClass) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::GetNativeCallConvFromSig(void const *pvSig, uint32_t cbSig, uint32_t *pCallConv) {
	return S_OK;
}

HRESULT DIAPEXIS_CALL Scope::IsGlobal(Token pd, int32_t *pbGlobal) {
	return S_OK;
}

}