Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / System / Reflection / Emit / Opcode.cs / 1 / Opcode.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
namespace System.Reflection.Emit {
using System;
using System.Security.Permissions;
[System.Runtime.InteropServices.ComVisible(true)]
public struct OpCode
{
internal String m_stringname;
internal StackBehaviour m_pop;
internal StackBehaviour m_push;
internal OperandType m_operand;
internal OpCodeType m_type;
internal int m_size;
internal byte m_s1;
internal byte m_s2;
internal FlowControl m_ctrl;
// Specifies whether the current instructions causes the control flow to
// change unconditionally.
internal bool m_endsUncondJmpBlk;
// Specifies the stack change that the current instruction causes not
// taking into account the operand dependant stack changes.
internal int m_stackChange;
internal OpCode(String stringname, StackBehaviour pop, StackBehaviour push, OperandType operand, OpCodeType type, int size, byte s1, byte s2, FlowControl ctrl, bool endsjmpblk, int stack)
{
m_stringname = stringname;
m_pop = pop;
m_push = push;
m_operand = operand;
m_type = type;
m_size = size;
m_s1 = s1;
m_s2 = s2;
m_ctrl = ctrl;
m_endsUncondJmpBlk = endsjmpblk;
m_stackChange = stack;
}
internal bool EndsUncondJmpBlk()
{
return m_endsUncondJmpBlk;
}
internal int StackChange()
{
return m_stackChange;
}
public OperandType OperandType
{
get
{
return (m_operand);
}
}
public FlowControl FlowControl
{
get
{
return (m_ctrl);
}
}
public OpCodeType OpCodeType
{
get
{
return (m_type);
}
}
public StackBehaviour StackBehaviourPop
{
get
{
return (m_pop);
}
}
public StackBehaviour StackBehaviourPush
{
get
{
return (m_push);
}
}
public int Size
{
get
{
return (m_size);
}
}
public short Value
{
get
{
if (m_size == 2)
return (short) (m_s1 << 8 | m_s2);
return (short) m_s2;
}
}
public String Name
{
get
{
return m_stringname;
}
}
public override bool Equals(Object obj)
{
if (obj is OpCode)
return Equals((OpCode)obj);
else
return false;
}
public bool Equals(OpCode obj)
{
return obj.m_s1 == m_s1 && obj.m_s2 == m_s2;
}
public static bool operator ==(OpCode a, OpCode b)
{
return a.Equals(b);
}
public static bool operator !=(OpCode a, OpCode b)
{
return !(a == b);
}
public override int GetHashCode()
{
return this.m_stringname.GetHashCode();
}
public override String ToString()
{
return m_stringname;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
namespace System.Reflection.Emit {
using System;
using System.Security.Permissions;
[System.Runtime.InteropServices.ComVisible(true)]
public struct OpCode
{
internal String m_stringname;
internal StackBehaviour m_pop;
internal StackBehaviour m_push;
internal OperandType m_operand;
internal OpCodeType m_type;
internal int m_size;
internal byte m_s1;
internal byte m_s2;
internal FlowControl m_ctrl;
// Specifies whether the current instructions causes the control flow to
// change unconditionally.
internal bool m_endsUncondJmpBlk;
// Specifies the stack change that the current instruction causes not
// taking into account the operand dependant stack changes.
internal int m_stackChange;
internal OpCode(String stringname, StackBehaviour pop, StackBehaviour push, OperandType operand, OpCodeType type, int size, byte s1, byte s2, FlowControl ctrl, bool endsjmpblk, int stack)
{
m_stringname = stringname;
m_pop = pop;
m_push = push;
m_operand = operand;
m_type = type;
m_size = size;
m_s1 = s1;
m_s2 = s2;
m_ctrl = ctrl;
m_endsUncondJmpBlk = endsjmpblk;
m_stackChange = stack;
}
internal bool EndsUncondJmpBlk()
{
return m_endsUncondJmpBlk;
}
internal int StackChange()
{
return m_stackChange;
}
public OperandType OperandType
{
get
{
return (m_operand);
}
}
public FlowControl FlowControl
{
get
{
return (m_ctrl);
}
}
public OpCodeType OpCodeType
{
get
{
return (m_type);
}
}
public StackBehaviour StackBehaviourPop
{
get
{
return (m_pop);
}
}
public StackBehaviour StackBehaviourPush
{
get
{
return (m_push);
}
}
public int Size
{
get
{
return (m_size);
}
}
public short Value
{
get
{
if (m_size == 2)
return (short) (m_s1 << 8 | m_s2);
return (short) m_s2;
}
}
public String Name
{
get
{
return m_stringname;
}
}
public override bool Equals(Object obj)
{
if (obj is OpCode)
return Equals((OpCode)obj);
else
return false;
}
public bool Equals(OpCode obj)
{
return obj.m_s1 == m_s1 && obj.m_s2 == m_s2;
}
public static bool operator ==(OpCode a, OpCode b)
{
return a.Equals(b);
}
public static bool operator !=(OpCode a, OpCode b)
{
return !(a == b);
}
public override int GetHashCode()
{
return this.m_stringname.GetHashCode();
}
public override String ToString()
{
return m_stringname;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MaterialGroup.cs
- XmlBinaryReaderSession.cs
- WebPartEditorOkVerb.cs
- X509Utils.cs
- storepermission.cs
- HtmlFormAdapter.cs
- MetadataCache.cs
- FamilyTypefaceCollection.cs
- TemplatePagerField.cs
- GeneralTransform3DTo2DTo3D.cs
- FilterElement.cs
- PackWebRequest.cs
- ReliabilityContractAttribute.cs
- EncoderReplacementFallback.cs
- COSERVERINFO.cs
- TextFragmentEngine.cs
- ChooseAction.cs
- TimeSpanParse.cs
- Brush.cs
- BindingCompleteEventArgs.cs
- LocalClientSecuritySettings.cs
- CatalogPartChrome.cs
- DecimalAnimationUsingKeyFrames.cs
- StylusCaptureWithinProperty.cs
- ArgumentException.cs
- SpecialFolderEnumConverter.cs
- SqlCaseSimplifier.cs
- StackOverflowException.cs
- UpDownEvent.cs
- VariableQuery.cs
- Version.cs
- BitmapEncoder.cs
- ValidationSummary.cs
- WindowPattern.cs
- SchemaObjectWriter.cs
- ScopelessEnumAttribute.cs
- CmsInterop.cs
- BinaryNode.cs
- LayoutInformation.cs
- MemoryMappedFile.cs
- SqlGatherConsumedAliases.cs
- InkCanvasInnerCanvas.cs
- TransformGroup.cs
- DummyDataSource.cs
- DataGridCommandEventArgs.cs
- PeerName.cs
- DBConnectionString.cs
- XmlDocumentViewSchema.cs
- ReferenceSchema.cs
- TextBoxDesigner.cs
- OrderedDictionaryStateHelper.cs
- CompositeDataBoundControl.cs
- MachineKeyValidationConverter.cs
- SystemInfo.cs
- DataGridViewCellEventArgs.cs
- EmptyEnumerable.cs
- SID.cs
- BoundColumn.cs
- Int16Storage.cs
- FormViewUpdatedEventArgs.cs
- Region.cs
- AtomicFile.cs
- DataGridViewCellPaintingEventArgs.cs
- PartialCachingAttribute.cs
- BufferedGraphicsContext.cs
- ItemContainerProviderWrapper.cs
- InputQueue.cs
- IndividualDeviceConfig.cs
- SocketPermission.cs
- BitmapEffectDrawing.cs
- DataTrigger.cs
- FileDialogCustomPlaces.cs
- XmlILModule.cs
- Documentation.cs
- AtomMaterializer.cs
- PointKeyFrameCollection.cs
- SqlNotificationRequest.cs
- DataGridCommandEventArgs.cs
- RangeBase.cs
- StreamUpdate.cs
- CrossAppDomainChannel.cs
- EpmCustomContentDeSerializer.cs
- TextAutomationPeer.cs
- BamlBinaryReader.cs
- SoapObjectReader.cs
- SystemBrushes.cs
- TransactionFlowAttribute.cs
- GuidConverter.cs
- ConnectionPoolManager.cs
- CookieProtection.cs
- ScrollViewerAutomationPeer.cs
- OrElse.cs
- DataGridColumnFloatingHeader.cs
- CommentEmitter.cs
- RuleInfoComparer.cs
- FloaterParagraph.cs
- DllNotFoundException.cs
- WindowsProgressbar.cs
- Margins.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs